HOME >さくらVPSにApache・独自ドメイン・マルチドメイン設定・無料SSL設定

さくらVPSにApache・独自ドメイン・マルチドメイン設定・無料SSL設定

昨今のレンタルサーバは、PHP、mySQL、WORDPRESSの簡易インストールまで至れり尽くせりです。それはそれでとても便利なのですが、 平成から令和に時代が変わったこともあり、さくらのVPSでゴリゴリとサーバを操作してみようと思いました。
10数年前は、自宅に実際に箱型PCを置いてVineLINUXなんかでサーバを構築し、固定IPアドレスを契約し、公開していました。 また、LPIC レベル1、レベル2の資格を取ったりもしました。 しかし、今時、自宅にサーバ置く時代でもないので、さくらVPSサービスを利用し、サーバ構築をすることにしました。
さくらインターネットが公開している ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」 こちらのサイトをもっとも参考にしました。
当ページ内作業は2019年に実施した記録です。

OSインストール

CentOS7をインストールしました。

こちらを参考にインストールしました。何も難しいことはしません。簡単にできます。
ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」

※さくらのVPSとして、私は1Gプラン(仮想2Core CPU)年間利用料金10,692円(2019年金額)を契約しました。

昔のように自宅に実際にPC置いて、サーバ構築・公開に比べると金額も手間も随分とお得と思います。

掲載箇所3

VPSにログイン

さくらのVPSを自宅のパソコンから操作するには、SSHクライアントというソフトウエアから行います。
Windowsのコマンドプロンプトみたいな感じです。
Windowsからはマニュアル通り、Puttyを使います。この辺りは、10数年前と変わっていないようです。
PuttyのダウンロードからクライアントPCへのインストールは、コチラを参考にしてください。
なんか難しそうに思いますが、とにかくやってみることをお薦めします。
サーバ構築が出来たときの達成感は何物にも代得難いです!  

Puttyの起動

Puttyを起動すると、次のような画面が表示されます。HOST NAME(OR IP ADDRESS)の箇所にIPアドレスを入力して、Openをクリック。  

次のような警告画面が最初のみ表示されますが、「はい」をクリック。  

VPSに接続できましたら、rootと入力して、Enterキーを押す。
パスワードを求められので、VPSの仮登録完了お知らせメールに記載されている初期パスワードを入力。
root@IPAddress'sのIPAddressには、ご自分のIPアドレスが表示されます。

login as: root
root@IPAddress's password:

SAKURA Internet [Virtual Private Server SERVICE]

[root@ik1-999-11122 ~]#

OSをアップデート

[root@ik1-999-11122 ~]# yum update  

以下の表示が出てきたら、yをクリック。Completeが表示されれば、アップデート完了。

Is this ok [y/d/N]:  

掲載箇所4

一般ユーザの作成

rootでログインすることはサーバが乗っ取られるリスクが大きく、非常に危険ですので、一般ユーザーを作成し、rootではなく、一般ユーザーでログインできるようにします。
vpsuserという一般ユーザーを作成し、パスワードを設定。
一般ユーザーでログインできることを確認するために、一旦SSHの接続を解除。

[root@ik1-999-11122 ~]# adduser vpsuser
[root@ik1-999-11122 ~]# passwd vpsuser
Changing password for user vpsuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@ik1-999-11122 ~]#exit

Puttyを起動し、一般ユーザー vpsuserでログイン。
ログイン後、su - でrootに切り替える。

login as: vpsuser
vpsuser@IPAddress's password:

SAKURA Internet [Virtual Private Server SERVICE]

[vpsuser@ik1-999-11122 ~]$ su -
Password:
Last failed login: Fri May 3 12:34:44 JST 2019 on pts/0
There were 2 failed login attempts since the last successful login.

次にrootで直接ログインできないように、sshd_configファイルを編集。
cdでデイレクトリ移動、ls でデイレクトリ情報の表示をし、sshd_configファイルがあることを確認し、念のために cp でsshd_config.oldというファイル名でバックアップを取る。
vimでsshd_configファイルを編集。

