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

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

LAMPはLの略です inux、 A pache、 M ySQL、 P HP。このチュートリアルでは、PHP 7(mod_php)とMySQL/MariaDBをサポートするUbuntu16.04LTS(Xenial Xerus)サーバーにApache Webサーバーをインストールする方法と、Let'sEncryptを使用してSSL証明書を設定する方法を示します。さらに、MySQLの管理を容易にするためにPHPMyAdminをインストールします。 LAMPセットアップは、Joomla、Wordpress、Drupalなどの一般的なCMSシステムの完璧な基盤です。

予備メモ

このチュートリアルでは、ホスト名server1.example.comとIPアドレス192.168.1.100を使用します。これらの設定はユーザーによって異なる場合があるため、必要に応じて置き換える必要があります。

チュートリアルの基礎として最小限のUbuntuサーバー設定を使用することをお勧めします。これは、ウェブホスティング会社からのUbuntu 16.04最小限のインストールで仮想サーバーまたはルートサーバーイメージにするか、最小限のサーバーチュートリアルを使用してサーバーを最初からインストールします。

このチュートリアルのすべてのステップをroot権限で実行しているので、rootとしてログインしていることを確認してください:

sudo su

1。 MySQLまたはMariaDBデータベースのインストール

現在、広く使用されている2つのMySQLデータベースシステムがあります。Oracleによって開発され、現在バージョン5.7で利用可能な従来の「MySQL」サーバーと、元のMySQL開発者であるMontyWideniusによって開発されたMariaDBという名前のMySQLフォークです。

以下に両方の選択肢をインストールする方法を示します。 1.1章または1.2章のいずれかに従ってください。両方ではありません。 Howtoforgeからダウンロードできる仮想マシンイメージにはMySQL5.7を使用します。

1.1MySQL5.7をインストール

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

apt-get -y install mysql-server mysql-client

パッケージmysql-serverおよびmysql-clientは、いわゆる「メタパッケージ」と呼ばれ、Ubuntuから入手可能な最新のMySQLバージョンを常にインストールします。最新バージョンは現在MySQL5.7です。

インストール時にMySQLのrootパスワードを設定しましたが、セキュリティ上の理由から、匿名ユーザーとテストデータベースを削除したいと思います。これを実現するには、以下のmysql_secure_installationコマンドを実行してください。

mysql_secure_installation

次の質問があります:

Securing the MySQL server deployment.
Enter password for user root: <-- Enter the MySQL root 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:
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Choose 'y' here if you like to enable the password validation, I don't need that function, so I choose 'n' here.
... skipping.
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
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のセットアップが保護されました。

1.2MariaDB10をインストールする

次のコマンドを実行して、MariaDBサーバーとクライアントをインストールします。

apt-get -y install mariadb-server mariadb-client

次に、MariaDBのルートパスワードを設定します。

mysql_secure_installation

次の質問があります:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

「mysqlコマンド」を使用してMariaDBへのログインをテストします

mysql -u root -p

上で設定したMariaDBルートパスワードを入力します。結果は以下のスクリーンショットのようになります:

MariaDBシェルを終了するには、コマンド「quit」を入力してEnterキーを押します。

2。 ApacheWebサーバーをインストールする

Apache 2はUbuntuパッケージとして入手できるため、次のようにインストールできます。

apt-get -y install apache2

次に、ブラウザをhttp://192.168.1.100に移動すると、Apache2のデフォルトページが表示されます(動作します!):

Apacheのデフォルトの仮想ホストのドキュメントルートはUbuntuでは/var/ www / htmlであり、メインの設定ファイルは/etc/apache2/apache2.confです。構成システムは、 /usr/share/doc/apache2/README.Debian.gzに完全に文書化されています。 。

3。 PHP7をインストールする

PHP7とApachePHPモジュールは次のようにインストールできます。

apt-get -y install php7.0 libapache2-mod-php7.0

次に、Apacheを再起動します:

systemctl restart apache2

4。 PHPをテストし、PHPインストールの詳細を取得します

デフォルトのWebサイトのドキュメントルートは/var/ www/htmlです。次に、そのディレクトリに小さなPHPファイル(info.php)を作成し、ブラウザで呼び出します。このファイルには、インストールされているPHPのバージョンなど、PHPのインストールに関する多くの役立つ詳細が表示されます。

nano /var/www/html/info.php
<?php
phpinfo();
?>

次に、info.phpファイルの所有者をwww-dataユーザーとグループに変更します。

chown www-data:www-data /var/www/html/info.php

