LAMP サーバの構築

Tech (Old)

動作検証やテストに使うサーバを構築する。Ubuntu 22.04 上に Apache と MySQL と PHP は入れておく。

Ubuntu 22.04

まずは VPS に Ubuntu を入れておく。インストール時に設定することでは、言語は英語でインストールする、ミラーは国内のサーバにする、くらい。

apt 更新

apt で更新をかけておく。

$ sudo apt update
$ sudo apt upgrade

ssh

ssh のポート番号をデフォルトから変更しておく。

#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

 ↓
character-set-server=utf8mb4
collation-server=utf8mb4_bin

 ↓
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
;date.timezone =
 ↓
date.timezone = "Asia/Tokyo"

コメント

タイトルとURLをコピーしました