基本環境#
システム環境:CentOS Stream 9
ソフトウェア環境:nginx-1.20.1、mysql-8.0.36(mariaDB)、php-8.0.30
デプロイプロセス#
プラン 1:yum インストール#
ステップ 1:セキュリティポリシーの設定#
# 80ポートを開放
firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload && sudo firewall-cmd --list-all
# SELinuxを無効化
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
ステップ 2:nginx のインストール#
yum -y install nginx
# nginxのバージョンを確認
nginx -v
ステップ 3:mysql のインストールと設定#
mysql のインストール
yum -y install mysql-server
# mysqlのバージョンを確認
mysql -V
# 起動し、起動時自動起動を設定
systemctl start mysqld
systemctl enable mysqld
mysql の設定
(1)root ユーザーの初期パスワードを確認
grep 'password' /var/log/mysql/mysqld.log
2024-05-08T09:37:31.765242Z 6 [Warning] [MY-010453] [Server] root@localhost は空のパスワードで作成されました! —initialize-insecure オプションをオフにすることを検討してください。
(2)MySQL のセキュリティを設定
mysql_secure_installation
MySQL サーバーデプロイメントのセキュリティを強化しています。
空のパスワードを使用して MySQL に接続しています。
VALIDATE PASSWORD COMPONENT はパスワードをテストし
セキュリティを向上させるために使用できます。これはパスワードの強度をチェックし、
ユーザーが十分に安全なパスワードのみを設定できるようにします。VALIDATE PASSWORD コンポーネントを設定しますか?MySQL の新しいパスワードを設定
Yes の場合は y|Y を押し、No の場合は他のキーを押してください: y
パスワード検証ポリシーには 3 つのレベルがあります:
LOW 長さ >= 8
MEDIUM 長さ >= 8、数字、大文字小文字混合、特殊文字
STRONG 長さ >= 8、数字、大文字小文字混合、特殊文字および辞書ファイル設定したパスワードの強度
0 = LOW、1 = MEDIUM、2 = STRONG を入力してください: 0
ここで root のパスワードを設定してください。新しいパスワード:
新しいパスワードを再入力してください:
パスワードの推定強度: 50
提供されたパスワードで続行しますか?(Yes の場合は y|Y を押し、No の場合は他のキーを押してください): y
デフォルトでは、MySQL のインストールには匿名ユーザーが含まれており、
誰でもユーザーアカウントを作成せずに MySQL にログインできます。これはテスト専用であり、
インストールを少しスムーズにするためのものです。
本番環境に移行する前にそれらを削除する必要があります。匿名ユーザーを削除
匿名ユーザーを削除しますか?(Yes の場合は y|Y を押し、No の場合は他のキーを押してください): y
成功。通常、root は「localhost」からのみ接続を許可されるべきです。これにより、誰かがネットワークから
root パスワードを推測できないようにします。root ユーザーのリモートログインを禁止
root のリモートログインを禁止しますか?(Yes の場合は y|Y を押し、No の場合は他のキーを押してください): y
成功。デフォルトでは、MySQL には「test」という名前のデータベースがあり、
誰でもアクセスできます。これもテスト専用であり、
本番環境に移行する前に削除する必要があります。test データベースとそのアクセス権を削除
test データベースとそのアクセスを削除しますか?(Yes の場合は y|Y を押し、No の場合は他のキーを押してください): y
- test データベースを削除中…
成功。- test データベースの権限を削除中…
成功。権限テーブルを再読み込みすることで、これまでに行ったすべての変更が即座に有効になります。
権限テーブルを再読み込み
権限テーブルを今すぐ再読み込みしますか?(Yes の場合は y|Y を押し、No の場合は他のキーを押してください): y
成功。完了!
ステップ 4:php のインストール#
# phpコンポーネントをダウンロード
yum install -y php php-cli php-fpm php-common php-mysqlnd php-gd php-mbstring
# phpのバージョンを確認
php -v
nginx 設定ファイルを編集して php を有効にする
# Nginx設定ファイルのバックアップ
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# Nginx設定ファイルのserver部分に内容を追加
vi /etc/nginx/nginx.conf
**************************nginx.conf**************************
server {
listen 80;
listen [::]:80;
server_name _;
root /data; #ウェブサイトのルートディレクトリ
# デフォルトのサーバーブロックの設定ファイルを読み込む。
include /etc/nginx/default.d/*.conf;
location / { #追加
index index.php index.html index.htm;
}
location ~ .php$ {
root /data; #ウェブサイトのルートディレクトリ
fastcgi_pass 127.0.0.1:9000; #Nginxがローカルの9000ポートを介してPHPリクエストをPHP-FPMに転送
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params; #Nginxがfastcgiインターフェースを呼び出してPHPリクエストを処理
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
**************************nginx.conf**************************
# nginxを起動し、起動時自動起動を設定
systemctl start nginx
systemctl enable nginx
php の設定と検証
# nginxプロセスの管理ユーザーとPHPサービスプロセスの管理ユーザーを一致させる
vi /etc/php-fpm.d/www.conf
user = nginx
group = nginx
# nginxを再起動
systemctl restart nginx
# ウェブサイトのルートディレクトリを作成
mkdir /data
# テストphpインターフェースを作成
echo "<?php echo phpinfo(); ?>" >/data/index.php
# php-fpmを起動し、起動時自動起動を設定
systemctl start php-fpm
systemctl enable php-fpm
ステップ 5:アクセステスト#
ブラウザにhttp://本機ip/index.php
を入力してアクセスします。以下の図のように、LNMP 環境のデプロイが成功したことを示します。
プラン 2:スクリプトによるワンクリックインストール#
yum install -y wget
# lnmpインストールスクリプトをダウンロード
wget https://soft.lnmp.com/lnmp/lnmp2.1beta.tar.gz
# 解凍
tar -vzxf lnmp2.1beta.tar.gz
cd lnmp2.1
# スクリプトを実行
./install.sh
# ガイドに従ってインストールを進めます
ブラウザでhttp://本機ip/
にアクセスし、以下の画面が表示されれば、デプロイ成功です。
lnmp2.1/conf/nginx.conf ファイルを開いて、ウェブサイトのルートディレクトリが /home/wwwroot/default であることを確認します。
そのウェブサイトのルートディレクトリ /home/wwwroot/default で# テスト php インターフェースを作成し、ブラウザにhttp://本機ip/index.php
を入力してアクセスします。結果はプラン 1 の《ステップ 5》の図のように表示され、成功となります。
echo "<?php echo phpinfo(); ?>" >/data/index.php