NGINXは、LNMP webサービス環境を構築するために使用できる、小型で効率的なwebサーバーです。 LNMPは、Linuxオペレーティングシステム、NGINX webサーバー、MySQLリレーショナルデータベース管理システム、PHPプログラミング言語の4つのオープンソースコンポーネントの名前の頭字語です。 このトピックでは、Ubuntu 20オペレーティングシステムを実行するElastic Compute Service (ECS) インスタンスでLNMPスタックを手動で構築する方法について説明します。
前提条件
ECSインスタンスが作成され、パブリックIPアドレスが割り当てられます。 インスタンスの作成方法については、「カスタム起動タブでインスタンスを作成する」をご参照ください。
このトピックでは、次の設定を持つECSインスタンスが使用されます。 オペレーティングシステムのバージョンの問題によるコマンドエラーを防ぐために、このトピックで使用したものと同じオペレーティングシステムのバージョンを使用することを推奨します。
インスタンスタイプ: ecs.c6.large
オペレーティングシステム: Ubuntu 20.04
ネットワークタイプ:Virtual Private Cloud (VPC)
IPアドレス: パブリックIPアドレス
インバウンドルールがECSインスタンスのセキュリティグループに追加され、ポート22、80、および443のトラフィックが許可されます。 セキュリティグループルールの追加方法については、「セキュリティグループルールの追加」をご参照ください。
説明セキュリティ上の理由から、このトピックでは、トラフィックがLNMPスタックの構築とテストを許可される必要があるポートのみについて説明します。 ビジネス要件に基づいて、より多くのポートでトラフィックを許可するようにセキュリティグループルールを設定できます。 たとえば、ECSインスタンス上のMySQLデータベースに接続する場合は、インスタンスのセキュリティグループにインバウンドルールを追加して、MySQLに使用されるデフォルトのポートであるポート3306でトラフィックを許可する必要があります。
背景情報
このトピックは、Linuxオペレーティングシステムに精通しているが、Alibaba Cloud ECSを使用してWebサイトを構築することに慣れていない個人ユーザーを対象としています。
この例では、次のソフトウェアバージョンが使用されています。
NGINX 1.18.0
MySQL 8.0.27
PHP 7.4.3
ステップ1: 準備をする
予期しないリスクを防ぐために、管理者ではなく通常のユーザーとして操作することを推奨します。 通常ユーザーにsudo権限がない場合は、ユーザーに権限を付与します。 詳細については、FAQセクションの「通常のユーザーにsudo権限を付与する方法」を参照してください。
LNMPスタックを構築するECSインスタンスに接続します。
詳細については、「接続方法の概要」をご参照ください。
インスタンスオペレーティングシステムのファイアウォールを無効にします。
次のコマンドを実行して、ファイアウォールのステータスを確認します。
sudo ufwステータス
ファイアウォールが無効になっている場合、Status: inactiveが表示されます。
ファイアウォールが有効になっている場合、Status: activeが表示されます。
オプション: ファイアウォールを無効にします。
ファイアウォールが有効になっている場合は、次のコマンドを実行してファイアウォールを無効にし、インスタンスの起動時にファイアウォールが起動しないようにします。
sudo ufw disable
説明ファイアウォールが無効になった後に再び有効にし、インスタンスの起動時にファイアウォールを起動する場合は、sudo ufw enableコマンドを実行します。
ステップ2: NGINXのインストール
次のコマンドを実行して、Ubuntuオペレーティングシステムのソフトウェアパッケージを更新します。
sudo aptアップデート
次のコマンドを実行してNGINXをインストールします。
sudo apt -yインストールnginx
次のコマンドを実行して、NGINXのバージョンを確認します。
sudo nginx -v
次のようなコマンド出力は、NGINXがインストールされており、バージョンが1.18.0であることを示します。
nginxバージョン: nginx/1.18.0 (Ubuntu)
ステップ3: MySQLのインストールと設定
MySQLをインストールします。
次のコマンドを実行してMySQLをインストールします。
sudo apt -y install mysql-server
次のコマンドを実行して、MySQLのバージョンを確認します。
sudo mysql -V
次のようなコマンド出力は、MySQLがインストールされ、そのバージョンが8.0.27であることを示します。
mysql Ver 8.0.27-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
MySQLを設定します。
次のコマンドを実行してMySQLに接続します。
sudo mysql
次のコマンドを実行して、rootユーザーのパスワードを設定します。
ALTER USER 'root' @ 'localhost' 'mysql_native_passwordで 'mynewpassword';
この例では、パスワードは
Mysql @ 1234
です。 サンプルコマンド:ALTER USER 'root' @ 'localhost' 'mysql_native_passwordで 'Mysql @ 1234 ';
次のコマンドを実行してMySQLを終了します。
出口;
次のコマンドを実行して、MySQLのセキュリティ設定を構成します。
sudo mysql_secure_インストール
コマンドラインの指示に従って、次の設定を順番に設定します。
rootユーザーのパスワードを入力します。 rootユーザーのパスワードを入力します。 この例では、パスワード
Mysql @ 1234
を入力します。root @ iZbp19jsi7s0g7m4zgc ****:~# sudo mysql_secure_installation MySQLサーバーの展開を保護します。 ユーザーrootのパスワードを入力します。
説明データセキュリティ上の理由から、パスワードを入力してもコマンド出力は返されません。 正しいパスワードを入力し、enterキーを押すだけです。
Yを入力してパスワード強度ポリシーを設定します。
VALIDATEパスワードコンポーネントを使用してパスワードをテストできます セキュリティを向上させます。 パスワードの強さをチェックします であり、ユーザーはパスワードのみを設定できます。十分に安全。 VALIDATE PASSWORDコンポーネントをセットアップしますか? プレスy | Yははい、他のキーはいいえ: Y
プロンプトに従ってパスワード強度値を設定します。
この例では、0の値が使用される。
入力してください0 = LOW、1=中、2=強い: 0
ルートユーザーのパスワードを変更するには、Yと入力します。
rootのパスワードを変更しますか? ((プレスy | Yははい、他のキーはいいえ) : Y
rootユーザーのパスワードを入力します。
新しいパスワード: 新しいパスワードを再入力する: パスワードの推定強度: 100
Yを入力して、設定したパスワードを確認します。
Do you wish to continue with the password provided?(プレスy | Y for Yes, any other key for No) : Y
MySQLに付属の匿名ユーザーを削除するには、Yと入力します。
デフォルトでは、MySQLインストールに匿名ユーザーがいます。持っていなくても誰でもMySQLにログインできるようにする それらのために作成されたユーザーアカウント。 これは、テストし、インストールを少しスムーズにする。 プロダクションに移行する前にそれらを削除する必要があります 環境。 匿名ユーザーを削除しますか? (プレスy | Yははい、他のキーはいいえ) : Y
ルートユーザーによるMySQLへのリモートアクセスを拒否するには、Yと入力します。
通常、rootはからのみ接続できるようにしてください。'localhost' 。 これにより、誰かが推測できないことが保証されます ネットワークからのルートパスワード。 リモートからのrootログインを拒否しますか? (プレスy | Yははい、他のキーはいいえ) : Y
testという名前のデータベースを削除するには、Yと入力します。
デフォルトでは、MySQLには 'test' という名前のデータベースが付属しています。誰でもアクセスできます。 これもテストのみを目的としていますが、プロダクションに移行する前に削除する必要があります 環境。 テストデータベースを削除してアクセスしますか? (プレスy | Yははい、他のキーはいいえ) :
権限テーブルをリロードするには、Yと入力します。
特権テーブルをリロードすると、すべての変更 これまでに作られてすぐに有効になります。 今すぐ特権テーブルを再ロードしますか? (プレスy | Yははい、他のキーはいいえ) : Y
すべてが終わったら! がコマンド出力に表示され、設定は完了です。
MySQLにログインできるかどうかを確認します。
次のコマンドを実行してMySQLにログインします。
sudo mysql -uroot -p
[Enter password:] プロンプトで、MySQLに設定したパスワードを入力します。
説明データセキュリティのため、パスワードを入力しても出力は返されません。 正しいパスワードを入力し、enterキーを押すだけです。
次のサンプルコマンド出力は、MySQLにログオンしていることを示しています。
root @ iZbp19jsi7s0g7m4zgc ****:~# sudo mysql -uroot -p パスワードを入力: MySQLモニターへようこそ。 コマンドは; または \gで終わります。 MySQL接続idは15です サーバーのバージョン: 8.0.29-0ubuntu0.20.04.3 (Ubuntu) 著作権 (c) 2000、2022、オラクルおよび /またはその関連会社。 オラクルは、オラクル社の登录商标および /またはその アフィリエイト。 その他の名前はそれぞれの商標である可能性があります 所有者。 タイプ 'help;'ヘルプは '\ h'を入力してください。 '\c' と入力して、現在の入力ステートメントをクリアします。 mysql>
次のコマンドを実行してMySQLを終了します。
出口;
ステップ4: PHPのインストールと設定
PHPをインストールします。
次のコマンドを実行してPHPをインストールします。
sudo apt -y install php-fpm
次のコマンドを実行して、PHPのバージョンを確認します。
sudo php -v
次のようなコマンド出力は、PHPがインストールされ、そのバージョンが7.4.3であることを示します。
PHP 7.4.3 (cli) (ビルド: 11月25日2021 23:16:22) ( NTS) 著作権 (c) PHPグループ Zendエンジンv3.4.0、著作権 (c) Zend Technologies Zend OPcache v7.4.3、Copyright (c) 、Zend Technologies
NGINX設定ファイルを変更してPHPを有効にします。
次のコマンドを実行してNGINX設定ファイルを開きます。
sudo vim /etc/nginx/sites-enabled/default
Iキーを押してInsertモードに入り、ファイルを変更します。
サーバー
中かっこ内のindex
で始まる設定行を見つけ、その行にindex.php
を追加します。サーバー
括弧内のlocation ~ \.php$ {}
を見つけ、location ~ \.php $括弧内の次の設定行から注釈文字 (#) を削除します。location ~ \.php$ { スニペット /fastcgi-php.confを含む。 fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; }
Escキーを押して挿入モードを終了します。 次に、
:wq
と入力し、enterキーを押してファイルを保存して閉じます。次のコマンドを実行してNGINXを再起動します。
sudo systemctl再起動nginx.service
PHPを設定します。
次のコマンドを実行して、NGINX Webサイトのルートディレクトリにphpinfo.phpファイルを作成します。
sudo vim <Webサイトのルートディレクトリ>/phpinfo.php
<Websiteルートディレクトリ> は変数で、NGINX設定ファイルで表示できます。 このトピックでは、NGINX設定ファイルはデフォルトの /etc/nginx/sites-enabled/defaultファイルです。 cat /etc/nginx/sites-enabled/defaultコマンドを実行して、ファイルの内容を表示できます。 次のようなコマンド出力は、NGINX Webサイトのルートディレクトリが
/var/www/html
であることを示します。 次のコマンドを実行して、/var/www/htmlディレクトリにphpinfo.phpファイルを作成します。sudo vim /var/www/html/phpinfo.php
Iキーを押してInsertモードに入り、phpinfo.phpファイルに次の設定を追加します。
phpinfo()
関数は、PHPのすべての設定情報を表示するために使用されます。<?phpエコーphpinfo(); ?>
Escキーを押してInsertモードを終了します。 次に、
:wq
と入力し、enterキーを押してファイルを保存して閉じます。次のコマンドを実行してPHPを起動します。
sudo systemctl start php7.4-fpm
ステップ8: PHP設定ページへのアクセスをテストする
インターネットにアクセスできるWindowsコンピュータまたは別のWindowsホストでブラウザを開きます。
アドレスバーに、
http:// <ECSインスタンスのパブリックIPアドレス>/phpinfo.php
と入力します。次のページはPHP設定を示し、LNMPスタックが構築されていることを示します。
次のステップ
LNMPスタックの構築後、データリークを防ぐためにphpinfo.phpテストファイルを削除することを推奨します。
sudo rm -rf <Webサイトのルートディレクトリ>/phpinfo.php
この例では、Webサイトのルートディレクトリ /var/www/html
が使用されています。 次のコマンドを実行して、テストファイルを削除します。
sudo rm -rf /var/www/html/phpinfo.php