環境
マシン環境 | Hyper-V仮想マシン |
OS | ubuntu18.04LTS |
参考にしたサイト | https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-ubuntu-18-04 |
Apacheのインストールとファイアウォールの更新
Apacheのインストール
Ubuntuのパッケージマネージャを使用してApacheをインストールします。
sudo apt update
sudo apt install apache2
”sudo”はroot権限での実行ですので、実行の意図を確認するためにパスワードを尋ねられます。
ファイアウォールを調整
利用可能なアプリケーションを確認してみます。
sudo ufw app list
[sudo] chiba のパスワード:
利用可能なアプリケーション:
Apache
Apache Full
Apache Secure
CUPS
OpenSSH
Apache Fullを見てみましょう。
sudo ufw app info "Apache Full"
プロファイル: Apache Full
タイトル: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
HTTPおよびHTTPSのトラフィックを許可します。
sudo ufw allow in "Apache Full"
これでApacheServerが外部に公開されるようになりました。
http://your_server_ip
仮想ホストの設定(推奨)
Apache Webサーバーを使用する場合、仮想ホストを使用して、構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストすることができます。
Ubuntu 18.04のApacheでは、/var/www/htmlディレクトリからドキュメントを提供するように構成されています。
これは単一のサイトではうまくいきますが、複数のサイトをホストしていると扱いにくくなる可能性があります。
”/var/www/”の下にドメインのディレクトリ構造を作成します。(話を現実のものとするため、ダイナミックDNSである”myDNS”でofficeyuai.0am.jpというドメインを取得しました)
sudo mkdir -p /var/www/officeyuai.0am.jp/html
次に、ディレクトリの所有権を$USER環境変数を割り当て,パーミッションを設定します。
sudo chown -R $USER:$USER /var/www/officeyuai.0am.jp/html
sudo chmod -R 755 /var/www/officeyuai.0am.jp
新しく作成したディレクトリに表示用の”index.html”ファイルを作成します。
sudo nano /var/www/officeyuai.0am.jp/html/index.html
内容は以下のようにしておきます。
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>
入力したらファイルを保存して閉じます。
新しい仮想ホスト用の設定ファイルを作成します。
sudo nano /etc/apache2/sites-available/officeyuai.0am.jp.conf
内容を以下のようにします。
<VirtualHost *:80>
ServerAdmin admin@officeyuai.0am.jp
ServerName officeyuai.0am.jp
ServerAlias www.officeyuai.0am.jp
DocumentRoot /var/www/officeyuai.0am.jp/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
a2ensiteツールを使ってファイルを有効にします・
sudo a2ensite officeyuai.0am.jp.conf
sudo a2dissite 000-default.conf
次に、設定エラーをテストします。
sudo apache2ctl configtest
Output
Syntax OK
Apacheを再起動します。
sudo systemctl restart apache2
ブラウザからアクセスします。
http://your_server_ip
MySQLのインストール
再度ターミナルから以下を実行します。
sudo apt install mysql-server
インストールが完了したら、MySQLにあらかじめインストールされているセキュリティスクリプトを実行します。
sudo mysql_secure_installation
スクリプトが終了したら、認証方式の変更を行います。
sudo mysql
sudoでmysqlに入ります。
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *E57A7F9D17090828749C88D3669FF98394CE6780 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
rootがauth_socket pluginになっていますので、通常のパスワード認証に変更します。
mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
再度”SELECT user,authentication_string,plugin,host FROM mysql.user;
”を実行してみます。
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *E57A7F9D17090828749C88D3669FF98394CE6780 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
パスワード認証に代わっています。
PHPのインストール
PHPは動的コンテンツを表示するコードを処理する設定のコンポーネントです。
スクリプトを実行し、MySQLデータベースに接続して情報を取得し、処理されたコンテンツをWebサーバーに渡して表示することができます。
いくつかのヘルパーパッケージを組み込んで、PHPコードをApacheサーバーの下で実行し、MySQLデータベースと対話できるようにします。
sudo apt install php libapache2-mod-php php-mysql
apacheが最初に探すファイルを”index.php”にするようにします。
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>
を以下に変更します。
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
変更を反映させるために以下のコマンドを実行します。
sudo systemctl restart apache2
Apacheの状態を確認するには以下のようにします。
sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Mon 2018-06-04 07:29:28 JST; 41min ago
Process: 13556 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 13561 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 13582 (apache2)
Tasks: 6 (limit: 2179)
CGroup: /system.slice/apache2.service
├─13582 /usr/sbin/apache2 -k start
├─13588 /usr/sbin/apache2 -k start
├─13589 /usr/sbin/apache2 -k start
├─13590 /usr/sbin/apache2 -k start
インストール結果の確認
以下を実行して、新しいファイルを作成します。
sudo nano /var/www/html/info.php
<?php
phpinfo();
?>
ブラウザからアクセスしてみます。
http://<your_server_ip>/info.php
接続が確認出来たらファイルを削除したほうがよいでしょう。
sudo rm /var/www/html/info.php