LAMPは、Linuxオペレーティングシステム、Apache HTTP Server、MySQLリレーショナルデータベース管理システム、およびPHPプログラミング言語のコンポーネントの名前の頭字語です。 LAMPスタックは、Webサイトの構築に一般的に使用されます。 LAMPは、広範なコミュニティサポートと豊富なリソースを備えており、さまざまなサイズのwebアプリケーションの開発、展開、および保守に適しています。 LAMPスタックは柔軟性が高く、サーバーを変更およびカスタマイズできます。 ビジネス要件に基づいてLAMPスタックコンポーネントを構成し、パフォーマンスとセキュリティを最大化できます。 このトピックでは、Ubuntuを実行するElastic Compute Service (ECS) インスタンスでLAMPスタックを構築する方法について説明します。
前提条件
LAMPスタックのデプロイに使用されるECSインスタンスが作成されます。 詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。
インスタンスは次の要件を満たしています。
インスタンスには、システムによってパブリックIPアドレスが割り当てられるか、EIP (elastic IP address) に関連付けられます。 EIPをインスタンスに関連付ける方法については、「EIPの関連付けまたは関連付けの解除」をご参照ください。
インスタンスはUbuntu 22.04またはUbuntu 20.04を実行します。
インバウンドルールがインスタンスのセキュリティグループに追加され、ポート22、80、および443のトラフィックが許可されます。 インバウンドセキュリティグループルールを追加する方法の詳細については、「セキュリティグループルールの追加」をご参照ください。
ステップ1: Apacheのインストール
次のコマンドを実行して、Ubuntuソフトウェアパッケージを更新します。
sudo apt update
次のコマンドを実行してApacheをインストールします。
sudo apt-get -y install apache2
次のコマンドを実行して、Apacheのバージョンを確認します。
apache2 -v
次のようなコマンド出力は、Apacheがインストールされていることを示します。
次のコマンドを実行してApacheを起動し、システム起動時に自動的に起動するようApacheを設定します。
sudo systemctl start apache2 sudo systemctl enable apache2
次のコマンドを実行して、Apacheのステータスを確認します。
sudo systemctl status apache2
次のようなコマンド出力は、Apacheが開始されたことを示します。
ステップ2: MySQLのインストールと設定
MySQL をインストールします。
次のコマンドを実行してMySQLをインストールします。
sudo apt -y install mysql-server
次のコマンドを実行して、MySQLのバージョンを確認します。
mysql -V
次のようなコマンド出力は、MySQLがインストールされていることを示します。
次のコマンドを実行してMySQLを起動します。
sudo systemctl start mysql
次のコマンドを順番に実行して、MySQLをシステム起動時に開始するように設定します。
sudo systemctl enable mysql sudo systemctl daemon-reload
MySQLを設定します。
次のコマンドを実行してMySQLにアクセスします。
sudo mysql
次のコマンドを実行して、rootユーザーのパスワードを設定します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';
この例では、パスワードは
Mysql @ 1234
です。 サンプルコマンド:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'Mysql@1234';
次のコマンドを実行してMySQLを終了します。
exit;
次のコマンドを実行して、MySQLのセキュリティ設定を構成します。
sudo mysql_secure_installation
コマンドラインの指示に従って、次の設定を順番に設定します。
rootユーザーのパスワードを入力します。 この例では、
Mysql @ 1234
を入力します。ecs-user@iZbp19jsi7s0g7m4zgc****:~# sudo mysql_secure_installation Securing the MySQL server deployment. Enter password for user root:
説明データセキュリティのため、パスワードを入力しても出力は返されません。 正しいパスワードを入力し、enterキーを押すだけです。
Y
を入力してパスワード強度ポリシーを設定します。VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y
パスワード強度値を指定します。
この例では、2が使用される。
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
と入力してください
ルートユーザーのパスワードを変更するには、
Y
と入力します。Change the password for root ? ((Press y|Y for Yes, any other key for No) : Y
rootユーザーの新しいパスワードを入力します。
New password: Re-enter new password: Estimated strength of the password: 100
設定した新しいパスワードを使用するには、
Y
と入力します。Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
MySQLに付属の匿名ユーザーアカウントを削除するには、
Y
と入力します。By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
ルートユーザーによるMySQLへのリモートアクセスを拒否するには、
Y
と入力します。Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
testという名前のデータベースを削除するには、
Y
と入力します。By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
権限テーブルをリロードするには、
Y
と入力します。Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
設定が完了すると、すべて完了! がコマンド出力に表示されます。
MySQLにログインできるかどうかを確認します。
次のコマンドを実行してMySQLにログインします。
sudo mysql -uroot -p
Enter password:
プロンプトで、MySQLに設定したパスワードを入力します。説明データセキュリティのため、パスワードを入力しても出力は返されません。 正しいパスワードを入力し、enterキーを押すだけです。
次のサンプルコマンド出力は、MySQLにログオンしていることを示しています。
ecs-user@iZbp19jsi7s0g7m4zgc****:~# sudo mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.29-0ubuntu0.20.04.3 (Ubuntu) Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
次のコマンドを実行してMySQLを終了します。
exit;
(オプション) リスニング設定を変更します。
デフォルトでは、MySQLはポート
3306
をリッスンし、ローカルIPアドレス127.0.0.1
からの接続要求のみを受け付けます。 MySQLが任意のIPアドレスからの接続を受け入れることを許可するには、リスニングIPアドレスを0.0.0.0
に変更する必要があります。重要0.0.0.0
をリッスンするようにMySQLを設定すると、データベースは不正アクセスに対してより脆弱になる可能性があります。 任意のIPアドレスからの接続を許可するようにMySQLを設定する前に、関連するセキュリティの脅威を認識していることを確認し、脅威から保護するために、VPNとファイアウォールのデプロイやアカウント権限管理の強化などの必要な保護対策を講じてください。次のコマンドを実行して、
my.cn f
設定ファイルを開きます。sudo vim /etc/mysql/my.cn f
I
キーを押してInsertモードに入り、次のコンテンツを追加します。[mysqld] bind-address = 0.0.0.0
Esc
キーを押して:wq
と入力し、enterキーを押して設定ファイルを保存して閉じます。次のコマンドを実行してMySQLを再起動します。
sudo systemctl restart mysql
ステップ3: PHPのインストール
PHPをインストールします。
次のコマンドを実行して、
software-properties-common
ソフトウェアパッケージをインストールします。sudo apt-get install -y software-properties-common
次のコマンドを実行してOndrej PPAを追加します。
PHPの最新バージョンはOndrej PPAに含まれています。
sudo add-apt-repository ppa:ondrej/php
次の図に示すメッセージが返されたら、Enterキーを押します。
次のコマンドを実行してPHPをインストールします。
説明この例では、PHP 8.3がインストールされています。 別のバージョンをインストールする場合は、コマンドの
php8.3
をインストールするバージョンに置き換えます。sudo apt-get install -y php8.3 php8.3-fpm libapache2-mod-php8。3
次のコマンドを実行して、PHPのバージョンを確認します。
php -v
次のようなコマンド出力は、PHPがインストールされていることを示します。
次のコマンドを実行して、Apache設定ファイルをバックアップします。
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
ApacheがPHPをサポートできるように、Apache設定ファイルを変更します。
重要PHPのサポートを追加しないと、webブラウザを使用してページにアクセスすると、PHPページを表示できません。
次のコマンドを実行して、Apache設定ファイルを開きます。
sudo vim /etc/apache2/apache2.conf
I
キーを押して挿入モードに入ります。次の設定を追加します。
DirectoryIndex index.html index.php <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
[Esc]
キーを押して:wq
と入力し、[enter]
キーを押して設定ファイルを保存して閉じます。
Apache Webサイトのルートディレクトリで、テストWebページを作成します。
次のコマンドを実行して、Apache Webサイトのルートディレクトリを表示します。
sudo cat /etc/apache2/sites-available/000-default.conf
コマンド出力の
DocumentRoot /var/www/html
行は、Webサイトのルートディレクトリが/var/www/html
であることを示しています。次のコマンドを実行して、WebサイトのルートディレクトリにテストWebページを作成し、
phpinfo()
関数をWebページに追加します。phpinfo()
関数は、PHPのすべての設定情報を表示するために使用されます。sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php'
次のコマンドを実行してApacheを再起動します。
sudo systemctl restart apache2
コンピューターのwebブラウザーのアドレスバーに
http:// <ECSインスタンスのパブリックIPアドレス>/phpinfo.php
と入力し、Enterキーを押します。次のようなページは、PHPがインストールされていることを示します。
LAMPスタックの構築後、次のコマンドを実行してphpinfo.phpファイルを削除し、データリークを防ぐことを推奨します。
sudo rm -rf <Website root directory>/phpinfo.php
この例では、Webサイトのルートディレクトリ
/var/www/html
が使用されています。 次のコマンドを実行して、テストファイルを削除します。sudo rm -rf /var/www/html/phpinfo.php