さくらのVPS上にLAMP環境を構築し、1つのApache上に複数ドメイン+Let’s EncryptでSSL化したときのメモです。
なんとなくLAMPの順にインストールしてみたり・・・
CentOS(x64)を新規にセットアップ
さくらのVPSのOSインストールにてCentOS(x64)を選択してインストール
60秒ほどでインストールとCentOSが起動してくるのでTeraTermpでSSH接続する。
余談だが、この記事を書いたときのように新規にサーバを立て、ゴールとする目標までの手順を確立させる時にこの60秒でまっさらなサーバーが用意できるというのは本当に便利。
TeraTermでSSH接続
まだSSH経由でのrootアクセスを封じていないので、rootと先ほどセットしたパスワードでアクセスすれば良い。
Apacheと関連コンポーネントのインストール
これでApacheとLet’s EncryptでSSL化するためのモジュールがインストールされます。
yum install epel-release -y yum install certbot python-certbot-apache -y
MariaDBインストール
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash yum install MariaDB-server MariaDB-client -y
php7.3をインストール」
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm yum install php --enablerepo=remi-php73 -y
PHPを使うとき何かと便利なComposerをインストールしておく
curl https://getcomposer.org/installer | php mv -i composer.phar /usr/local/bin/composer composer --version
最近では使われる事が少なくなりましたが、一応Perlのバージョンを確認しておきます。
perl -v
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
(with 29 registered patches, see perl -V for more detail)
LAMP環境各種設定
LAMP環境は揃いましたので、ここからは各種設定をしていきます。
テスト用に以下の4つのサブドメインを用意しました。
この記事ではDNS設定は取り扱わないので、DNS設定方法は割愛します。
- ik1-304-12096.vs.sakura.ne.jp(さくらのVPSのデフォルトドメイン)
- test.debugprint.com
- test.matome.info
- test.trashbox.in
事前にDNSレコードが今構築中のVPSである、
ik1-304-12096.vs.sakura.ne.jp(153.126.136.100)
に向くように設定してあります。
Apacheの設定
/etc/vhosts.conf ファイルを新規作成し、以下の内容を貼り付けます。
NameVirtualHost *:80 NameVirtualHost *:443 Include vhost/*.conf
/etc/ssl.conf の編集
上から52行目付近に以下の記述があると思いますので、そこから下まで全部カットして、別の場所に保存しておきます。
## ## SSL Virtual Host Context ##
Virtual Hostの設定を入れる vhostディレクトリを作成します。
mkdir /etc/httpd/vhost
サブドメイン毎にhtmlやphpファイルを入れるディレクトリを作成します。
いわゆるここがサブドメイン毎の DocumentRootになります。
mkdir /var/www/ik1-304-12096.vs.sakura.ne.jp mkdir /var/www/test.debugprint.com mkdir /var/www/test.matome.info mkdir /var/www/test.trashbox.in
サブドメインに対する個々の設定
/etc/httpd/vhost 配下にサブドメインの設定を作成していきます。
一例として、 test.matome.info の設定例を記載します。
ファイル名は
/etc/httpd/vhost/test.matome.info.conf
という感じで、ホスト名.conf で作成するとわかりやすいでしょう。
<VirtualHost _default_:80> DocumentRoot "/var/www/test.matome.info/" ServerName test.matome.info </VirtualHost>
同様に、他のサブドメインの分も作成していきます。
正しくファイルを作成できていれば以下のようになるはずです。
設定をApacheに反映するためApacheを再起動させます。
systemctl restart httpd.service
確認のため、 それぞれのディレクトリに index.php を置いてアクセスしてみます。
例) /var/www/test.trashbox.in/index.php
<?php phpinfo();
ちゃんと、 /var/www/test.trashbox.in/ の中身を使ってくれていることが確認できました。
他のサブドメインも意図したとおりの動作ができていることを同様に確認します。
ここを失敗しているとSSL証明書を取得しても、証明書の取得からやり直しなので面倒がらず確実に確認していきましょう。
Let’s EncryptからSSLを取得して設定
試しに test.trashbox.in のSSLを取得してみます。
certbot certonly --webroot -w /var/www/test.trashbox.in -d test.trashbox.in --agree-tos -n --email yourmailaddress@gmail.com
ほかのドメインも同様に取得します。
正しく取得できていれば以下のフォルダができているはずです。
/etc/letsencrypt/live/
再び /etc/httpd/vhost/ の中身を設定していきます。
test.trashbox.in.conf を以下のように設定しました。
<VirtualHost _default_:80> DocumentRoot "/var/www/test.trashbox.in/" ServerName test.trashbox.in </VirtualHost> <VirtualHost _default_:443> DocumentRoot "/var/www/test.trashbox.in/" ServerName ik1-304-12096.vs.sakura.ne.jp:443 SSLEngine on SSLCertificateFile /etc/letsencrypt/live/test.trashbox.in/cert.pem # SSLCertificateKeyFile /etc/letsencrypt/live/test.trashbox.in/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/test.trashbox.in/chain.pem </VirtualHost>
Apacheを再起動します。
systemctl restart httpd.service
https://test.trashbox.in/ にアクセスしてSSL化できているか確認してみます。
鍵マークから確認すると、ちゃんとLet’s EncryptでSSL化できていることが確認できます。
他のサブドメインも同様に設定します。
必要最低限の設定しか行っていないため、上の方で ssl.conf の記述でバッサリ削除してしまった部分を参考に必要な設定を追加していってください。
1クリック60秒でまっさらな新規テストサーバーを用意できるさくらのVPSすごく便利でオススメです。
この記事はメモリ512MBプランを借りてテストされました。
コメント