2023年9月21日木曜日

Microsoft Azure - その7. ウェブサーバ

前回までAzureのIaaSの仮想マシンで
地味なセットアップを行ってきましたが、
いよいよ派手なセットアップに取り掛かります。
ウェブサーバのセットアップです。
まあウェブサーバが派手かどうかはともかく、
現在のサーバの花形であると思っています。

まずはApache2をウェブサーバとし、
サーバーサイドのPHPを動作させるため以下を実行します。
$ su -
# apt install apache2
# apt install php
# apt install libapache2-mod-php
# /etc/init.d/apache2 restart
ここでブラウザでアクセスすれば
"Apache2 Ubuntu Default Page"が表示されるはずです。
次いで以下を実行します。
# echo '<?php phpinfo(); ?>' > /var/www/html/index.php
また、設定ファイル"/etc/apache2/mods-available/dir.conf"の2行目の
        DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
        DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
に変更して
# /etc/init.d/apache2 restart
を実行します。
ここでブラウザでアクセスしてPHPのコンフィグレーションが
表示されることを確認しておきます。
次いでドメインごとにサイトを分けるために以下を実行します。
# cd /etc/apache2/sites-available
# a2enmod ssl rewrite
# cp 000-default.conf  <サーバのFQDN>.conf
# cp default-ssl.conf  <サーバのFQDN>-ssl.conf
# a2ensite <サーバのFQDN>
# a2ensite <サーバのFQDN>-ssl
# a2dissite 000-default
# cd /var
# cp -rf www www/<サーバのFQDN>
# /etc/init.d/apache2 restart
設定ファイル"/etc/apache2/sites-available/<サーバのFQDN>.conf"と
"/etc/apache2/sites-available/<サーバのFQDN>-ssl.conf"を
以下のように編集します。
  • サイト管理者のメールアドレスを設定。
    ServerAdmin <メールアドレス>
    
  • コンテンツを配置するディレクトリを設定。
    DocumentRoot /var/www/<サーバのFQDN>/html
    
  • サイトのドメインを設定。
    ServerName <サーバのFQDN>
    
httpsのウェブサーバ証明書のために以下を実行します。
# apt install certbot
# apt install python3-certbot-apache
# certbot --apache certonly
以下対話式に進める。入力するのは以下。
<メールアドレス>
a
y
1
設定ファイル"/etc/apache2/sites-available/<サーバのFQDN>-ssl.conf"を
以下のように編集します。
  • 証明書設定
    SSLCertificateFile      /etc/letsencrypt/live/<サーバのFQDN>/fullchain.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/<サーバのFQDN>/privkey.pem
    
設定反映のため以下を実行。
# /etc/init.d/apache2 reload
ここでブラウザでアクセスして証明書が正式であることや
有効期限を確認しておきましょう。
なおこれはLet's Encriptから証明書を無償で発行してもらっていますが、
有効期限が3ヶ月間で、期限が切れる前に更新する必要があります。
とは言え更新は以下のコマンドで可能です。
# certbot renew

最後にPHP8です。
上記ですでにインストールしているPHPについては設定ファイル
"/etc/php/8.1/apache2/php.ini"を以下のように修正した方がよいでしょう。
date.timezone = "Asia/Tokyo"
display_errors = On
display_startup_errors = On
なお、"*_errors"項目はデバッグを楽にするためなので
本番環境ではOffにすることをお勧めします。

0 件のコメント:

コメントを投稿