[root@ik1-999-11122 ~]# cd /etc/ssh
[root@ik1-999-11122 ssh]# ls
moduli ssh_host_ed25519_key sshd_config
ssh_config ssh_host_ed25519_key.pub sshd_config.orig
ssh_host_ecdsa_key ssh_host_rsa_key sshd_config.rpmnew
ssh_host_ecdsa_key.pub ssh_host_rsa_key.pub
[root@ik1-999-11122 ssh]# cp ssh_config sshd_config.old
[root@ik1-999-11122 ssh]# vim sshd_config

下のような画面が現れるので、やや戸惑うかと思いますが、

#PermitRootLogin yesの行まで移動し、
iキーをクリックし、挿入モード(INSERTモード)にし、PermitRootLogin noとする。
※なにをやっているのか分からなくなったら、ESCキーをクリックしてから:q!と入力すると保存せずに終了させることが出来ます。再度iキーをクリックし、挿入モード(INSERTモード)とし編集すると良いと思います。私はそうしています。  

#PermitRootLogin yes

 

下のようにPermitRootLogin noと書き換えたら、:wでファイルを保存し、
ZZでvimエディタを終了
させる。    

PermitRootLogin no

 

sshdを再起動し、設定を有効にする。    

[root@ik1-999-11122 ssh]# systemctl restart sshd.service

 

Puttyでrootでログインできないことを確認。    

Apacheをインストール

httpサーバのApacheをインストール。

[root@ik1-999-11122 ~]# yum install httpd

インストールしたら、httpdを起動。

[root@ik1-999-11122 ~]# systemctl start httpd

ファイアウオールが有効になっており、http通信が遮断されていますので、httpおよびhttps通信を解除。
ファイアウオールを再起動し、サーバ起動時にhttpdも起動するように設定。

[root@ik1-999-11122 ~]# firewall-cmd --add-service=http --zone=public --permanent
success
[root@ik1-999-11122 ~]# firewall-cmd --add-service=https --zone=public --permanent
success
[root@ik1-999-11122 ~]# systemctl restart firewalld
[root@ik1-999-11122 ~]# systemctl enable httpd

ブラウザで自分のIPアドレスを打つと、Apacheが起動していることが確認できました!テンションが上がるだろうと思います。

SFTPでファイルをアップロード

httpサーバのApacheが起動してテンションがアップしましたが、ファイルを転送できないと意味がありません。 ファイルを転送するために、クライアントPCでは、FileZilla Clientを利用します。
その前にapacheのドキュメントルートである/var/www/htmlデイレクトリに一般ユーザーvpsuserがファイルをアップロードできるようします。

ドキュメントルートの権限を変更

/var/www/htmlに一般ユーザがファイルアップロードできるように権限を設定します。

/var/www/に移動し、html/デイレクトリの権限、所有者、所有グループ名を確認。
所有者はrootになっており全ての権限を有しています。所有グループもrootで読み、実行のみの権限です。

[root@ik1-999-11122 ~]# cd /var/www
[root@ik1-999-11122 www]# ls -l
total 0
drwxr-xr-x 2 root root 6 Apr 24 22:46 cgi-bin
drwxr-xr-x 2 root root 6 Apr 24 22:46 html

所有者をapache、所有グループをvpsuserとして、vpsuserにも読み、書き、実行の権限を与える。

[root@ik1-999-11122 www]# chown apache:vpsuser html
[root@ik1-999-11122 www]# chmod 775 html
[root@ik1-999-11122 www]# ls -l
drwxrwxr-x 2 apache vpsuser 6 Apr 24 22:46 html

SFTPでファイルをアップロード

設定は以下の様に、IPアドレス、ポート番号、一般ユーザーであるvpsuser、そのパスワードを入力し、接続をクリック。

接続すると一般ユーザーのホームデイレクトリである/home/vpsuserに接続される。

赤丸箇所を二階層上がり、そこから/var/www/htmlと三階層下がり、htmlファイルをアップロード。

HTMLファイルの転送をブラウザで確認!

独自ドメイン取得、DNS設定

