基本環境#
システム環境: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