新たに仮想サーバーを準備してクリーンインストールを実行した。インストール自体は特に迷うことなく、途中で固定 IP を設定したり ssh を有効にしたくらいでサクッと終了。手順は次のサイトの 18.04 LTS Server と殆ど同じ。
以下はインストール直後に行ったこと。
基本的にサーバー PC にローカルでログインすることはなく、常に ssh でリモートログインしている。
とりあえずダラダラと必要なソフトをインストールして、個別の設定は後回し。
諸々インストール
日本語ロケール、日本語マニュアルの追加
$ sudo apt install -y language-pack-ja
$ sudo localectl set-locale 'LANG=ja_JP.utf8'
$ sudo apt install -y manpages-ja manpages-ja-dev
$ sudo timedatectl set-timezone Asia/Tokyo
ログインし直して確認。
$ locale
LANG=ja_JP.utf8
LANGUAGE=
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=
Web Server , FTP Server のインストール
Apache と ProFTPD をインストール。ついでにドキュメントもインストール。
$ sudo apt install -y apache2 apache2-doc proftpd-basic proftpd-doc
MySQL8.0 のインストール
$ sudo apt install -y mysql-server
$ sudo service mysql start
PHP 関係のインストール
$ sudo apt install -y php7.4 php7.4-fpm php7.4-mysql
phpMyAdmin のインストール
何かと便利。サーバーの種類は「apache2」、「dbconfig-commonで設定しますか?」は「yes」 、ユーザー「phpmyadmin」のパスワードを聞かれるので2回入力する。
$ sudo apt install -y phpmyadmin
もしも MySQL をインストールする前に phpMyAdmin をインストールしてしまった場合は次を実行して再構築する。
$ sudo dpkg-reconfigure phpmyadmin
ユーザー phpmyadmin への権限付与
権限付与以外の全ての権限を付与する場合。
$ sudo mysql
まだユーザー phpmyadmin を追加していない場合はここから。
mysql> create user 'phpmyadmin'@'localhost' identified by 'パスワード';
既にユーザー phpmyadmin を追加している場合はここから。
mysql> grant all on *.* to 'phpmyadmin'@'localhost' with grant option;
mysql> flush privileges;
phpmyadmin.conf の編集
phpmyadmin.conf に2行追加する。
併せてインストール直後は phpMyAdmin のログイン画面が丸見えなので、/usr/share/phpmyadmin/ に .htaccess を設置して、Basic認証によるアクセス制限をかけておく。
$ sudo vi /etc/apache2/conf-enabled/phpmyadmin.conf
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
# 以下の2行を追加
AllowOverride All
Require all granted
$ sudo service apache2 restart
SSL/TLS サーバー証明書関係のインストール
リバースプロキシの Nginx を設置する場合は不要。
$ sudo apt install -y certbot python3-certbot-apache
RewriteEngine
$ sudo a2enmod rewrite
諸々設定
ufw
ファイアーウォール ufw の有効化。この後も必要なポートを都度、追加する。
sudo ufw allow 21/tcp
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 49152:65534/tcp
$ sudo ufw enable
Apache の設定ファイル
VirtualHost の設定
旧仮想サーバー(192.168.1.4)から scp でコピーする。もちろん新規に作っても良い。
新サーバーにログインして、このサイトの場合は設定ファイル " jisaba.life.conf "をコピーして、リダイレクトの設定を削除すればOK。あとで SSL 化するときに jisaba.life-le-ssl.conf が新規に作成される( certbot 便利)。
リバースプロキシのバックエンドとして設置する場合は設定ファイルに “Setenv HTTPS ON” を追加(SNI化しない場合)。
# コピーする
$ cd /etc/apache2/sites-available/
$ sudo scp hoge@192.168.1.3:/etc/apache2/sites-available/test.jisaba.life.conf ./
# 編集する
$ sudo vi test.jisaba.life.conf
<VirtualHost *:80>
ServerName test.jisaba.life
DocumentRoot /home/hoge/public_html/test.jisaba.life
ErrorLog /var/log/apache2/virtual.host.error.log
CustomLog /var/log/apache2/virtual.host.access.log combined
LogLevel warn
<Directory /home/hoge/public_html/test.jisaba.life>
Options FollowSymlinks Includes
AllowOverride All
AddType text/html .html
Require all granted
</Directory>
</VirtualHost>
# Apacheを再起動する
$ sudo service apache2 restart
mod_ssl の有効化(リバースプロキシのバックエンドなら不要)
$ sudo a2enmod ssl
$ sudo service apache2 restart
Apache Manual の有効化
$ sudo a2enconf apache2-doc
$ sudo service apache2 restart
phpMyAdmin のエラーメッセージを消す
下の画像のようにエラーメッセージが出ているから対策する。
FastCGIを有効化したことでパーミッションの設定を変更する必要がある。
出ているメッセージは2つ。
- 設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。
- $cfg['TempDir'] (/var/lib/phpmyadmin/tmp/) にアクセスできません。phpMyAdmin はテンプレートをキャッシュすることができないため、低速になります。
対策は、 /var/lib/ で phpmyadmin のパーミッションを変更すればよい。
$ sudo chown -R hoge:hoge ./phpmyadmin
ProFTPD
運用中の仮想マシンからデータや設定を引っ越しして WordPress をそっくり引き継ぐ。なので、まずは ProFTPD を設定する。
DefaultRoot はレンタルサーバーと同じようにユーザーのホームディレクトリにした。この中の public_html に公開ドキュメントを置く。
SSL/TLS サーバー証明書を使う FTPS(FTP over TLS) を有効化している。が、実際のところ LAN 内での運用に限定している。
$ sudo vi /etc/proftpd/proftpd.conf
※変更したのはこれくらい
ServerName "Ubuntu Server"
DefaultRoot ~/
PassivePorts 49152 65534
Umask 072 072
# tsl を有効化する場合
Include /etc/proftpd/tls.conf<s>
</s>
$ sudo vi /etc/proftpd/tls.conf
※証明書の保存先は適宜変更すること
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
TLSRSACertificateFile /etc/letsencrypt/live/test.jisaba.life/fullchain.pem
TLSRSACertificateKeyFile /etc/letsencrypt/live/test.jisaba.life/privkey.pem
TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient off
</IfModule>
$ sudo service proftpd restart
FPM/FastCGI の設定
www.conf を編集する。
$ cd /etc/php/7.4/fpm/pool.d
$ sudo vi www.conf
# ここだけ編集
user = hoge
group = hoge
php.ini を編集する。FastCGI を使用する場合は、~/public_html/ に .user.ini を設置しても良い。
$ cd /etc/php/7.4/fpm/
$ sudo vi php.ini
# アップロードファイルサイズやメモリ上限などなど適宜編集
# .user.ini の場合は次を記述して適宜変更する。
;メモリ使用量の上限
memory_limit = 500M
;POSTデータの最大サイズ ※合計サイズ
post_max_size = 100M
;1ファイルあたりの最大アップロードサイズ
upload_max_filesize = 500M
CGI版PHPの有効化(モジュール版PHPはインストールしてない)
$ sudo a2enconf php7.4-fpm
$ sudo a2enmod proxy_fcgi
再起動
$ sudo service php7.4-fpm restart
$ sudo service apache2 restart
基本的な設定は以上で、あとは WordPress の引っ越しを残すのみ。
とは言ってもディレクトリ構造は変更しないから、MySQL のデータベースを旧サーバーからエクスポートして新サーバーにインポートするのと、WordPress を丸ごと FTP でアップロードするだけで完了する。
ただし、引っ越し前に WordPress のプラグインを可能な限り無効化しておくほうが良い。
・・・この記事は途中まで旧サーバーで下書きしておいて、新サーバーで追記した。
コメント