GNU/Linux >> Linux の 問題 >  >> Ubuntu

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

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

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

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

  • オペレーティングシステム :Ubuntu20.04LTSサーバーエディション
  • IPアドレス :192.168.225.52 / 24

まず、Apacheサーバーをインストールしましょう。

1。 UbuntuにApacheWebサーバーをインストールする

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

$ sudo apt update
$ sudo apt upgrade

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

$ sudo apt install apache2

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

$ sudo systemctl status apache2

サンプル出力は次のようになります:

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabl>
     Active: active (running) since Fri 2020-05-29 07:02:26 UTC; 25s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 23996 (apache2)
      Tasks: 55 (limit: 2283)
     Memory: 5.1M
     CGroup: /system.slice/apache2.service
             ├─23996 /usr/sbin/apache2 -k start
             ├─23998 /usr/sbin/apache2 -k start
             └─23999 /usr/sbin/apache2 -k start

May 29 07:02:26 ubuntuserver systemd[1]: Starting The Apache HTTP Server...
May 29 07:02:26 ubuntuserver apachectl[23981]: AH00558: apache2: Could not reliably det>
May 29 07:02:26 ubuntuserver systemd[1]: Started The Apache HTTP Server.

おめでとう! Apacheサービスが稼働しています!!

1.1。 UFWファイアウォール経由でApacheWebサーバーを許可する

UFW Uの略です 複雑なF ire w allは、使いやすいように設計されたnetfilterファイアウォールを管理するためのプログラムです。 UFWは、すべてのUbuntuバージョンでデフォルトで使用できます。

デフォルトでは、Ubuntu 20.04 LTSでUFWファイアウォールを有効にしている場合、リモートシステムからApacheWebブラウザーにアクセスすることはできません。 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。 ApacheWebサーバーをテストする

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

以下に示すような「Apache2Ubuntuのデフォルトページ」が表示されたら、準備は完了です。 Apacheサーバーが機能しています!

2。 Ubuntuに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: enabled)
     Active: active (running) since Fri 2020-05-29 07:15:22 UTC; 2min 8s ago
   Main PID: 25242 (mysqld)
     Status: "Server is operational"
      Tasks: 38 (limit: 2283)
     Memory: 323.7M
     CGroup: /system.slice/mysql.service
             └─25242 /usr/sbin/mysqld

May 29 07:15:16 ubuntuserver systemd[1]: Starting MySQL Community Server...
May 29 07:15:22 ubuntuserver systemd[1]: Started MySQL Community Server.

上記の出力でわかるように、MySQLは実行されています!

2.1。 Mysqlのデータベース管理ユーザー(root)パスワードを設定する

デフォルトでは、MySQL root ユーザーパスワードが空白です。データベース管理者アカウントに空のパスワードを使用することはお勧めしません。次のスクリプトを実行して、MySQLサーバーを保護する必要があります。

$ sudo mysql_secure_installation

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

yと入力します VALIDATE PASSWORDを設定する場合 コンポーネント:

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

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

