サーバー設定 · 3 min read · Dec 28, 2025

Ubuntu 16.04 (LTS) LAMPサーバーのチュートリアル(Apache、PHP 7、MySQL)

LAMPはLinux、Apache、MySQL、PHPの略です。このチュートリアルでは、Ubuntu 16.04 LTS (Xenial Xerus)サーバーにPHP 7 (mod_php)とMySQL / MariaDBサポートを使用してApacheウェブサーバーをインストールする方法と、Let’s Encryptを使用して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データベースのインストール

現在、Oracleが開発したクラシックな「MySQL」サーバー(現在のバージョンは5.7)と、元のMySQL開発者Monty Wideniusが開発したMySQLフォークであるMariaDBの2つの広く使用されているMySQLデータベースシステムがあります。

以下で両方の代替手段をインストールする方法を示します。1.1章または1.2章のいずれかに従ってください。ただし、両方は実行しないでください。私はHowtoforgeからダウンロードできる仮想マシンイメージにMySQL 5.7を使用します。

1.1 MySQL 5.7のインストール

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

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

パッケージmysql-serverとmysql-clientは、いわゆる「メタパッケージ」であり、常にUbuntuから利用可能な最新のMySQLバージョンをインストールします。最新バージョンは現在MySQL 5.7です。

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

mysql_secure_installation

以下の質問が表示されます:

MySQLサーバーのデプロイメントを保護しています。
Enter password for user root: <-- MySQLのrootパスワードを入力
VALIDATE PASSWORD PLUGINを使用してパスワードをテストし、セキュリティを向上させることができます。パスワードの強度をチェックし、ユーザーが十分に安全なパスワードのみを設定できるようにします。VALIDATE PASSWORDプラグインを設定しますか?
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) : <-- パスワード検証を有効にしたい場合は'y'を選択しますが、私はその機能が必要ないのでここでは'n'を選択します。
... スキップ中。  
デフォルトでは、MySQLインストールには匿名ユーザーがあり、誰でもユーザーアカウントを作成せずにMySQLにログインできます。これはテスト専用であり、インストールを少しスムーズにするためのものです。生産環境に移行する前にそれらを削除する必要があります。
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <-- y  
Success.
通常、rootは「localhost」からのみ接続を許可されるべきです。これにより、誰かがネットワークからrootパスワードを推測できないようにします。
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <-- y  
Success.
デフォルトでは、MySQLには誰でもアクセスできる「test」という名前のデータベースがあります。これはテスト専用であり、生産環境に移行する前に削除する必要があります。
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.
特権テーブルを再読み込みすると、これまでに行ったすべての変更が即座に適用されます。
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <-- y  
Success.
すべて完了!

MySQLのセットアップはこれで安全になりました。

1.2 MariaDB 10のインストール

MariaDB-serverとclientをインストールするには、次のコマンドを実行します:

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

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

mysql_secure_installation

以下の質問が表示されます:

Enter current password for root (enter for none): <-- enterを押す  
Set root password? [Y/n] <-- y  
New password: <-- 新しいMariaDBのrootパスワードをここに入力  
Re-enter new 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のrootパスワードを入力します。結果は以下のスクリーンショットに似ているはずです:

Ubuntu 16.04でのMariaDBログイン

MariaDBシェルを終了するには、「quit」と入力してenterを押します。

2. Apacheウェブサーバーのインストール

Apache 2はUbuntuパッケージとして利用可能であるため、次のようにインストールできます:

apt-get -y install apache2

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

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

3. PHP 7のインストール

次のようにPHP 7とApache PHPモジュールをインストールできます:

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

次にApacheを再起動します:

systemctl restart apache2

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

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

nano /var/www/html/info.php

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

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

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

PHP 7のPHPINFO出力

ご覧のとおり、PHP 7.0は動作しており、サーバーAPI行に示されているようにApache 2.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

MySQL / MariaDBサポートを持つPHP

PHP 7は、上記のphpinfo()に示されているように、MySQL / MariaDBサポートを持っています。

6. PHPの速度を上げるためにOpcache + APCu PHPキャッシュをインストールする

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

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

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

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

次にApacheを再起動します:

systemctl restart apache2

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

PHPにインストールされたAPCu

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

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

7. ApacheでSSLウェブサイトを有効にする

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

サーバーで次のコマンドを実行して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接続をテストします。

FirefoxでのSSL警告を受け入れる

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

HTTPSモードでのApacheデフォルトページ

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

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

8. Let’s Encryptから無料の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)でそのドメイン名で到達可能である必要があります。ウェブサイトがインターネットから到達できない場合、Let’s Encrypt SSL証明書の作成は失敗します。

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をあなたのドメイン名に置き換えます。このコマンドは、いくつかの質問をするウィザードを開始します。

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

Let’s Encrypt SSL認証機関の利用規約に同意します。

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

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

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

8.1 Let’s Encrypt自動更新

Let’s Encrypt SSL証明書は、わずか80日間のみ有効です。したがって、必要に応じてSSL証明書を自動更新するためにcronジョブを設定します。コマンドは’letsencrypt renew’です。

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

crontab -e

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

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

ファイルを保存すると、cronジョブが有効になります。このcronジョブは、毎晩午前1時にLet’s Encryptの更新コマンドを呼び出します。このコマンドは、必要な場合にのみSSL証明書を更新します(期限切れの30日前)、毎晩実行しても問題ありません。

9. phpMyAdminのインストール

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

apt-get -y install phpmyadmin

重要:aptインストーラーは、いくつかの質問をします。その1つは、ウェブサーバーのタイプを選択することです。一般的な間違いは、ウェブサーバーのタイプがハイライトされているだけで選択されていないことです。aptメニューで項目を選択するには、タブまたはカーソルキーで項目に移動した後、スペースバーを押す必要があります。ハイライトするだけでは不十分です!

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

Web server to configure automatically: <-- オプションを選択:apache2  
Configure database for phpmyadmin with dbconfig-common? <-- Yes  
MySQL application password for phpmyadmin: <-- enterを押すと、aptが自動的にランダムなパスワードを作成します。

9.1 MariaDBでのPHPMyAdminへのrootアクセス

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

MariaDBは、rootユーザーに対して「unix_socket」というプラグインをデフォルトで有効にします。このプラグインは、rootユーザーがPHPMyAdminにログインできず、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にアクセスできます:

phpmyadminにログイン

PHPMyAdmin

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

このチュートリアルは、VMWareおよびVirtualboxと互換性のあるovf/ova形式の使用準備が整った仮想マシンイメージとして利用可能です。仮想マシンイメージは、次のログイン詳細を使用します:

SSH / シェルログイン

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

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

MySQLログイン

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

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

11 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。