ウェブサイト検索

Ubuntu 18.04 LTS に Apache、MySQL、PHP (LAMP) スタックをインストールする


LAMP スタックは、動的な Web サイトや Web ベースのアプリケーションの実行と展開に使用できる、人気のあるオープンソース Web 開発プラットフォームです。通常、LAMP スタックは、Apache Web サーバー、MariaDB/MySQL データベース、PHP/Python/Perl プログラミング言語で構成されます。 LAMP は、Linux、MariaDB/MYSQL、PHP/P< の頭字語です。ython/Perl。このチュートリアルでは、Ubuntu 18.04 LTS サーバーに Apache、MySQL、PHP (LAMP スタック) をインストールする方法について説明します。

Ubuntu 18.04 LTS に Apache、MySQL、PHP (LAMP) スタックをインストールする

このチュートリアルでは、次の Ubuntu テストボックスを使用します。

  • オペレーティング システム : Ubuntu 18.04.1 LTS サーバー エディション
  • IP アドレス : 192.168.225.22/24

1. Apache Webサーバーをインストールする

まず、次のコマンドを使用して Ubuntu サーバーを更新します。

sudo apt update
sudo apt upgrade

次に、Apache Web サーバーをインストールします。

sudo apt install apache2

Apache Web サーバーが実行されているかどうかを確認します。

sudo systemctl status apache2

出力例は次のようになります。

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: en
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Tue 2019-02-05 10:48:03 UTC; 1min 5s ago
 Main PID: 2025 (apache2)
    Tasks: 55 (limit: 2320)
   CGroup: /system.slice/apache2.service
           ├─2025 /usr/sbin/apache2 -k start
           ├─2027 /usr/sbin/apache2 -k start
           └─2028 /usr/sbin/apache2 -k start

Feb 05 10:48:02 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
Feb 05 10:48:03 ubuntuserver apachectl[2003]: AH00558: apache2: Could not reliably
Feb 05 10:48:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.

おめでとう! Apache サービスが稼働中です。

1.1 Apache Web サーバーを許可するようにファイアウォールを調整する

Ubuntu 18.04 LTS で UFW ファイアウォールを有効にしている場合、デフォルトでは、リモート システムから Apache Web ブラウザにアクセスできません。以下の手順に従って、http ポートと https ポートを許可する必要があります。

まず、次のコマンドを使用して、Ubuntu システムで利用可能なアプリケーション プロファイルを一覧表示します。

sudo ufw app list

出力例:

Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

ご覧のとおり、Apache および OpenSSH アプリケーションには UFW プロファイルがインストールされています。 「ufw app info "Profile Name" 」コマンドを使用して、各プロファイルとそれに含まれるルールに関する情報を一覧表示できます。

「Apache Full」 プロファイルを見てみましょう。これを行うには、次を実行します。

sudo ufw app info "Apache Full"

出力例:

Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
80,443/tcp

ご覧のとおり、「Apache Full」プロファイルには、ポート 80 および 443 へのトラフィックを有効にするルールが含まれています。

次に、次のコマンドを実行して、このプロファイルの受信 HTTP および HTTPS トラフィックを許可します。

$ sudo ufw allow in "Apache Full"
Rules updated
Rules updated (v6)

https トラフィックを許可せず、http (80) トラフィックのみを許可する場合は、次を実行します。

sudo ufw app info "Apache"
1.2 Apache Web サーバーのテスト

次に、Web ブラウザを開き、http://localhost/ または http://IP-Address/ に移動して Apache テスト ページにアクセスします。

Apache テストページ

上のような画面が表示されたら、準備完了です。 Apacheサーバーは動作しています!

2.MySQLをインストールする

MySQL を Ubuntu にインストールするには、次のコマンドを実行します。

sudo apt install mysql-server

次のコマンドを使用して、MySQL サービスが実行されているかどうかを確認します。

sudo systemctl status mysql

サンプル出力:

● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enab
Active: active (running) since Tue 2019-02-05 11:07:50 UTC; 17s ago
Main PID: 3423 (mysqld)
Tasks: 27 (limit: 2320)
CGroup: /system.slice/mysql.service
└─3423 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Feb 05 11:07:49 ubuntuserver systemd[1]: Starting MySQL Community Server...
Feb 05 11:07:50 ubuntuserver systemd[1]: Started MySQL Community Server.

MySQLが実行されています!

2.1 データベース管理ユーザー(root)のパスワードの設定

デフォルトでは、MySQL のroot ユーザー パスワードは空白です。次のスクリプトを実行して、MySQL サーバーを保護する必要があります。

sudo mysql_secure_installation

VALIDATE PASSWORD プラグインをセットアップするかどうかを尋ねられます。このプラグインを使用すると、ユーザーはデータベース認証情報に強力なパスワードを設定できます。有効にすると、パスワードの強度が自動的にチェックされ、十分に安全なパスワードのみを設定することがユーザーに強制されます。 このプラグインは無効のままにしても安全です。ただし、データベース資格情報には強力で一意のパスワードを使用する必要があります。このプラグインを有効にしたくない場合は、任意のキーを押してパスワード検証部分をスキップし、残りの手順を続行してください。

答えがはいの場合は、パスワード検証のレベルを選択するよう求められます。

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN 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 plugin?

Press y|Y for Yes, any other key for No y

利用可能なパスワード検証はです。適切な数字 (低パスワードの場合は 0、中パスワードの場合は 1、強力なパスワードの場合は 2) を入力し、ENTER キーを押すだけです。

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:

ここで、MySQL root ユーザーのパスワードを入力します。前の手順で選択したパスワード ポリシーに応じて、mysql root ユーザーのパスワードを使用する必要があることに注意してください。プラグインを有効にしなかった場合は、選択した強力で一意のパスワードを使用してください。

Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

パスワードを 2 回入力すると、パスワードの強度が表示されます ( この場合は50)。問題ない場合は、Y を押して、提供されたパスワードを使用して続行します。パスワードの長さに満足できない場合は、他のキーを押して強力なパスワードを設定してください。現在のパスワードで問題ないので、y を選択しました。

残りの質問については、y と入力して Enter キーを押してください。これにより、匿名ユーザーが削除され、root ユーザーのリモート ログインが禁止され、テスト データベースが削除されます。

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

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
Success.

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
- Dropping test database...
Success.

- Removing privileges on test database...
Success.

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
Success.

All done!

それでおしまい。 MySQL root ユーザーのパスワードが設定されました。

2.2 MySQL root ユーザーの認証方法を変更する

デフォルトでは、MySQL root ユーザーは、Ubuntu 上の MySQL 5.7 以降のバージョンのauth_socket プラグインを使用して認証するように設定されています。セキュリティは強化されますが、phpMyAdmin などの外部プログラムを使用してデータベース サーバーにアクセスする場合は、状況が複雑になります。この問題を解決するには、認証方法を auth_socket から mysql_native_password に変更する必要があります。これを行うには、次のコマンドを使用して MySQL プロンプトにログインします。

sudo mysql

mysql プロンプトで次のコマンドを実行して、すべての mysql ユーザー アカウントの現在の認証方法を確認します。

SELECT user,authentication_string,plugin,host FROM mysql.user;

サンプル出力:

+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *F126737722832701DD3979741508F05FA71E5BA0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

ご覧のとおり、mysql root ユーザーは認証に auth_socket プラグインを使用します。

この認証をmysql_native_password 方式に変更するには、mysql プロンプトで次のコマンドを実行します。 「パスワード」 を、選択した強力で一意のパスワードに置き換えることを忘れないでください。 VALIDATION プラグインを有効にしている場合は、現在のポリシー要件に基づいて強力なパスワードを使用していることを確認してください。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

次のコマンドを使用して変更を更新します。

