A previous version of this tutorial was written by Brennan Bearnes.
はじめに
「LAMP」スタックはオープンソース ソフトウェアのグループで、通常はサーバーでダイナミック Web サイトと Web アプリをホストできるよう一緒にインストールされます。 この用語は、実際には、Apache Web サーバーを備えた Linux オペレーティング システムを表す頭字語です。
このガイドでは、Ubuntu 18.04 サーバーに LAMP スタックをインストールします。
前提条件
このチュートリアルを完了するには、非 root sudo
対応ユーザーアカウントおよび基本的なファイアウォールを備えた Ubuntu 18.04 サーバーを準備する必要があります。 これは、Ubuntu 18.04の初期サーバー設定ガイドを使用して設定することができます。
ステップ 1 – Apache のインストールとファイアウォールの更新
Apache Web サーバーは、世界で最も人気のある Web サーバーの 1 つです。
Ubuntuのパッケージマネージャ、apt
:
- sudo apt update
- sudo apt install apache2
を使用してApacheをインストールします。これはsudo
コマンドなので、これらの操作はルート権限で実行されます。
パスワードを入力すると、apt
はインストールする予定のパッケージと、それらがどれくらいの余分なディスクスペースを取るかを教えてくれます。
Adjust the Firewall to Allow Web Traffic
次に、最初のサーバー設定手順に従い、UFW ファイアウォールを有効にしたと仮定して、ファイアウォールが HTTP および HTTPS トラフィックを許可していることを確認します。 UFW に Apache 用のアプリケーション プロファイルがあることを次のように確認できます:
- sudo ufw app list
OutputAvailable applications: Apache Apache Full Apache Secure OpenSSH
プロファイルを見ると、ポート 80
と 443
へのトラフィックを有効にしていることがわかるはずです:
- sudo ufw app info "Apache Full"
OutputProfile: Apache FullTitle: Web Server (HTTP,HTTPS)Description: Apache v2 is the next generation of the omnipresent Apache webserver.Ports: 80,443/tcp
このプロファイルに対して HTTP および HTTPS トラフィックの入力を許可する。
- sudo ufw allow in "Apache Full"
すぐにスポットチェックを行い、すべてが計画通りに進んでいることを確認するには、WebブラウザーでサーバーのパブリックIPアドレスにアクセスします(パブリックIPアドレスの情報をまだ持っていない場合は、次の見出しの下の注記を参照してください):
http://your_server_ip
すると、Ubuntu 18.1 のデフォルトが表示されることでしょう。04のApacheウェブページが表示されますが、これは情報提供およびテスト用です。
このページが表示されたら、Web サーバーは正しくインストールされており、ファイアウォールからアクセスできます。
How To Find your Server’s Public IP Address
自分のサーバーのパブリック IP アドレスが分からない場合は、いくつかの方法で知ることができます。 通常、これは SSH 経由でサーバーに接続するために使用するアドレスです。
コマンドラインからこれを行うには、いくつかの異なる方法があります。 まず、iproute2
ツールを使って次のように入力して IP アドレスを取得します:
- ip addr show eth0 | grep inet | awk '{ print ; }' | sed 's/\/.*$//'
これで 2、3 行が返されるはずです。 これらはすべて正しいアドレスですが、お使いのコンピュータはこれらのうちの1つしか使用できないかもしれませんので、自由にそれぞれを試してみてください。
別の方法として、curl
ユーティリティを使って外部のパーティに連絡し、サーバがどう見られているかを教えてもらうという方法があります。 これは、特定のサーバーにあなたの IP アドレスが何であるかを問い合わせることで行われます。
- sudo apt install curl
- curl http://icanhazip.com
あなたの IP アドレスを取得するために使用した方法に関係なく、それを Web ブラウザのアドレスバーに入力してデフォルトの Apache ページを表示します。
ステップ 2 – MySQL
さて、Web サーバーを起動して実行したら、次は MySQL をインストールする番です。 MySQL はデータベース管理システムです。 基本的には、あなたのサイトが情報を保存できるデータベースを整理し、アクセスを提供します。
もう一度、apt
を使用してこのソフトウェアを取得し、インストールします:
- sudo apt install mysql-server
注意:この場合、sudo apt update
をコマンドの前に実行する必要はありません。 これは、最近Apacheをインストールするために上記のコマンドで実行したからです。 あなたのコンピュータのパッケージインデックスはすでに最新であるはずです。
このコマンドも、インストールされるパッケージのリストと、それらが消費するディスクスペースを表示します。 インストールが完了したら、MySQL にプリインストールされている簡単なセキュリティ スクリプトを実行して、危険なデフォルトをいくつか削除し、データベース システムへのアクセスをロックダウンします。 対話型スクリプトを次のように実行することで開始します。 有効にすると、指定された基準に一致しないパスワードは、MySQL によってエラーで拒否されます。 これは、phpMyAdmin の Ubuntu パッケージなど、MySQL のユーザー認証を自動的に構成するソフトウェアと組み合わせて弱いパスワードを使用する場合に問題が発生します。 検証を無効にしたままでも安全ですが、データベースの資格情報には常に強力で固有のパスワードを使用する必要があります。
「はい」の場合は Y
、有効にしないで続ける場合はその他の質問に答えます。 最強のレベルに 2
を入力した場合、数字、大文字、小文字、および特殊文字を含まないパスワード、または一般的な辞書の単語に基づいているパスワードを設定しようとすると、エラーが発生することに留意してください。
There are three levels of password validation policy:LOW Length >= 8MEDIUM Length >= 8, numeric, mixed case, and special charactersSTRONG Length >= 8, numeric, mixed case, special characters and dictionary filePlease enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
VALIDATE PASSWORD PLUGIN
を選択したかどうかに関係なく、サーバーは次に MySQL ルートユーザーのパスワードを選択および確認するよう求めます。 これは、MySQL の管理アカウントで、より大きな特権を持ちます。 これは、サーバー自体のルート アカウントに似ていると考えてください (ただし、今設定しているものは MySQL 固有のアカウントです)。 パスワード検証を有効にした場合、入力したルートパスワードのパスワード強度が表示され、サーバーはそのパスワードを変更するかどうかを尋ねます。 現在のパスワードでよければ、プロンプトで「no」にN
を入力します:
Using existing password for root.Estimated strength of the password: 100Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
残りの質問については、Y
を押し、各プロンプトでENTER
キーを叩きます。 これにより、いくつかの匿名ユーザーとテスト データベースが削除され、リモート root ログインが無効になり、これらの新しいルールがロードされて、MySQL はすぐにあなたが行った変更を尊重します。
Note that Ubuntu systems running MySQL 5.7 (and later versions), the root MySQL user is set to authenticate using the auth_socket
plugin by default instead with the password. これにより、多くの場合、セキュリティとユーザビリティが向上しますが、外部プログラム (例 phpMyAdmin) がユーザーにアクセスできるようにする必要がある場合、事態が複雑になることがあります。
ルートとして MySQL に接続する際にパスワードを使用したい場合、認証方法を auth_socket
から mysql_native_password
に変更する必要があります。 これを行うには、ターミナルから MySQL プロンプトを開きます。
- sudo mysql
次に、次のコマンドを使用して、各 MySQL ユーザー アカウントがどの認証方法を使用するかを確認します。 root アカウントがパスワードで認証されるように設定するには、次の ALTER USER
コマンドを実行します。
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
それから FLUSH PRIVILEGES
を実行し、グラント テーブルを再ロードして新しい変更を有効にするようにサーバーに指示します。
- FLUSH PRIVILEGES;
各ユーザーが採用する認証方法を再度確認し、ルートが auth_socket
プラグインを使用して認証されなくなったことを確認します:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+| user | authentication_string | plugin | host |+------------------+-------------------------------------------+-----------------------+-----------+| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost || mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost || mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost || debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |+------------------+-------------------------------------------+-----------------------+-----------+4 rows in set (0.00 sec)
この出力例で、ルート MySQL ユーザーがパスワードを使用して認証することが確認できます。 自分のサーバーでこれを確認したら、MySQL シェルを終了できます。
- exit
この時点で、データベースシステムは設定され、LAMP スタックの最終コンポーネントである PHP のインストールに進むことができます。 スクリプトを実行し、MySQL データベースに接続して情報を取得し、処理されたコンテンツを表示するために Web サーバーに渡します。
もう一度、apt
システムを利用して PHP をインストールします。 さらに、PHP コードが Apache サーバー下で実行され、MySQL データベースと通信できるように、今回はいくつかのヘルパー パッケージを含めます。
ほとんどの場合、ディレクトリが要求されたときにApacheがファイルを提供する方法を変更したいと思うことでしょう。 現在、ユーザがサーバにディレクトリを要求すると、Apache はまず index.html
という名前のファイルを探します。
これを行うには、以下のコマンドを入力して、root 権限でテキストエディタで dir.conf
ファイルを開きます:
- sudo nano /etc/apache2/mods-enabled/dir.conf
それは以下のようになります:
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm</IfModule>
このように、PHP インデックスファイル (上でハイライトされている) を DirectoryIndex
指定後の最初の位置に移動します:
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm</IfModule>
終了後、CTRL+X
を押して保存しファイルを終了してください。 Y
と入力して保存を確認し、ENTER
を押してファイルの保存場所を確認します。
この後、変更を認識させるために Apache ウェブサーバを再起動します。
- 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 Tue 2018-04-23 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
この状態出力を終了するには Q
を押してください。 PHP モジュールやライブラリの利用可能なオプションを見るには、apt search
の結果を less
にパイプします。これは、他のコマンドの出力をスクロールできるページャーです:
- apt search php- | less
矢印キーを使って上下にスクロールし、終了するには Q
を押してください。 それぞれについて短い説明が表示されます。
bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64 Tracks usage of TCP/IP and builds html files with graphsbluefish/bionic 2.2.10-1 amd64 advanced Gtk+ text editor for web and software developmentcacti/bionic 1.1.38+ds1-1 all web interface for graphing of monitoring systemsganglia-webfrontend/bionic 3.6.1-3 all cluster monitoring toolkit - web front-endgolang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all PHP-like Compression and Archive Extensions in Gohaserl/bionic 0.9.35-2 amd64 CGI scripting program for embedded environmentskdevelop-php-docs/bionic 5.2.1-1ubuntu2 all transitional package for kdevelop-phpkdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all transitional package for kdevelop-php-l10n…:
各モジュールが何をするかについて詳しく知るには、インターネットでそのモジュールについての情報を検索するとよいでしょう。 あるいは、次のように入力してパッケージの長い説明を見ます:
- apt show package_name
たくさんの出力がありますが、Description
というフィールドがあり、そこにはモジュールが提供する機能についての長い説明が書かれています。
たとえば、php-cli
モジュールが何をするかを調べるには、次のように入力します:
- apt show php-cli
その他の大量の情報とともに、次のようなものが見つかります:
Output…Description: 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 Ubuntu's default PHP version (currently 7.2).…
調べた後で、パッケージをインストールしたいと思ったら、他のソフトウェアに行ったように apt install
コマンドを使って行うことができます。
もし、php-cli
が必要なものだと判断したら、次のように入力します:
- sudo apt install php-cli
もし、複数のモジュールをインストールしたい場合は、apt install
コマンドの後にスペースで区切ってそれぞれのモジュールをリストアップします:
- sudo apt install package1 package2 ...
この時点で、LAMPスタックはインストールと設定が完了しています。 他のことをする前に、サーバの設定詳細を保存できるApacheバーチャルホストをセットアップすることをお勧めします。
ステップ 4 – バーチャル ホストの設定 (推奨)
Apache Web サーバーを使用する場合、バーチャル ホスト (Nginx のサーバー ブロックと同様) を使用して設定の詳細をカプセル化し、1 つのサーバーから複数のドメインをホストすることが可能です。 ここでは、your_domain というドメインを設定しますが、これを自分のドメイン名に置き換えてください。 DigitalOceanでのドメイン名の設定の詳細については、DigitalOcean DNSの紹介を参照してください。
Apache on Ubuntu 18.04 has one server block enabled by default that is configured to serve documents from the /var/www/html
directory. これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合、扱いにくくなる可能性があります。 /var/www/html
を変更する代わりに、 /var/www
内に your_domain サイト用のディレクトリ構造を作成し、 /var/www/html
はクライアントからの要求が他のサイトにマッチしない場合に提供されるデフォルトのディレクトリとしてそのままにしておきましょう。
次のように your_domain のディレクトリを作成します:
sudo mkdir /var/www/your_domain
次に、$USER
環境変数でディレクトリの所有権を割り当てます:
- sudo chown -R $USER:$USER /var/www/your_domain
unmask
値を変更していない場合、Web ルーツのパーミッションは正しいはずですが、タイプして確認することも可能です。
- sudo chmod -R 755 /var/www/your_domain
次に、nano
またはお好みのエディタを使用して、index.html
サンプル ページを作成します:
- nano /var/www/your_domain/index.html
内部に、次のサンプル HTML を追加します:
<html> <head> <title>Welcome to Your_domain!</title> </head> <body> <h1>Success! The your_domain server block is working!</h1> </body></html>
終了したらファイルを保存して閉じます。
このコンテンツを提供するために、Apache は正しいディレクティブで仮想ホストファイルを作成することが必要です。 /etc/apache2/sites-available/000-default.conf
にあるデフォルトの設定ファイルを直接修正する代わりに、 /etc/apache2/sites-available/your_domain.conf
に新しいものを作りましょう。
- sudo nano /etc/apache2/sites-available/your_domain.conf
以下の設定ブロックを貼り付けます。デフォルトと似ていますが、新しいディレクトリとドメイン名用に更新されています:
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>
ここで、DocumentRoot
を新しいディレクトリ、ServerAdmin
を your_domain サイト管理者がアクセスできるメールに更新したことに注意してください。 また、2つのディレクティブを追加しています。 ServerName
はこのバーチャルホストの定義にマッチするベースドメインを確立し、 ServerAlias
はベースネームであるかのようにマッチする更なる名前を定義しています。
終了したらファイルを保存して閉じます。
このファイルをa2ensite
ツールで有効にしましょう。
- sudo a2ensite your_domain.conf
000-default.conf
で定義されたデフォルトサイトを無効にします:
- sudo a2dissite 000-default.conf
次に、設定エラーがないかテストしてみましょう。
- sudo apache2ctl configtest
次の出力が表示されます:
OutputSyntax OK
変更を実装するために Apache を再起動します:
- sudo systemctl restart apache2
現在、Apache はドメイン名を提供しているはずです。
これで、バーチャルホストは完全にセットアップされました。 しかし、これ以上変更を加えたり、アプリケーションをデプロイする前に、対処すべき問題がある場合に備えて、PHP の設定を積極的にテストしておくとよいでしょう。
Step 5 – Web サーバー上での PHP 処理のテスト
システムが PHP に対して適切に設定されていることをテストするには、 info.php
という非常に基本的な PHP スクリプトを作ってください。
前のステップで作成したWebルートに、
- sudo nano /var/www/your_domain/info.php
を実行してファイルを作成すると、空のファイルが開かれます。
<?phpphpinfo();?>
終了したら、ファイルを保存して閉じます。
これで、WebサーバーがこのPHPスクリプトで生成したコンテンツを正しく表示できるかをテストすることができます。 試しに、Webブラウザでこのページにアクセスしてみてください。 サーバーのパブリック IP アドレスが再度必要になります。
アクセスしたいアドレスは次のとおりです:
http://your_domain/info.php
アクセスしたページは次のように見えるはずです:
このページは PHP から見たサーバーについての基本情報を提供します。 デバッグや設定が正しく適用されていることを確認するのに便利です。
このページがブラウザで表示される場合、PHP は期待通りに動作しています。
このファイルは実際に不正なユーザーにサーバーに関する情報を与える可能性があるので、テスト後はおそらく削除したいことでしょう。 これを行うには、次のコマンドを実行します。
- sudo rm /var/www/your_domain/info.php
後で情報に再度アクセスする必要がある場合は、いつでもこのページを再作成できます。
まとめ
さて、LAMP スタックがインストールされているので、次に何をするかについて多くの選択肢を持っています。 基本的に、ほとんどの種類の Web サイトおよび Web ソフトウェアをサーバーにインストールできるプラットフォームをインストールしました。
すぐにできる次のステップとして、Web サーバーへの接続が安全であることを確認し、HTTPS でサービスを提供する必要があります。
他の一般的なオプションは次のとおりです:
- インターネット上で最も人気のあるコンテンツ管理システムである WordPress をインストールする。
- PHPMyAdmin を設定して、Web ブラウザから MySQL データベースを管理する。
- SFTP を使用してサーバーとファイルを転送する方法について学ぶ。
コメントを残す