前書き
「LAMP」スタックは、サーバーが動的なWebサイトやWebアプリをホストできるようにするために通常一緒にインストールされるオープンソースソフトウェアのグループです。 この用語は、実際にはLinuxオペレーティングシステムとApacheWebサーバーを表す頭字語です。 サイトデータはMySQLデータベースに保存され、動的コンテンツはPHPによって処理されます。
このガイドでは、Ubuntu 16.04ドロップレットにLAMPスタックをインストールします。 Ubuntuは、最初の要件であるLinuxオペレーティングシステムを満たします。
前提条件
このガイドを開始する前に、サーバーにsudo
特権が設定されたroot以外のユーザーアカウントを用意しておく必要があります。 initial server setup for Ubuntu 16.04のステップ1〜4を完了することで、これを行う方法を学ぶことができます。
ステップ1:Apacheをインストールしてファイアウォールで許可する
Apache Webサーバーは、世界で最も人気のあるWebサーバーの1つです。 十分に文書化されており、ウェブの歴史の大半で広く使用されているため、ウェブサイトをホストするためのデフォルトの選択肢として最適です。
Ubuntuのパッケージマネージャーapt
を使用してApacheを簡単にインストールできます。 パッケージマネージャーを使用すると、Ubuntuが管理するリポジトリからほとんどのソフトウェアを簡単にインストールできます。 how to use apt
について詳しくは、こちらをご覧ください。
目的のために、次のコマンドを入力して開始できます。
sudo apt-get update
sudo apt-get install apache2
sudo
コマンドを使用しているため、これらの操作はroot権限で実行されます。 意図を確認するために、通常のユーザーのパスワードを求められます。
パスワードを入力すると、apt
は、インストールする予定のパッケージと、それらが使用する追加のディスク容量を示します。 Yを押し、Enterを押して続行すると、インストールが続行されます。
グローバルServerNameを設定して構文警告を抑制する
次に、/etc/apache2/apache2.conf
ファイルに1行追加して、警告メッセージを抑制します。 無害ですが、ServerName
をグローバルに設定しないと、Apache構成で構文エラーをチェックするときに次の警告が表示されます。
sudo apache2ctl configtest
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
テキスト編集でメイン構成ファイルを開きます。
sudo nano /etc/apache2/apache2.conf
内部のファイルの下部に、プライマリドメイン名を指すServerName
ディレクティブを追加します。 サーバーに関連付けられたドメイン名がない場合は、サーバーのパブリックIPアドレスを使用できます。
Note
[.note]#サーバーのIPアドレスがわからない場合は、how to find your server’s public IP addressのセクションにスキップして見つけてください。
#
/etc/apache2/apache2.conf
. . .
ServerName server_domain_or_IP
完了したら、ファイルを保存して閉じます。
次に、次のように入力して構文エラーを確認します。
sudo apache2ctl configtest
グローバルServerName
ディレクティブを追加したので、表示されるのは次のとおりです。
OutputSyntax OK
Apacheを再起動して、変更を実装します。
sudo systemctl restart apache2
これで、ファイアウォールの調整を開始できます。
ファイアウォールを調整してWebトラフィックを許可する
次に、サーバーの初期セットアップ手順に従ってUFWファイアウォールを有効にしたと仮定して、ファイアウォールがHTTPおよびHTTPSトラフィックを許可していることを確認します。 UFWにApacheのアプリケーションプロファイルがあることを確認できます。
sudo ufw app list
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
Apache Full
プロファイルを見ると、ポート80および443へのトラフィックが有効になっていることがわかります。
sudo ufw app info "Apache Full"
OutputProfile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
このプロファイルの着信トラフィックを許可:
sudo ufw allow in "Apache Full"
WebブラウザーでサーバーのパブリックIPアドレスにアクセスすることで、すぐにスポットチェックを実行して、すべてが計画どおりに行われたことを確認できます(この情報がない場合は、パブリックIPアドレスが何であるかを確認するために次の見出しの下のメモを参照してください)既に):
http://your_server_IP_address
デフォルトのUbuntu 16.04 Apache Webページが表示されます。これは、情報提供およびテスト目的で表示されます。 これは次のようになります。
このページが表示される場合、Webサーバーは正しくインストールされており、ファイアウォールを介してアクセスできます。
サーバーのパブリックIPアドレスを見つける方法
サーバーのパブリックIPアドレスがわからない場合は、いくつかの方法で見つけることができます。 通常、これはSSH経由でサーバーに接続するために使用するアドレスです。
コマンドラインから、これをいくつかの方法で見つけることができます。 まず、iproute2
ツールを使用して、次のように入力して住所を取得できます。
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
これにより、2〜3行戻ります。 これらはすべて正しいアドレスですが、お使いのコンピューターはそのうちの1つしか使用できない可能性があるため、お気軽に各アドレスを試してください。
別の方法は、curl
ユーティリティを使用して外部の関係者に連絡し、itがサーバーをどのように認識しているかを通知することです。 これを行うには、特定のサーバーにIPアドレスを尋ねます。
sudo apt-get install curl
curl http://icanhazip.com
IPアドレスを取得する方法に関係なく、Webブラウザーのアドレスバーに入力してサーバーにアクセスできます。
ステップ2:MySQLをインストールする
これでWebサーバーが稼働しました。MySQLをインストールします。 MySQLはデータベース管理システムです。 基本的に、サイトが情報を保存できるデータベースを整理し、アクセスを提供します。
ここでも、apt
を使用してソフトウェアを取得してインストールできます。 今回は、コンポーネントが相互に通信できるようにする他の「ヘルパー」パッケージもインストールします。
sudo apt-get install mysql-server
[.note]#Note:この場合、コマンドの前にsudo apt-get update
を実行する必要はありません。 これは、最近Apacheをインストールするコマンドで実行したためです。 コンピューターのパッケージインデックスはすでに最新である必要があります。
#
繰り返しますが、インストールされるパッケージのリストと、それらが占有するディスク容量が表示されます。 続行するには、Yを入力してください。
インストール中に、サーバーからMySQLの「root」ユーザーのパスワードを選択して確認するように求められます。 これは、権限が強化されたMySQLの管理アカウントです。 サーバー自体のルートアカウントに似ていると考えてください(ただし、現在構成しているアカウントはMySQL固有のアカウントです)。 これが強力で一意のパスワードであることを確認し、空白のままにしないでください。
インストールが完了したら、いくつかの危険なデフォルトを削除し、データベースシステムへのアクセスを少し制限する簡単なセキュリティスクリプトを実行します。 次を実行して、インタラクティブスクリプトを開始します。
mysql_secure_installation
MySQLルートアカウントに設定したパスワードの入力を求められます。 次に、VALIDATE PASSWORD PLUGIN
を構成するかどうかを尋ねられます。
[.warning]#Warning:この機能を有効にすることは、判断の呼びかけのようなものです。 有効にすると、指定された基準に一致しないパスワードがMySQLによって拒否され、エラーが発生します。 これは、phpMyAdminのUbuntuパッケージなど、MySQLユーザー資格情報を自動的に構成するソフトウェアと組み合わせて弱いパスワードを使用すると問題が発生します。 検証を無効のままにしておくのは安全ですが、データベースの資格情報には常に強力で一意のパスワードを使用する必要があります。
#
はいの場合はyと答え、有効にせずに続行する場合は他の何かを答えます。
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:
パスワード検証のレベルを選択するよう求められます。 最強レベルの2を入力すると、数字、大文字、小文字、特殊文字を含まない、または一般的な辞書に基づくパスワードを設定しようとすると、エラーが発生することに注意してください。言葉。
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: 1
パスワード検証を有効にした場合、既存のルートパスワードのパスワード強度が表示され、そのパスワードを変更するかどうかを尋ねられます。 現在のパスワードに問題がない場合は、プロンプトで「いいえ」にnを入力します。
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
残りの質問については、Yを押し、各プロンプトでEnterキーを押す必要があります。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモートルートログインが無効になり、これらの新しいルールがロードされ、MySQLが行った変更がすぐに反映されます。
この時点で、データベースシステムがセットアップされ、先に進むことができます。
ステップ3:PHPをインストールする
PHPは、動的コンテンツを表示するコードを処理するセットアップのコンポーネントです。 スクリプトを実行し、MySQLデータベースに接続して情報を取得し、処理されたコンテンツをWebサーバーに渡して表示できます。
もう一度、apt
システムを利用してコンポーネントをインストールできます。 PHPコードをApacheサーバーで実行してMySQLデータベースと通信できるように、いくつかのヘルパーパッケージも含める予定です。
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
これにより、PHPが問題なくインストールされます。 これをすぐにテストします。
ほとんどの場合、ディレクトリが要求されたときにApacheがファイルを提供する方法を変更します。 現在、ユーザーがサーバーにディレクトリを要求すると、Apacheは最初にindex.html
というファイルを探します。 WebサーバーにPHPファイルを優先するように指示したいので、最初にApacheにindex.php
ファイルを検索させます。
これを行うには、次のコマンドを入力して、root権限でテキストエディタでdir.conf
ファイルを開きます。
sudo nano /etc/apache2/mods-enabled/dir.conf
これは次のようになります。
/etc/apache2/mods-enabled/dir.conf
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
上で強調表示されているPHPインデックスファイルを、次のようにDirectoryIndex
指定の後の最初の位置に移動します。
/etc/apache2/mods-enabled/dir.conf
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
終了したら、Ctrl-Xを押してファイルを保存して閉じます。 Yと入力して保存を確認してから、Enterを押してファイルの保存場所を確認する必要があります。
この後、変更を認識させるためにApache Webサーバーを再起動する必要があります。 これを行うには、次のように入力します。
sudo systemctl restart apache2
systemctl
を使用して、apache2
サービスのステータスを確認することもできます。
sudo systemctl status apache2
Sample Output● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago
Docs: man:systemd-sysv-generator(8)
Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 512)
CGroup: /system.slice/apache2.service
├─13623 /usr/sbin/apache2 -k start
├─13626 /usr/sbin/apache2 -k start
├─13627 /usr/sbin/apache2 -k start
├─13628 /usr/sbin/apache2 -k start
├─13629 /usr/sbin/apache2 -k start
└─13630 /usr/sbin/apache2 -k start
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server...
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.
PHPモジュールのインストール
PHPの機能を強化するために、オプションでいくつかの追加モジュールをインストールできます。
PHPモジュールとライブラリで使用可能なオプションを確認するには、apt-cache search
の結果をless
にパイプします。これは、他のコマンドの出力をスクロールできるページャーです。
apt-cache search php- | less
矢印キーを使用して上下にスクロールし、qを使用して終了します。
結果は、インストール可能なすべてのオプションコンポーネントです。 それぞれの簡単な説明が表示されます:
libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:
各モジュールの機能に関する詳細情報を取得するには、インターネットを検索するか、次のように入力してパッケージの長い説明を見ることができます。
apt-cache show package_name
モジュールが提供する機能のより長い説明があるDescription-en
と呼ばれる1つのフィールドで、多くの出力があります。
たとえば、php-cli
モジュールの機能を確認するには、次のように入力します。
apt-cache show php-cli
大量の他の情報とともに、次のようなものが見つかります。
Output…
Description-en: command-line interpreter for the PHP scripting language (default)
This package provides the /usr/bin/php command interpreter, useful for
testing PHP scripts from a shell or performing general shell scripting tasks.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
.
This package is a dependency package, which depends on Debian's default
PHP version (currently 7.0).
…
調査の結果、パッケージをインストールすることにした場合は、他のソフトウェアで行っているように、apt-get install
コマンドを使用してインストールできます。
php-cli
が必要であると判断した場合は、次のように入力できます。
sudo apt-get install php-cli
複数のモジュールをインストールする場合は、次のように、apt-get install
コマンドに従って、スペースで区切って各モジュールをリストすることでインストールできます。
sudo apt-get install package1 package2 ...
この時点で、LAMPスタックがインストールおよび構成されます。 それでも、PHPをテストする必要があります。
ステップ4:WebサーバーでPHP処理をテストする
システムがPHP用に適切に構成されていることをテストするために、非常に基本的なPHPスクリプトを作成できます。
このスクリプトをinfo.php
と呼びます。 Apacheがファイルを見つけてそれを正しく提供するためには、「webルート」と呼ばれる非常に特定のディレクトリに保存する必要があります。
Ubuntu 16.04では、このディレクトリは/var/www/html/
にあります。 次のように入力して、その場所にファイルを作成できます。
sudo nano /var/www/html/info.php
これにより、空のファイルが開きます。 有効なPHPコードである次のテキストをファイル内に配置します。
info.php
終了したら、ファイルを保存して閉じます。
これで、WebサーバーがPHPスクリプトによって生成されたコンテンツを正しく表示できるかどうかをテストできます。 これを試すには、Webブラウザでこのページにアクセスするだけです。 サーバーのパブリックIPアドレスが再び必要になります。
訪問するアドレスは次のとおりです。
http://your_server_IP_address/info.php
訪れるページは次のようになります。
このページは基本的に、PHPの観点からサーバーに関する情報を提供します。 デバッグや、設定が正しく適用されていることを確認するのに役立ちます。
これが成功した場合、PHPは期待どおりに機能しています。
実際にサーバーに関する情報を許可されていないユーザーに提供する可能性があるため、このテスト後にこのファイルを削除することをお勧めします。 これを行うには、次のように入力できます。
sudo rm /var/www/html/info.php
後で情報に再度アクセスする必要がある場合は、いつでもこのページを再作成できます。
結論
LAMPスタックがインストールされたので、次に何をするかについて多くの選択肢があります。 基本的に、サーバーにほとんどの種類のWebサイトとWebソフトウェアをインストールできるプラットフォームをインストールしました。
次のステップとして、HTTPS経由でWebサーバーに接続することにより、Webサーバーへの接続が保護されていることを確認する必要があります。 ここでの最も簡単なオプションは、use Let’s Encryptを使用して、無料のTLS / SSL証明書でサイトを保護することです。
その他の一般的なオプションは次のとおりです。
-
Install Wordpressは、インターネット上で最も人気のあるコンテンツ管理システムです。
-
Set Up PHPMyAdminは、WebブラウザからMySQLデータベースを管理するのに役立ちます。
-
データベースを管理するためのLearn more about MySQL。
-
サーバーとの間でファイルを転送するためのLearn how to use SFTP。
Note:上記のリンクを16.04ドキュメントに更新します。