WEBサーバを公開するにあたり、IPアドレスで閲覧というのもスマートではありません。
お名前COMで独自ドメインweb-web.workというドメインを取得し、さくらのVPSサーバと紐づけることにします。

お名前COMでの設定

DNSの設定は、ドメイン管理会社のコントロールパネルで行う。
お名前COMの場合、以下の様にDNS関連環境の設定→DNSレコード設定で、AレコードにIPアドレスを設定


DNSの浸透に一時間ほどかかりましたが、ブラウザにweb-web.workと入力すると、WEBサイトが表示さました!

www.web-web.workのようにwww付でのアクセスも可能にしたい場合は、下のようにする。

しかし、これではIPアドレス:ドメイン=1:1でしか運用できません
IPアドレス:ドメイン=1:nとして、1つのIPアドレスに対して、複数のドメインを運用できるようにします。

マルチドメイン

どうせなら、さくらVPSサーバで複数のドメインを運用してみます。
先ほどのweb-web.workと新たに取得したtea-m.workの二つのドメインを運用します。
上手く行けば、お友達のドメインとWEBサイトを運用しても良いですね(笑)!

一つのIPアドレスで複数のドメインを運用

IPアドレスは一個しかありません。複数のドメインを運用できるようにサーバを設定しなければいけません。
var/www/htmlの下に、mkdirコマンドで、var/www/html/web-web.work/public_html/とvar/www/html/web-web.work/public_html/デイレクトリを作成し、所有者や権限を設定し、適当なHTMLファイルをアップロードしておく。

[root@ik1-999-11122 html]# mkdir web-web.work/
[root@ik1-999-11122 html]# mkdir web-web.work/public_html/
[root@ik1-999-11122 html]# mkdir tea-m.work/
[root@ik1-999-11122 html]# mkdir tea-m.work/public_html/
[root@ik1-999-11122 html]# chown apache:vpsuser web-web.work/
[root@ik1-999-11122 html]# chown apache:vpsuser tea-m.work/
[root@ik1-999-11122 html]# chmod 775 web-web.work/
[root@ik1-999-11122 html]# chmod 775 tea-m.work/
[root@ik1-999-11122 html]# chmod 775 web-web.work/public_html/
[root@ik1-999-11122 html]# chmod 775 tea-m.work/public_html/
[root@ik1-999-11122 html]# chown apache:vpsuser web-web.work/public_html/
[root@ik1-999-11122 html]# chown apache:vpsuser tea-m.work/public_html/

Apache Virtualhostの設定

