Ubuntu 20.04 LTS(Focal Fossa)

新たに仮想サーバーを準備してクリーンインストールを実行した。インストール自体は特に迷うことなく、途中で固定 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 のプラグインを可能な限り無効化しておくほうが良い。

・・・この記事は途中まで旧サーバーで下書きしておいて、新サーバーで追記した。

コメント

コメントする

目次
閉じる