次に、そのファイルをブラウザ(http://192.168.1.100/info.phpなど)で呼び出します。

ご覧のとおり、PHP 7.0は機能しており、サーバーAPI行に示されているように、Apache2.0ハンドラーを介して機能しています。さらに下にスクロールすると、PHP5ですでに有効になっているすべてのモジュールが表示されます。 MySQLはそこにリストされていません。つまり、PHPではMySQL/MariaDBがまだサポートされていません。

5。 PHPでMySQL/MariaDBのサポートを取得する

PHPでMySQLをサポートするために、php7.0-mysqlパッケージをインストールできます。他のPHPモジュールをインストールすることをお勧めします。また、アプリケーションでそれらが必要になる場合もあります。次のような利用可能なPHPモジュールを検索できます:

apt-cache search php7.0

必要なものを選び、次のようにインストールします:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

次に、Apache2を再起動します:

systemctl restart apache2

上記のphpinfo()に示すように、PHP7はMySQL/MariaDBをサポートするようになりました。

6。 PHPを高速化するためにOpcache+APCuPHPキャッシュをインストールします

PHP 7には、PHP中間コードをキャッシュおよび最適化するための組み込みのオペコードキャッシャーが付属しています。名前は「opcache」で、パッケージphp7.0-opcacheで利用できます。 PHPページを高速化するために、Opcacheをインストールすることを強くお勧めします。 opcacheの他に、opcacheの互換性ラッパーであるAPCuをインストールして、APCキャッシュの機能を提供します。これは、PHP 5.xバージョンでよく使用されるキャッシュシステムであり、多くのCMSシステムで引き続き使用されています。

OpcacheとAPCuは、次のようにインストールできます。

apt-get -y install php7.0-opcache php-apcu

Opcacheがすでにインストールされていることを示していても心配しないでください。

次にApacheを再起動します:

systemctl restart apache2

次に、ブラウザにhttp://192.168.1.100/info.phpをリロードし、モジュールセクションまでスクロールダウンします。そこにたくさんの新しいモジュールが見つかるはずです:

info.phpファイルはサーバーの機密情報を提供するため、不要になった場合は削除することを忘れないでください。次のコマンドを実行してファイルを削除します。

rm -f /var/www/html/info.php

7。 apacheでSSLWebサイトを有効にします

SSL / TLSは、Webブラウザとサーバー間の接続を暗号化するためのセキュリティレイヤーです。サーバーとWebブラウザー間の接続がSSLで暗号化されていない場合、ほとんどのWebブラウザーは今日サイトを安全でないものとして表示し始めます。この章では、SSLを使用してWebサイトを保護する方法を説明します。

サーバーで次のコマンドを実行して、SSL(https://)サポートを有効にします。実行:

a2enmod ssl
a2ensite default-ssl

これにより、SSLモジュールが有効になり、/ etc / apache2 / sites-enabledフォルダー内のシンボリックリンクがファイル/etc/apache2/sites-available/default-ssl.confに追加され、アクティブなApache構成に含まれます。次に、apacheを再起動して、新しい構成を有効にします。

systemctl restart apache2

次に、ウェブブラウザでhttps://192.168.1.100を開いて、SSL接続をテストします。

サーバーのSSL証明書は「自己署名」SSL証明書であるため、SSL警告が表示されます。これは、ブラウザがデフォルトでこの証明書を信頼しないことを意味し、最初にセキュリティ警告を受け入れる必要があります。警告を受け入れると、apacheのデフォルトページが表示されます。

ブラウザのURLの前にある閉じた「緑色のロック」は、接続が暗号化されていることを示しています。

SSL警告を取り除くには、2つの方法があります。自己署名SSL証明書/etc/ssl/certs/ssl-cert-snakeoil.pemを、SSL機関から購入した正式に署名されたSSL証明書に置き換えるか、次のいずれかを取得します。 Let'sEncryptからの無料のSSL証明書。これについては第8章で説明します。

8。 Let'sEncryptから無料のSSL証明書を取得する

Let's Encrypt SSL証明書を使用してウェブサイトを保護するための最初のステップは、python-letsencrypt-apacheパッケージをインストールすることです。次のコマンドを実行します:

apt-get -y install python-letsencrypt-apache

次のステップでは、Let's EncryptにSSL証明書を要求します。このプロセス中に、Let's Encryptサーバーは、letsencryptコマンドに指定したドメイン名を介してサーバーに接続しようとします。このドメイン名がDNS内のサーバーを指していることが重要です。これにより、ポート80(http)のドメイン名でWebサイトにアクセスできるようになります。インターネットからWebサイトにアクセスできない場合、Let'sEncryptSSL証明書の作成は失敗します。

SSL証明書の作成を開始する前に、vhost構成ファイルでドメイン名を設定します。エディターでデフォルトのvhostファイルを開きます:

nano /etc/apache2/sites-available/000-default.conf

次の行を追加します:

ServerName example.com

'DocumentRoot'行のすぐ下。 example.comを自分のウェブサイトのドメイン名に置き換えます。

次に、次のコマンドを使用してSSL証明書を作成します。

letsencrypt --apache -d example.com

ここでもexample.comを自分のドメイン名に置き換えます。このコマンドは、いくつかの質問をするウィザードを開始します。

このWebサイトを担当する管理者に連絡できるメールアドレスを入力してください。

Let'sEncryptSSL機関の利用規約に同意します。

非SSLリクエストをhttps://に自動的にリダイレクトするかどうかを選択します。 Webサイトがhttp://およびhttps://バージョンとして利用可能な場合に重複コンテンツの問題を回避するために、ここで[はい]を選択します。

SSL証明書が正常に発行されました。

ブラウザを使用してWebサイトにアクセスすると、SSLに自動的にリダイレクトされ、ブラウザのURLバーの前にある緑色のロックは、信頼できるSSL証明書を使用していることを示します。

8.1自動更新を暗号化しましょう

Let's Encrypt SSL証明書は、80日間の短期間のみ有効です。したがって、必要に応じてSSL証明書を自動更新するためのcronジョブを設定します。コマンドは「letsencryptrenew」です。

LE自動更新用のcronジョブを設定します。実行:

crontab -e

エディターでルートcrontabを開きます。ファイルの最後に次の行を挿入します。

0 1 * * * /usr/bin/letsencrypt renew &> /dev/null

ファイルを保存すると、cronジョブがアクティブになります。このcronジョブは、毎晩午前1時にLet'sEncryptrenewコマンドを呼び出します。このコマンドは、必要な場合(有効期限が切れる30日前)にのみSSL証明書を更新します。毎晩、問題なく実行できます。

9。 phpMyAdminをインストールします

phpMyAdminは、MySQLデータベースを管理するためのWebインターフェイスです。インストールすることをお勧めします:

apt-get -y install phpmyadmin

重要:aptインストーラーは、いくつかの質問をします。そのうちの1つは、Webサーバーのタイプを選択することです。よくある間違いは、Webサーバーの種類が強調表示されているだけで、選択されていないことです。 aptメニューで項目を選択するには、Tabキーまたはカーソルキーで項目に移動した後、キーボードのスペースバーを押す必要があります。強調するだけでは不十分です!

次の質問が表示されます:

Web server to configure automatically: <-- Select the option: apache2
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press enter, apt will create a random password automatically.

9.1MariaDBを使用したPHPMyAdminへのルートアクセス

次の手順は、MariaDBのインストールにのみ必要です。MySQL5.7を使用している場合は、この手順をスキップしてください。

MariaDBは、rootユーザーに対して「unix_socket」と呼ばれるプラグインをデフォルトで有効にします。このプラグインは、rootユーザーがPHPMyAdminにログインできず、MySQLへのTCP接続がrootユーザーに対して機能することを防ぎます。 PHPMyAdminで他のユーザーやデータベースを作成する権限を持つユーザーを取得するには、rootユーザーと同じ権限を持つ「admin」という名前の新しいMySQLユーザーを作成します。

シェルのrootユーザーとしてMySQLデータベースにログインします:

mysql -u root

「admin」という名前と「howtoforge」というパスワードで新しいユーザーを作成します。以下のコマンドで、パスワード「howtoforge」を安全なパスワードに置き換えてください!

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

その後、http://192.168.1.100/phpmyadmin/からphpMyAdminにアクセスできます:

10このチュートリアルの仮想マシンイメージのダウンロード

このチュートリアルは、VMWareおよびVirtualboxと互換性のあるovf/ova形式の仮想マシンイメージをすぐに使用できる状態で利用できます。仮想マシンイメージは、次のログイン詳細を使用します:

SSH/シェルログイン

ユーザー名:管理者
パスワード:howtoforge

このユーザーにはsudo権限があります。

MySQLログイン

ユーザー名:root
パスワード:howtoforge

VMのIPは192.168.1.100であり、ファイル/ etc / network/interfacesで変更できます。仮想マシンを保護するために、上記のすべてのパスワードを変更してください。

  • Apache:http://httpd.apache.org/
  • PHP:http://www.php.net/
  • MySQL:http://www.mysql.com/
  • MariaDB:https://mariadb.com/
  • Ubuntu:http://www.ubuntu.com/
  • phpMyAdmin:http://www.phpmyadmin.net/

Ubuntu
  1. ApacheとMySQLを使用したUbuntuLinuxへのWordPressのインストール

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

  3. Ubuntu 20.04でLAMP(PHP、Apache、Mariadb)を使用してOpencartをセットアップする方法

  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 15.10にApache、MySQL、SSLを使用してDrupal8をインストールする方法

  2. Ubuntu 20.04 LTSにPHPとMySQL(LEMPスタック)を使用してNginxをインストールする方法

  3. Ubuntu20.04LTSにPHP-FPMとMySQLを使用してLighttpdをインストールする方法