以前、さくらのVPSでSOY CMSを動かした時のメモでさくらのVPSにUbuntuを入れて、SOY CMSの環境を構築した記事を投稿したけれど、

古くなったので改めてまとめることにする。


最終的な環境

さくらのVPS 4G

VPS(仮想専用サーバー)|さくらインターネット - 無料お試し実施中

Ubuntu 18.04(16.04を入れた直後に速攻でアップグレード)

Apache2.4.38

PHP 7.3.3.1 FastCGI

MySQL 5.7.25


今回の話を進める前に読んでおくと良い記事

当サイトをHTTP/2対応して表示の爆速化してみた

Apache2.4.27の標準設定ではHTTP/2が使用できなくなったのでその対応


UbuntuのインストールはさくらのVPSを借りて、各種設定のOSインストールでカスタムOSを選び、Ubuntuに指定して実行すれば後は何もする必要がない。


Ubuntuのセットアップが終わったら、

端末を開いて、sshでリモートアクセスします。


ssh ユーザ名@IPv4のアドレス

後は下記の手順を順に実行する。


#さくらVPSでは標準で22のみ許可の設定が追加されたため、
#先にファイアーウォールの設定を削除しておく
sudo mv /etc/iptables/iptables.rules /var/tmp
sudo reboot

#標準のファイアーウォールの設定削除で再起動をするので、再びリモート接続する

#SSHのポート番号を22から他の番号へ変更(不正ログイン対策)
#sshdの設定ファイルのバックアップ
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.old

#sshdの設定ファイルを開く
sudo nano /etc/ssh/sshd_config

#sshのポートを22から12345へ変更。ファイルを保存(port番号は使用していない番号であれば何でも良いです)
Port 22 → Port 12345

#rootのログインを禁止
#(他のサーバではroot以外のアカウントがいないので、必ずアカウントを作成して、そのアカウントにsudorを設定してから行ってください)
PermitRootLogin withoout-password → PermitRootLogin no

#設定ファイルの保存

#設定ファイルの記述チェック 何も表示されなければOK
sudo sshd -t

#sshの設定を反映
sudo service ssh restart

#サーバをログアウトする
exit

#ターミナルエミュレータを開く(IPアドレス)
ssh username@***.***.***.***
(Poderosaの場合はGUIで指定して接続)

#ssh: connect to host ***.***.***.*** port 22: Connection refusedが表示されればOK

#再度ターミナルエミュレータで再度ログインを試みる
ssh -p 12345 username@***.***.***.***

#一応updateしておく
sudo apt update
sudo apt upgrade

#日本語を使用可にする
sudo apt install language-pack-ja-base language-pack-ja ibus-mozc
sudo localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"

#サーバの時刻を日本(東京)にする
sudo dpkg-reconfigure tzdata

#設定画面が表示されたら、Asia→Tokyoの順に指定する

#ファイアーウォールの設定 ssh(22もしくは上で修正した番号:ここでは12345)、http(80)とhttps(443)のみ許可にする
#ufwはiptablesを簡単に設定できるツール

sudo ufw default deny
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 12345

#ufwを起動
sudo ufw enable

#yをクリック

sudo ufw status

#Status: activeが表示されることと、allowで指定したポートのみが表示されていることを確認

#サーバを再起動する
sudo reboot

#再度ターミナルエミュレータでログインできることを確認する
ssh -p 12345 username@***.***.***.***

これで言語やファイアウォールの設定は終了。




続いてWebサーバを立ち上げる。


#Apache2.4のインストール
sudo apt install software-properties-common
sudo add-apt-repository -y ppa:ondrej/apache2
sudo apt install apache2

#リポジトリから最新のPHPを取得する
sudo apt install apt-file
sudo add-apt-repository ppa:ondrej/php
sudo apt install php7.3

#バージョンの確認
php -v

#Apache2.4でphp7を実行できるようにする
sudo apt install php7.3-curl php7.3-mysql php7.3-sqlite3 php7.3-mbstring php7.3-gd php7.3-xml php7.3-zip php7.3-apcu

#HTTP/2を使用するため、PHPのFastCGIを利用する SSLを利用した時、HTTP/2が利用できるようになるため
sudo a2dismod php7.3
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event

#FastCGIを有効にする
sudo apt install php7.3-fpm php7.3-cgi
sudo a2enconf php7.3-fpm

sudo a2enmod proxy_fcgi

#Apache2の起動
sudo /etc/init.d/apache2 start

#MPMの確認 MPMがpreforkではなくeventになっていることを確認する
apachectl -V

#/var/www/html以下がルートになるので、そこにファイルを設置
#.htaccessを利用できるようにする
sudo nano /etc/apache2/apache2.conf

#AllowOverride NoneをAllに変更する
<directory /var/www>
        Options Indexes FollowSymLinks
        AllowOverride None → All
        Require all granted
</directory>

#apache2のmod_rewriteモジュールをアクティブ
sudo a2enmod rewrite

#Apache2の再起動
sudo /etc/init.d/apache2 restart

#MySQLのインストール
#2019年11月20日追記 MySQL 8系をインストールしたい場合は今回の記事の最後に認証方法に関する重要な記事があります。
sudo apt install mysql-server
#MySQL 8系をインストールする場合
#sudo apt install mysql-server-8.0
sudo service mysql status

#rootのパスワードを生成
sudo mysql_secure_installation

#Press y|Y for Yes, any other key for No:には「y」を選択
#Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 「0」を選択

#パスワードを決める
#New password:
#Re-enter new password:

#あとはすべて「y」

#先程決めたパスワードでMySQLにログインできるか確認する。
#コマンド実行時にsudoが必要になったらしい
sudo mysql -u root -p

#ログインが確認できたら、一旦MySQLから出る
mysql> exit;

#MySQLの文字コードを設定
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

#[mysqld]の下の行に下記の2行を追加
character-set-server = utf8
default_password_lifetime = 0

#MySQLを再起動
sudo /etc/init.d/mysql restart

#再びログイン
sudo mysql -u root -p

#character_set_filesystem以外がutf8
mysql> show variables like '%char%';

#OSを再起動させた後にapacheやmysqlが自動実行されるようにする
wget http://archive.ubuntu.com/ubuntu/pool/universe/s/sysv-rc-conf/sysv-rc-conf_0.99.orig.tar.gz
tar zxvf sysv-rc-conf_0.99.orig.tar.gz
cd sysv-rc-conf-0.99

#sysv-rc-confを入れる為にmakeが必要
sudo apt install make
sudo make
sudo make install
sudo apt install libcurses-ui-perl libterm-readkey-perl libcurses-perl

#apacheとmysqlをsysv-rc-confに登録する
sudo sysv-rc-conf apache2 on
sudo sysv-rc-conf mysql on

これでUbuntu18.04でSOY CMSを動かす環境ができた。


以後は必要に応じて

さくらのVPS + Apache2.4のサーバでSSL対応してみた

当サイトをHTTP/2対応して表示の爆速化してみた


/** 2019年11月1日追記 **/

SOY CMSやSOY Shop側でMySQLを接続する場合は、MySQLに直接接続する際のsudoをなしでログインできるようにする必要があります。

MySQLにログインし、

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '{PW}';
mysql> FLUSH PRIVILEGES;

※今回はユーザをrootの場合で記述していて、{PW}にはrootのパスワードを入力します。

を実行します。


/** 2019年11月20日追記 **/

MySQL 8.0以降を利用する場合は、認証方法を変更する必要があります。

SOY CMSでMySQL8系に接続できない時の対処