答えがはいの場合 、パスワード検証のレベルを選択するように求められます。利用可能なパスワード検証はです 、 および強い 。適切な番号(低の場合は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: 0

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

Please set the password for root here.

New password:

Re-enter new password:

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

パスワードを2回入力すると、パスワードの強度が表示されます(この場合は 100 )。問題がない場合は、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。 MySQLrootユーザーの認証方法を変更する

デフォルトでは、MySQLrootユーザーはauth_socketを使用して認証するように設定されています MySQL5.7以降のUbuntuのプラグイン。セキュリティは強化されますが、phpMyAdminなどの外部プログラムを使用してデータベースサーバーにアクセスすると、事態が複雑になります。この問題を修正するには、認証方法をauth_socketから caching_sha2_passwordに変更する必要があります。 またはmysql_native_password

MySQL 8.0バージョンの時点で、推奨されるデフォルトの認証プラグインは caching_sha2_passwordです。 caching_sha2_password 認証プラグインは、mysql_native_passwordよりも安全なパスワード暗号化を提供します プラグイン。

認証プラグインを変更するには、次のコマンドを使用してMySQLプロンプトにログインします。

$ sudo mysql

または、

$ mysql -u root -p

MySQLのrootを入力します 前の手順で設定したパスワード。

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

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

出力例:

+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$=s%UO"�[email protected]>[email protected] | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             |                                                                        | auth_socket           | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

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

auth_socketを変更するには caching_sha2_passwordへのプラグイン 、MySQLプロンプトで次のコマンドを実行します。 VALIDATE PASSWORDを有効にしている場合 プラグイン、現在のポリシー要件に基づいて強力なパスワードを使用していることを確認してください。ストロングは、大文字、小文字、数字、特殊文字を含む8文字以上で構成する必要があります。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password123#@!';

Password123#@!を置き換えます 上記のコマンドで選択した強力で一意のパスワードを使用します。

コマンドを使用して変更を更新します:

mysql> FLUSH PRIVILEGES;

次に、コマンドを使用して、現在の認証プラグインが変更されているかどうかを確認します。

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

出力例:

良い!これで、MySQLのroot ユーザーはパスワードを使用して認証し、MySQLシェルにアクセスできます。

MySQLプロンプトを終了します:

mysql> exit

注:

caching_sha2_passwordにもかかわらず プラグインは強化された安全な暗号化を提供し、既存のMySQLインストールとの互換性の問題がいくつかあります。詳細については、このリンクを参照してください。 。互換性の問題が発生した場合は、 mysql_native_passwordを設定する必要があります デフォルトの認証プラグインとしてのプラグイン。

mysql_native_passwordに変更するには プラグインの場合、MySQLプロンプトで次のコマンドを実行します。

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

コマンドを使用して変更を更新します:

mysql> FLUSH PRIVILEGES;

ここで、認証方法が変更されているかどうか、またはコマンドを使用していないかどうかをもう一度確認します。

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

出力例:

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

mysql> exit

3。 UbuntuにPHPをインストールする

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

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

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

info.phpを作成しましょう apacheルートフォルダ内のファイル:

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

次の行を追加します:

<?php
phpinfo();
?>

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

$ sudo systemctl restart apache2

3.1。 PHPをテストする

Webブラウザーを開き、 http://IP-address/info.phpに移動します。 URL。

バージョン、サーバーAPI、有効なすべてのphpプラグインの詳細などのphp情報が表示されます。

通常、ユーザーがWebサーバーからディレクトリを要求すると、Apacheは最初に index.htmlという名前のファイルを探します。 。他ではなくphpファイルを提供するようにApacheを変更する場合は、 index.phpを移動します。 dir.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と入力します

php-gd など、特定のphpモジュールの詳細を検索するには 、実行:

$ sudo apt-cache show php-gd

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

$ sudo apt install php-gd

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

おめでとう!ご覧のとおり、Ubuntu 20.04 LTSにapache、mysql、php(LAMPスタック)をインストールするのは非常に簡単です。これで、LAMPスタックを使用してウェブサイトのホスティングを開始できます。

次を読む:

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

関連記事:

  • Ubuntu 20.04 LTSにNginx、MySQL、PHP(LEMPスタック)をインストールします
  • CentOS 8にApache、MariaDB、PHP(LAMPスタック)をインストールする

Ubuntu
  1. Linux、Apache、MySQL、PHP(LAMP)スタックをUbuntu16.04にインストールする方法

  2. Ubuntu22.04LTSにLAMPスタックをインストールする方法

  3. Ubuntu 16.04 LTSにApache、MySQL、PHP(LAMP)をインストールする方法

  1. Apache 2、PHP 5、MySQLを使用したUbuntu 14.10 LAMPサーバーチュートリアル(MariaDB)

  2. (MySQLの代わりに)Apache 2、PHP 5、MariaDBを使用したUbuntu15.04LAMPサーバーチュートリアル

  3. (MySQLの代わりに)Apache 2.4、PHP 5、MariaDBを使用したUbuntu15.10LAMPサーバーチュートリアル

  1. Ubuntu 16.04(LTS)Apache、PHP 7、およびMySQLを使用したLAMPサーバーのチュートリアル

  2. Ubuntu 22.04にLAMPスタック(Apache、MariaDB、PHP)をインストールします

  3. Linux、Apache、MySQL、PHP(LAMP)スタックをUbuntu 16.04 /Ubuntu14.04にインストールする方法