Apache2.4.6は、httpd.confを参照すると、Include conf.modules.d/*.confとあるように、 conf.modules.d/デイレクトリ内の*.confファイルを読み込むようになっている。
conf.modules.d/に移動し、touchコマンドでvirtual.confファイルを作成し、viで編集。

[root@ik1-999-11122 ~]# cd /etc/httpd/
[root@ik1-999-11122 httpd]# ls
conf conf.d conf.modules.d logs modules run
[root@ik1-999-11122 httpd]# cd conf.modules.d/
[root@ik1-999-11122 conf.modules.d]# touch virtual.conf
[root@ik1-999-11122 conf.modules.d]# vi virtual.conf

virtual.confファイルを以下のように編集。

<VirtualHost *:80>
DocumentRoot /var/www/html/web-web.work/public_html
ServerName web-web.work
CustomLog logs/web-web.work-access.log common
ErrorLog logs/web-web.work-error.log
AddDefaultCharset UTF-8
<Directory "/var/www/html/web-web.work/public_html/">
AllowOverride All
</Directory>
</VirtualHost>

<VirtualHost *:80>
DocumentRoot /var/www/html/tea-m.work/public_html
ServerName tea-m.work
CustomLog logs/tea-m.work-access.log common
ErrorLog logs/tea-m.work-error.log
AddDefaultCharset UTF-8
<Directory "/var/www/html/tea-m.work/public_html/">
AllowOverride All
</Directory>
</VirtualHost>

virtual.conf編集を確認するだけであれば、catコマンドを使う。

[root@ik1-999-11122 conf.modules.d]# cat virtual.conf

バーチャルホストを許可する設定にhttpd.confを編集
紛らわしいが、httpd.confは、/etc/httpd/conf/に有る。

[root@ik1-999-11122 conf.d]# cd ../conf
[root@ik1-999-11122 conf]# ls -l
total 28
-rw-r--r-- 1 root root 11753 Apr 24 22:44 httpd.conf
-rw-r--r-- 1 root root 13077 Apr 24 22:46 magic
[root@ik1-999-11122 conf]# vi httpd.conf

httpd.conf内の、Listen 80の下行に、追記。

Listen 80
NameVirtualHost *:80

Apacheを再起動。

[root@ik1-999-11122 conf.modules.d]# systemctl restart httpd

さくらVPSコントロールパネルで設定

さくらのVPSコントロールパネルで二つのドメインそれぞれに設定が必要です。
ネームサーバ登録
ドメイン名にドメインを入力

サーバのIPアドレスを入力

ゾーンがどのようになっているのか確認

お名前COMで設定

お名前COMで、ドメインtea-m.workに対して、DNS環境設定DNSレコードを利用する で以下のように設定。
続けて、お名前COMで、ネームサーバの変更他のネームサーバーを利用で、二つのドメインに対して、プライマリサーバ ns1.dns.ne.jp セカンダリサーバ ns1.dns.ne.jp と設定が必須

マルチドメインでのWEBサイト公開を確認

ブラウザでhttp://web-web.work/を確認!

ブラウザでhttp://tea-m.work/を確認!

さくらVPSでマルチドメインを確認!

無料SSL証明書Let's Encryptの導入

問い合わせパネルやショッピングカードのみならず、サイト全体を常時SSL化することがここ一年ほどの間に標準になってきています。 SSL証明書も当然導入します。
ApacheがSSLを使えるようにするためには、mod_sslをまずはインストールします。

[root@ik1-999-11122 ~]# yum install mod_ssl

httpdを再起動

[root@ik1-999-11122 ~]# systemctl restart httpd

ファイアウオールでhttps通信が許可されているのか確認

[root@ik1-999-11122 ~]# firewall-cmd --list-all

services: dhcpv6-client ssh http https

Pythonをインストール

流行りのPythonのインストールが必要なよう。

[root@ik1-999-11122 ~]# yum install certbot python2-certbot-apache

Let's Encryptをインストール

certbotというLet's Encryptのコマンドで証明書をインストール。
マルチドメインでの運用を行うので、複数のドメインに対して行う。-d web-web.work -d tea-m.workの部分。

[root@ik1-999-11122 ~]# certbot --apache -d web-web.work -d tea-m.work

途中気を付けないといけない点。

[root@ik1-999-11122 ~]# certbot --apache -d web-web.work -d tea-m.work
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): Let's Encryptからのお知らせを受け取るEMAILアドレスを入力
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A規約に同意

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: NLet's EncryptのパートナーにEmailを公開したくないのでNに

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting vhost in /etc/httpd/conf.modules.d/virtual.conf to ssl vhost in /etc/httpd/conf.modules.d/virtual-le-ssl.conf
Redirecting vhost in /etc/httpd/conf.modules.d/virtual.conf to ssl vhost in /etc/httpd/conf.modules.d/virtual-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://web-web.work and https://tea-m.work

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=web-web.work
https://www.ssllabs.com/ssltest/analyze.html?d=tea-m.work
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

httpdを再起動。

ブラウザでhttp://web-web.work/を入力すると、https://web-web.work/にリダイレクトされ、SSL化していることを確認!

ブラウザでhttp://tea-m.work/を入力すると、https://tea-m.work/にリダイレクトされ、SSL化していることを確認!

さくらVPSでTWO ドメインともSSL化を確認!

CRONで証明書の更新を自動化

折角SSL化したのですが、Let's Encryptは3ケ月毎に証明書を更新しないといけません。
CRONで自動化します。

[root@ik1-999-11122 ~]# vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

0 3 * * * root /usr/bin/certbot renew

TOP