FLUSH PRIVILEGES;

次に、認証方法が変更されているか、コマンドを使用していないかを再度確認します。

SELECT user,authentication_string,plugin,host FROM mysql.user;

出力例:

良い!これで、myql root ユーザーはパスワードを使用して認証して mysql シェルにアクセスできるようになりました。

mysql プロンプトを終了します。

exit

3.PHPをインストールする

PHP をインストールするには、次を実行します。

sudo apt install php libapache2-mod-php php-mysql

PHP をインストールした後、Apache ルート ドキュメント フォルダーにinfo.php ファイルを作成します。通常、ほとんどの Debian ベースの Linux ディストリビューションでは、Apache ルート ドキュメント フォルダは /var/www/html/ または /var/www/ になります。 Ubuntu 18.04 LTS では、/var/www/html/ です。

Apache ルート フォルダーに info.php ファイルを作成しましょう。

sudo vi /var/www/html/info.php

次の行を追加します。

<?php
phpinfo();
?>

ESC キーを押して :wq と入力し、ファイルを保存して終了します。 Apache サービスを再起動して、変更を有効にします。

sudo systemctl restart apache2
3.1 PHP のテスト

Web ブラウザを開いて、http://IP アドレス/info.php URL に移動します。

php テスト ページが表示されます。

PHPのテストページ

通常、ユーザーが Web サーバーからディレクトリをリクエストすると、Apache は最初に index.html という名前のファイルを検索します。他のファイルではなく php ファイルを提供するように Apache を変更したい場合は、以下に示すように index.phpdir.conf ファイルの最初の位置に移動します。

sudo vi /etc/apache2/mods-enabled/dir.conf

上記のファイルの内容は次のとおりです。

<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

vim: syntax=apache ts=4 sw=4 sts=4 sr noet

「index.php」ファイルを最初に移動します。変更を加えると、dir.conf ファイルは次のようになります。

<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

vim: syntax=apache ts=4 sw=4 sts=4 sr noet

ESC キーを押し、:wq と入力してファイルを保存して閉じます。 Apache サービスを再起動して、変更を有効にします。

sudo systemctl restart apache2
3.2 PHP モジュールのインストール

PHP の機能を向上させるために、追加の PHP モジュールをインストールできます。

利用可能な PHP モジュールを一覧表示するには、次を実行します。

sudo apt-cache search php- | less

サンプル出力:

矢印キーを使用して結果を確認します。終了するには、「q 」と入力して Enter キーを押します。

特定の php モジュール (php-gd など) の詳細を確認するには、次のコマンドを実行します。

sudo apt-cache show php-gd

PHP モジュールをインストールするには、次のコマンドを実行します。

sudo apt install php-gd

すべてのモジュールをインストールするには (必須ではありません)、次を実行します。

sudo apt-get install php*

PHP モジュールをインストールした後は、必ず Apache サービスを再起動してください。モジュールがロードされているかどうかを確認するには、ブラウザで info.php ファイルを開いて、存在するかどうかを確認します。

次に、Web ブラウザ経由でデータベースを簡単に管理できるデータベース管理ツールをインストールすることもできます。その場合は、次のリンクの説明に従って phpMyAdmin をインストールします。

  • Ubuntu 18.04 LTS に LAMP スタックを使用して phpMyAdmin をインストールする

おめでとう! Ubuntu 18.04 LTS サーバーで LAMP スタックを正常にセットアップしました。

こちらもお読みください:

  • Ubuntu 18.04 LTS に Nginx、MariaDB、PHP (LEMP) スタックをインストールする
  • Apache、MariaDB、PHP (LAMP) スタックを Arch Linux にインストールする
  • Arch Linux に Nginx、MariaDB、PHP (LEMP) スタックをインストールする

そして、今のところはここまでです。ご覧のとおり、Ubuntu での LAMP スタックのセットアップは非常に簡単で簡単です。

参照:

  • デジタル オーシャン

関連記事