サーバー設定 · 2 min read · Dec 26, 2025
Ubuntu 18.04 (LTS) LAMPサーバーのチュートリアル(Apache、PHP 7.2、MySQL)
LAMPはLinux、Apache、MySQL、PHPの略です。このチュートリアルでは、Ubuntu 18.04 LTS(Bionic Beaver)サーバーにApacheウェブサーバーをPHP 7.2(mod_php)およびMySQL / MariaDBサポートとともにインストールし、Let’s EncryptでSSL証明書を設定する方法を示します。さらに、MySQL管理を容易にするためにPHPMyAdminをインストールします。LAMPセットアップは、Joomla、Wordpress、Drupalなどの人気CMSシステムの完璧な基盤です。
前提条件
このチュートリアルでは、ホスト名server1.example.comとIPアドレス192.168.1.100を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。
最小限のUbuntuサーバーセットアップをチュートリアルの基盤として使用することをお勧めします。これは、ウェブホスティング会社からのUbuntu 18.04最小インストールを含む仮想またはルートサーバーイメージであるか、または私たちの最小サーバーチュートリアルを使用してサーバーをゼロからインストールすることができます。
このチュートリアルのすべてのステップをroot権限で実行していますので、rootとしてログインしていることを確認してください:
sudo -s1. 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サーバーのデプロイメントを保護しています。ユーザーrootのパスワードを入力してください: <-- MySQLのrootパスワードを入力VALIDATE PASSWORD PLUGINを使用してパスワードをテストし、セキュリティを向上させることができます。パスワードの強度をチェックし、ユーザーが十分に安全なパスワードのみを設定できるようにします。VALIDATE PASSWORDプラグインを設定しますか?はいの場合はy|Yを押し、いいえの場合は他のキーを押してください:
既存のパスワードを使用しています。
rootのパスワードを変更しますか? ((はいの場合はy|Yを押し、いいえの場合は他のキーを押してください): <-- パスワード検証を有効にしたい場合は'y'を選択しますが、私はその機能が必要ないので、ここでは'n'を選択します。... スキップ中。
デフォルトでは、MySQLインストールには匿名ユーザーがあり、誰でもユーザーアカウントを作成せずにMySQLにログインできます。これはテスト専用であり、インストールを少しスムーズにするためのものです。
本番環境に移行する前に削除する必要があります。匿名ユーザーを削除しますか? (はいの場合はy|Yを押し、いいえの場合は他のキーを押してください): <-- y
成功。
通常、rootは「localhost」からのみ接続を許可されるべきです。これにより、誰かがネットワークからrootパスワードを推測できないようにします。リモートでのrootログインを禁止しますか? (はいの場合はy|Yを押し、いいえの場合は他のキーを押してください): <-- y
成功。デフォルトでは、MySQLには「test」という名前のデータベースがあり、誰でもアクセスできます。これもテスト専用であり、本番環境に移行する前に削除する必要があります。
テストデータベースとそのアクセスを削除しますか? (はいの場合はy|Yを押し、いいえの場合は他のキーを押してください): <-- y
- テストデータベースを削除中...
成功。- テストデータベースの権限を削除中...
成功。権限テーブルを再読み込みすると、これまでに行ったすべての変更が即座に有効になります。権限テーブルを今すぐ再読み込みしますか? (はいの場合はy|Yを押し、いいえの場合は他のキーを押してください): <-- y
成功。すべて完了!MySQLのセットアップはこれで安全になりました。
1.2 MariaDB 10のインストール
次のコマンドを実行してMariaDBサーバーとクライアントをインストールします:
apt-get -y install mariadb-server mariadb-client次に、MariaDBのrootパスワードを設定します。
mysql_secure_installation次の質問が表示されます:
現在のrootのパスワードを入力してください(なしの場合はEnterを押してください): <-- Enterを押す
rootパスワードを設定しますか? [Y/n] <-- y
新しいパスワード: <-- ここに新しいMariaDBのrootパスワードを入力
新しいパスワードを再入力してください: <-- パスワードを繰り返す
匿名ユーザーを削除しますか? [Y/n] <-- y
リモートでのrootログインを禁止しますか? [Y/n] <-- y
権限テーブルを今すぐ再読み込みしますか? [Y/n] <-- y1.3 MySQL/MariaDBのrootログインをテストする
「mysqlコマンド」を使用してMariaDBへのログインをテストします。
mysql -u root -pそして、上記で設定したMariaDBのrootパスワードを入力します。結果は以下のスクリーンショットに似ているはずです:

MySQL/MariaDBシェルを終了するには、「quit」と入力してEnterを押します。
2. Apacheウェブサーバーのインストール
Apache 2はUbuntuパッケージとして利用可能であるため、次のようにインストールできます:
apt-get -y install apache2次に、ブラウザをhttp://192.168.1.100に向けると、Apache2のデフォルトページ(動作中!)が表示されるはずです:

ApacheのデフォルトvhostのドキュメントルートはUbuntuの/var/www/htmlであり、メインの設定ファイルは/etc/apache2/apache2.confです。設定システムは/usr/share/doc/apache2/README.Debian.gzに完全に文書化されています。
3. PHP 7.2のインストール
次のようにPHP 7.2とApache PHPモジュールをインストールできます:
apt-get -y install php7.2 libapache2-mod-php7.2次に、Apacheを再起動します:
systemctl restart apache24. 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.2は動作しており、Server API行に示されているようにApache 2.0ハンドラーを介して動作しています。さらに下にスクロールすると、PHPで既に有効になっているすべてのモジュールが表示されます。MySQLはそこにリストされていないため、PHPにはまだMySQL / MariaDBサポートがありません。
5. PHPでMySQL / MariaDBサポートを取得する
PHPでMySQLサポートを取得するには、php7.2-mysqlパッケージをインストールできます。他のPHPモジュールもインストールすることをお勧めします。これらはアプリケーションに必要になるかもしれません。利用可能なPHPモジュールを次のように検索できます:
apt-cache search php7.2および
apt-cache search php-すべてのPHPパッケージがその名前にバージョン番号7.2を持っているわけではありません。
必要なものを選択し、次のようにインストールします:
apt-get -y install php7.2-mysql php7.2-curl php7.2-gd php7.2-intl php-pear php-imagick php7.2-imap php-memcache php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-mbstring php-gettext次に、Apache2を再起動します:
systemctl restart apache2
PHP 7.2には、上記の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.2-opcache php-apcuOpcacheがすでにインストールされている場合でも心配しないでください。
次に、Apacheを再起動します:
systemctl restart apache2今、ブラウザでhttp://192.168.1.100/info.phpを再読み込みし、モジュールセクションに再度スクロールします。そこにはたくさんの新しいモジュールが見つかるはずです:

もう必要ない場合は、info.phpファイルを削除することを忘れないでください。これはサーバーの機密情報を提供します。次のコマンドを実行してファイルを削除します。
rm -f /var/www/html/info.php7. 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接続をテストします。

サーバーのSSL証明書が「自己署名」SSL証明書であるため、SSL警告が表示されます。これは、ブラウザがデフォルトでこの証明書を信頼していないことを意味し、最初にセキュリティ警告を受け入れる必要があります。警告を受け入れると、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証明書でウェブサイトを保護する最初のステップは、python3-certbot-apacheパッケージをインストールすることです。次のコマンドを実行します:
apt-get -y install python3-certbot-apache次のステップでは、certbotクライアントプログラムを使用してLet’s EncryptからSSL証明書をリクエストします。このプロセス中に、Let’s Encryptサーバーは、certbotコマンドに提供するドメイン名を介してサーバーに接続しようとします。このドメイン名がすでにDNSでサーバーを指していることが重要です。そうしないと、ウェブサイトはポート80(http)でそのドメイン名からアクセスできません。ウェブサイトがインターネットからアクセスできない場合、Let’s Encrypt SSL証明書の作成は失敗します。
SSL証明書を作成する前に、vhost設定ファイルにドメイン名を設定します。デフォルトのvhostファイルをエディタで開きます:
nano /etc/apache2/sites-available/000-default.confそして、次の行を追加します:
ServerName example.com‘文書ルート’行のすぐ下に。example.comを自分のウェブサイトのドメイン名に置き換えます。
次に、このコマンドでSSL証明書を作成します:
certbot --apache -d example.comここでもexample.comを自分のドメイン名に置き換えます。このコマンドは、いくつかの質問を尋ねるウィザードを開始します。
このウェブサイトの管理者に連絡できるメールアドレスを入力してください。
Let’s Encrypt SSL認証機関の利用規約に同意します。
Certbotは、あなたのメールアドレスをElectronic Frontier Foundationと共有したいかどうかを尋ねます。ここでは、あなたの好みに応じて選択してください。
次に、非SSLリクエストをhttps://に自動的にリダイレクトするかどうかを選択します。私は、ウェブサイトがhttp://とhttps://の両方のバージョンで利用可能な場合に重複コンテンツの問題を避けるために、ここで「はい」を選択します。

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

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

8.1 Let’s Encryptの自動更新
Let’s Encrypt SSL証明書は、わずか80日間有効です。したがって、SSL証明書を自動更新するためのcronジョブが必要で、certbot –renewコマンドを実行します。
このcronジョブは、certbotをインストールすると自動的に設定されます。cronファイルは/etc/cron.d/certbotです。したがって、ここで何かをする必要はありません。cronジョブがどのように見えるかを知りたい場合は、次のコマンドを実行します:
/etc/cron.d/certbot結果は:
root@server1:~# cat /etc/cron.d/certbot
# /etc/cron.d/certbot: certbotパッケージのcrontabエントリ
#
# 上流では、1日に2回の更新を試みることを推奨しています
#
# 最終的には、これが証明書が取り消されていないことを検証する機会になります
# 有効期限が30日以内の場合にのみ更新が行われます。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew9. phpMyAdminのインストール
phpMyAdminは、MySQLデータベースを管理するためのウェブインターフェースです。インストールすることをお勧めします:
apt-get -y install phpmyadmin重要: aptインストーラーは、いくつかの質問を尋ねます。その1つは、ウェブサーバーの種類を選択することです。一般的な間違いは、ウェブサーバーの種類が強調表示されているだけで、選択されていないことです。aptメニューで項目を選択するには、タブまたはカーソルキーで項目に移動した後、スペースバーを押す必要があります。強調表示するだけでは不十分です!
次の質問が表示されます:
自動的に設定するウェブサーバー: <-- apache2オプションを選択
phpmyadminのdbconfig-commonでデータベースを設定しますか? <-- はい
phpmyadminのMySQLアプリケーションパスワード: <-- Enterを押すと、aptが自動的にランダムなパスワードを作成します。9.1 PHPMyAdminへのrootアクセス
MariaDBとMySQLは、デフォルトでrootユーザーに「unix_socket」というプラグインを有効にします。このプラグインは、rootユーザーがPHPMyAdminにログインできず、TCP接続がrootユーザーのMySQLに対して機能するのを防ぎます。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 / シェルログイン
ユーザー名: administrator
パスワード: howtoforge
このユーザーにはsudo権限があります。
MySQLログイン
ユーザー名: root
パスワード: howtoforge
VMのIPは192.168.1.100で、/etc/network/interfacesファイルで変更できます。仮想マシンを保護するために、上記のすべてのパスワードを変更してください。
11 リンク
- 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/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。