Linux、Apache、MariaDB、PHP(LAMP)スタックをDebian9にインストールする方法
序章
「LAMP」スタックは、サーバーが動的なWebサイトやWebアプリをホストできるようにするために通常一緒にインストールされるオープンソースソフトウェアのグループです。 この用語は、実際には LinuxオペレーティングシステムとApacheWebサーバーを表す頭字語です。 サイトデータはM ariaDBデータベースに保存され、動的コンテンツは PHPによって処理されます。
このガイドでは、Debian9サーバーにLAMPスタックをインストールします。
前提条件
このチュートリアルを完了するには、ルート以外のsudo
対応のユーザーアカウントと基本的なファイアウォールを備えたDebian9サーバーが必要です。 これは、Debian9の初期サーバーセットアップガイドを使用して構成できます。
ステップ1—Apacheのインストールとファイアウォールの更新
Apache Webサーバーは、世界で最も人気のあるWebサーバーの1つです。 これは十分に文書化されており、Webの歴史の多くで広く使用されているため、Webサイトをホストするための優れたデフォルトの選択肢となっています。
Debianのパッケージマネージャーapt
を使用してApacheをインストールします。
sudo apt update sudo apt install apache2
これはsudo
コマンドであるため、これらの操作はroot権限で実行されます。 それはあなたの意図を確認するためにあなたの通常のユーザーのパスワードを尋ねます。
パスワードを入力すると、apt
は、インストールする予定のパッケージと、それらが使用する追加のディスク容量を通知します。 Y
を押し、ENTER
を押して続行すると、インストールが続行されます。
次に、UFWファイアウォールをインストールして有効にすることにより、サーバーの初期設定手順に従ったと仮定して、ファイアウォールがHTTPおよびHTTPSトラフィックを許可していることを確認します。
Debian 9にインストールすると、UFWにはファイアウォール設定を微調整するために使用できるアプリプロファイルがロードされます。 次のコマンドを実行して、アプリケーションプロファイルの完全なリストを表示します。
sudo ufw app list
WWW
プロファイルは、Webサーバーが使用するポートを管理するために使用されます。
OutputAvailable applications: . . . WWW WWW Cache WWW Full WWW Secure . . .
WWW Full
プロファイルを調べると、ポート80
および443
へのトラフィックが有効になっていることがわかります。
sudo ufw app info "WWW Full"
OutputProfile: WWW Full Title: Web Server (HTTP,HTTPS) Description: Web Server (HTTP,HTTPS) Ports: 80,443/tcp
このプロファイルの着信HTTPおよびHTTPSトラフィックを許可します。
sudo ufw allow in "WWW Full"
WebブラウザでサーバーのパブリックIPアドレスにアクセスすると、すぐにスポットチェックを実行して、すべてが計画どおりに行われたことを確認できます。
http://your_server_ip
情報提供とテストの目的でそこにあるデフォルトのDebian9ApacheWebページが表示されます。 次のようになります。
このページが表示されている場合は、Webサーバーが正しくインストールされ、ファイアウォールを介してアクセスできるようになっています。
サーバーのパブリックIPアドレスがわからない場合は、いくつかの方法で見つけることができます。 通常、これはSSH経由でサーバーに接続するために使用するアドレスです。
コマンドラインからこれを行うには、いくつかの異なる方法があります。 まず、iproute2
ツールを使用して、次のように入力してIPアドレスを取得できます。
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
これにより、2行または3行戻ります。 これらはすべて正しいアドレスですが、コンピュータで使用できるのは1つだけである可能性があるため、それぞれを試してみてください。
別の方法は、curl
ユーティリティを使用して外部の関係者に連絡し、itがサーバーをどのように認識しているかを通知することです。 これは、特定のサーバーにIPアドレスを尋ねることによって行われます。
sudo apt install curl curl http://icanhazip.com
IPアドレスの取得に使用する方法に関係なく、IPアドレスをWebブラウザのアドレスバーに入力して、デフォルトのApacheページを表示します。
ステップ2—MariaDBをインストールする
Webサーバーが稼働しているので、MariaDBをインストールします。 MariaDBはデータベース管理システムです。 基本的に、それはあなたのサイトが情報を保存できるデータベースを整理し、データベースへのアクセスを提供します。
MariaDBは、コミュニティで構築されたMySQLのフォークです。 Debian9ではデフォルトのMySQLサーバーはMariaDB10.1であり、MySQLのインストールに通常使用されるmysql-server
パッケージは、実際にMariaDBをインストールする移行パッケージです。 ただし、プログラムの実際のパッケージmariadb-server
を使用してMariaDBをインストールすることをお勧めします。
ここでも、apt
を使用して、このソフトウェアを入手してインストールします。
sudo apt install mariadb-server
注:この場合、コマンドの前にsudo apt update
を実行する必要はありません。 これは、Apacheをインストールするために上記のコマンドで最近実行したためであり、コンピューターのパッケージインデックスはすでに最新である必要があります。
このコマンドも、インストールされるパッケージのリストと、それらが使用するディスク容量を表示します。 Y
と入力して続行します。
インストールが完了したら、MariaDBがプリインストールされている簡単なセキュリティスクリプトを実行します。これにより、安全でないデフォルト設定が削除され、データベースシステムへのアクセスがロックされます。 次のコマンドを実行して、インタラクティブスクリプトを開始します。
sudo mysql_secure_installation
これにより、MariaDBインストールのセキュリティオプションにいくつかの変更を加えることができる一連のプロンプトが表示されます。 最初のプロンプトでは、現在のデータベースrootのパスワードを入力するように求められます。 これは、特権が強化されたMariaDBの管理アカウントです。 サーバー自体のrootアカウントに似ていると考えてください(ただし、現在構成しているのはMariaDB固有のアカウントです)。 MariaDBをインストールしたばかりで、まだ構成を変更していないため、このパスワードは空白になります。プロンプトでENTER
を押すだけです。
次のプロンプトでは、データベースrootパスワードを設定するかどうかを尋ねられます。 N
と入力し、ENTER
を押します。 Debianでは、MariaDBの root アカウントは自動システムメンテナンスと密接に関連しているため、そのアカウントに設定されている認証方法を変更しないでください。 そうすることで、管理者アカウントへのアクセスを削除することにより、パッケージの更新によってデータベースシステムが破壊される可能性があります。 後で、ソケット認証がユースケースに適していない場合に、パスワードアクセス用に追加の管理者アカウントをオプションで設定する方法について説明します。
そこから、Y
、次にENTER
を押して、後続のすべての質問のデフォルトを受け入れることができます。 これにより、一部の匿名ユーザーとテストデータベースが削除され、リモート root ログインが無効になり、これらの新しいルールが読み込まれるため、MariaDBは行った変更をすぐに尊重します。
Debianシステムへの新規インストールでは、 root MariaDBユーザーは、パスワードではなく、デフォルトでunix_socket
プラグインを使用して認証するように設定されています。 これにより、多くの場合、セキュリティと使いやすさが向上しますが、外部プログラム(phpMyAdminなど)の管理者権限を許可する必要がある場合は、事態が複雑になる可能性もあります。
サーバーはログローテーションやサーバーの起動と停止などのタスクにrootアカウントを使用するため、rootアカウントの認証の詳細を変更しないことをお勧めします。 /etc/mysql/debian.cnf
でアカウントのクレデンシャルを変更すると、最初は機能する可能性がありますが、パッケージの更新によってこれらの変更が上書きされる可能性があります。 パスワードベースのアクセスを設定する必要がある場合、パッケージメンテナは、 root アカウントを変更する代わりに、別の管理者アカウントを作成することをお勧めします。
そのために、 root アカウントと同じ機能を備えた、パスワード認証用に構成されたadmin
という新しいアカウントを作成します。 これを行うには、ターミナルからMariaDBプロンプトを開きます。
sudo mariadb
これで、root権限とパスワードベースのアクセス権を持つ新しいユーザーを作成できます。 好みに合わせてユーザー名とパスワードを変更します。
GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
特権をフラッシュして、現在のセッションで保存され、使用可能であることを確認します。
FLUSH PRIVILEGES;
これに続いて、MariaDBシェルを終了します。
exit
これで、新しい管理ユーザーとしてデータベースにアクセスするときはいつでも、次のコマンドを使用して設定したパスワードでそのユーザーとして認証する必要があります。
mariadb -u admin -p
この時点で、データベースシステムがセットアップされ、LAMPスタックの最後のコンポーネントであるPHPのインストールに進むことができます。
ステップ3—PHPのインストール
PHPは、動的コンテンツを表示するコードを処理するセットアップのコンポーネントです。 スクリプトを実行し、MariaDBデータベースに接続して情報を取得し、処理されたコンテンツをWebサーバーに渡して表示することができます。
もう一度、apt
システムを利用してPHPをインストールします。 さらに、PHPコードをApacheサーバーで実行し、MariaDBデータベースと通信できるように、今回はいくつかのヘルパーパッケージを含めます。
sudo apt install php libapache2-mod-php 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
<IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule>
次のように、PHPインデックスファイル(上で強調表示)をDirectoryIndex
仕様の後の最初の位置に移動します。
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule>
終了したら、CTRL+X
を押してファイルを保存して閉じます。 Y
と入力して保存を確認し、ENTER
を押してファイルの保存場所を確認します。
この後、変更が認識されるように、ApacheWebサーバーを再起動します。 これを入力してこれを行います:
sudo systemctl restart apache2
systemctl
を使用して、apache2
サービスのステータスを確認することもできます。
sudo systemctl status apache2
Sample Output● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS) Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 22221 (apache2) Tasks: 6 (limit: 4915) CGroup: /system.slice/apache2.service ├─22221 /usr/sbin/apache2 -k start ├─22222 /usr/sbin/apache2 -k start ├─22223 /usr/sbin/apache2 -k start ├─22224 /usr/sbin/apache2 -k start ├─22225 /usr/sbin/apache2 -k start └─22226 /usr/sbin/apache2 -k start
PHPの機能を強化するために、いくつかの追加モジュールをインストールするオプションがあります。 PHPモジュールとライブラリで使用可能なオプションを確認するには、apt search
の結果をless
にパイプします。これは、他のコマンドの出力をスクロールできるページャーです。
apt search php- | less
矢印キーを使用して上下にスクロールし、Q
を押して終了します。
結果は、インストールできるすべてのオプションのコンポーネントです。 それぞれについて簡単に説明します。
OutputSorting... Full Text Search... bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64 Tracks usage of TCP/IP and builds html files with graphs bluefish/stable 2.2.9-1+b1 amd64 advanced Gtk+ text editor for web and software development cacti/stable 0.8.8h+ds1-10 all web interface for graphing of monitoring systems cakephp-scripts/stable 2.8.5-1 all rapid application development framework for PHP (scripts) ganglia-webfrontend/stable 3.6.1-3 all cluster monitoring toolkit - web front-end haserl/stable 0.9.35-2+b1 amd64 CGI scripting program for embedded environments kdevelop-php-docs/stable 5.0.3-1 all transitional package for kdevelop-php kdevelop-php-docs-l10n/stable 5.0.3-1 all transitional package for kdevelop-php-l10n … :
各モジュールの機能の詳細については、インターネットでモジュールの詳細を検索できます。 または、次のように入力して、パッケージの詳細な説明を確認します。
apt show package_name
モジュールが提供する機能のより長い説明があるDescription
と呼ばれる1つのフィールドで、多くの出力があります。
たとえば、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 Debian's default PHP version (currently 7.0). …
調査の結果、パッケージをインストールすることにした場合は、他のソフトウェアの場合と同じようにapt install
コマンドを使用してインストールできます。
php-cli
が必要なものであると判断した場合は、次のように入力できます。
sudo apt install php-cli
複数のモジュールをインストールする場合は、次のようにapt install
コマンドに従って、スペースで区切って各モジュールをリストすることでインストールできます。
sudo apt install package1 package2 ...
この時点で、LAMPスタックがインストールおよび構成されています。 ただし、これ以上変更を加えたり、アプリケーションをデプロイしたりする前に、対処する必要のある問題がある場合に備えて、PHP構成を事前にテストしておくと役立ちます。
ステップ4—WebサーバーでのPHP処理のテスト
システムがPHP用に適切に構成されていることをテストするには、info.php
という非常に基本的なPHPスクリプトを作成します。 Apacheがこのファイルを見つけて正しく提供するには、 webrootと呼ばれる非常に特定のディレクトリに保存する必要があります。
Debian 9では、このディレクトリは/var/www/html/
にあります。 次のコマンドを実行して、その場所にファイルを作成します。
sudo nano /var/www/html/info.php
これにより、空のファイルが開きます。 ファイル内に、有効なPHPコードである次のテキストを追加します。
/var/www/html/info.php
<?php phpinfo(); ?>
終了したら、ファイルを保存して閉じます。
これで、WebサーバーがこのPHPスクリプトによって生成されたコンテンツを正しく表示できるかどうかをテストできます。 これを試すには、Webブラウザでこのページにアクセスしてください。 サーバーのパブリックIPアドレスが再度必要になります。
訪問したいアドレスは次のとおりです。
http://your_server_ip/info.php
表示されるページは次のようになります。
このページでは、PHPの観点からサーバーに関する基本的な情報を提供します。 デバッグや、設定が正しく適用されていることを確認するのに役立ちます。
このページがブラウザに表示されている場合、PHPは期待どおりに機能しています。
このファイルは、許可されていないユーザーにサーバーに関する情報を実際に提供する可能性があるため、このテストの後で削除することをお勧めします。 これを行うには、次のコマンドを実行します。
sudo rm /var/www/html/info.php
後で情報に再度アクセスする必要がある場合は、いつでもこのページを再作成できます。
結論
LAMPスタックがインストールされたので、次に何をするかについて多くの選択肢があります。 基本的に、サーバーにほとんどの種類のWebサイトとWebソフトウェアをインストールできるプラットフォームをインストールしました。