動作検証やテストに使うサーバを構築する。Ubuntu 22.04 上に Apache と MySQL と PHP は入れておく。
Ubuntu 22.04
まずは VPS に Ubuntu を入れておく。インストール時に設定することでは、言語は英語でインストールする、ミラーは国内のサーバにする、くらい。
apt 更新
apt で更新をかけておく。
$ sudo apt update
$ sudo apt upgrade
ssh
ssh のポート番号をデフォルトから変更しておく。
/etc/ssh/sshd_config
#Port 22
↓
Port <使用するポート番号>
ufw
ssh のポートを許可して、有効にしておく。
$ sudo ufw allow <ssh のポート番号>
$ sudo ufw enable
$ sudo ufw status verbose
タイムゾーン・ロケール
タイムゾーンを日本にしておく。ロケールは英語のままにするが、日本語ランゲージパックはインストールしておく。
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo apt install -y language-pack-ja-base language-pack-ja
ホスト名
hostname -f
で表示されるホスト名を FQDN にしておく。
$ sudo hostnamectl set-hostname <FQDN>
Apache のインストール
apt でインストール。
$ sudo apt install -y apache2
ブラウザでアクセスして表示を確認する。ufw で遮断されているはずなので表示はされないはず。
ufw の設定。80 番と 443 番を開けておく。
$ sudo ufw allow 80
$ sudo ufw allow 443
再度、ブラウザでアクセスして表示されることを確認する。
Let’s Encrypt から証明書を取得
証明書取得に使う certbot と、apache と連携するためのプラグイン python3-certbot-apache をインストールする。
$ sudo apt -y install certbot python3-certbot-apache
証明書の取得。/etc/letsencrypt/live 以下にホスト名のディレクトリがつくられ、その中にファイルが生成される。
$ sudo certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp --email <管理者メールアドレス> -w <ドキュメントルート> -d <ホスト名>
証明書の指定はサイトの定義に以下を追加。
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/<ホスト名>/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<ホスト名>/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/<ホスト名>/chain.pem
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
MySQL のインストール
インストール後、文字コードの設定だけはしておく。
$ sudo apt install -y mysql-server-8.0
/etc/mysql/mysql.conf.d/mysqld.cnf
↓
character-set-server=utf8mb4
collation-server=utf8mb4_bin
/etc/mysql/mysql.conf.d/mysql.cnf
↓
default-character-set = utf8mb4
root の認証で auth_socket を使っているので mysql_secure_installation が正常に使えないので、以下の流れで。
$ sudo mysql -u root
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY '<パスワード>';
mysql> quit;
$ mysql_secure_installation
$ sudo mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket';
mysql> quit;
PHP のインストール
$ sudo apt install -y php libapache2-mod-php php-mysql
/etc/php/8.1/apache2/php.ini
;date.timezone =
↓
date.timezone = "Asia/Tokyo"
コメント