自宅でサーバの運営をはじめてからすでに10年を過ぎた。
その間に3回、サーバに逝かれてしまった。
毎回、復帰作業で悩むので、メモの意味を込めて記録する。
構成は、つぎのとおり
・Ubuntu(OS)
・Apches2(サーバ)
・vsftpd(FTPサーバ)
・PHP(サーバーサイドのスクリプト言語)
・回線終端装置(ONU)の設定
・Let's Encrypt(SSL証明書)
Ubuntsu(OS)のインストール
OS(Ubuntu22.04)をクリーンインストールする。
ダウンロードは、こちらから、いずれかのサイトからダウンロードして、 DVDかUSBに保存する。
Apache2のインストール
ターミナルからインストールする。
sudo apt-get update
sudo apt-get install apache2
設定をインストラクションに従い、設定が終わったらサーバを再起動する。
sudo systemctl start apache2
ファイアーウオールを調整する。
sudo ufw allow 'Apache'
ファイアーウオールの状態を確認する。
sudo ufw status
下の表示がでたら設定完了。
Apache ALLOW Anywhere
Apache2(v6) ALLOW Anywhere(v6)
バーチャルホスト設定を設定する。
*[your_domain]はドメイン名など
sudo nano /etc/apache2/sites-available/your_domain.conf
nanoが開くので、下を入力する。
<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>
Apache2を再起動し、ブラウザーのアドレスバーに
localhost
と入力して下のように表示されればインストール完了。
英語だが、ここで Apache2の詳しい設定が説明されている。
vshtpdのインストール
ファイルをリモートからアップロードできるようにFTPサーバをインストールする。
sudo apt install
インストール完了後
sudo service vsftpd status
←activeを確認
sudo ufw allow 20/tcp
←ポート開放
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw enable
←ファイアウォール開始
sudo ufw status
←ファイアウォール確認
vshtpdの設定
sudo adduser ftpuser
←「ftpuser」名でアカウント作成(パスワード設定)
sudo usermod -d /var ftpuser
sudo shown ftpuser:ftpuser /var/www
←ドキュメントルート(WWWの中にHPを置く)
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
←設定ファイル作成・バックアップファイル
sudo nano /etc/vsftpd.conf
←設定ファイルに下記ペースト
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
force_dot_files=YES
pasv_min_port=40000
pasv_max_port=50000
PHPのインストール
sudo apt install php libapache2-mod-php
インストール中の質問はすべて「Y」を入力して続行
インストール完了後
sudo kill -9 2995
←waiting for cache lockが表示されたとき番号(2995)を確認
php -v
←.phpバージョン確認
ls -l /etc/apache2/mods-enabled/
←有効になってるか確認
sudo a2enmod php8.1
PHPの動作確認
sudo nano /var/www/html/info.php
下コードをコピペする。
WebブラウザからPHPの設定に関する情報を確認する。
下記をアドレスバーに入力する。
http://localhost/info.php
下のように表示される。
sudo systemctl restart vsftpd
←vsftpd再起動
マルチバイト機能のインストール
sudo apt install php-mbstring
phpにメール送信機能を追加
sudo apt install sendmail
←sendmailをインストール
sudo nano /etc/php/8.1/apache2/php.ini
#sendmail_path = ←コメントを外して、編集
sendmail_path = /usr/sbin/sendmail -t -i
sudo service apache2 restart
←Apache2再起動
回線終端装置(ONU)の設定
Webサーバを外部に公開する設定をする。
プライベートIPアドレスの確認
ip addr show
ONUの設定ページ(アドレス:192.168.1.1)に接続して、静的NATマスカレードにプライベートIPアドレスとポート番号(80と443)を設定する。
*ポート80:HTTP/ポート443:HTTPS
Let's Encryptのインストール
SSL証明書をインストールする。
*あらかじめURLを設定しておくこと。
CertbotをApacheと統合するプラグインで、証明書の取得やWebサーバー内のHTTPS設定がコマンド1つで自動化できる。
sudo apt install certbot python3-certbot-apache
sudo systemctl reload apache2
←Apache2をリロード
ファイアーウォールの設定
sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'
sudo ufw status
←ファイアーウォールの確認
"Apache Full ALLOW Anywhere"と
"Apache Full(v6) ALLOW Anywhere"が表示される。
SSL証明書の取得
sudo certbot --apache
メールアドレスの入力
[A]を入力 ←サービス利用規約に同意
[Y]または[N] ←Electronic Frontier Foundationにメルアドを知らせる
"Which names would you like to activate HTTPS for?" → [ENTER]
"Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access."→ [2]
"Congratulations!" → インストール完了
自動更新の設定
sudo certbot renew --dry-run
くわしいSSL証明書の取得についてはこちらを参照のこと。
説明に抜けや間違いがあるかもしれない。そのようなときはGoogle先生にお尋ねください。