各VPSの設定

Apache2.4系のインストール方法(Cent OS系の場合)

apacheのインストール

sudo yes | yum install httpd;
sudo yes | yum install httpd-devel;
sudo systemctl restart httpd.service;

/usr/sbin/httpd -v;

sudo systemctl enable httpd.service;
ps -deafw|grep httpd

と打って、httpdプロセスの存在を確認。

http://$IPアドレス/

にアクセスしてWebサーバの作動を確認。

外部からアクセスできない場合は、まずはサーバーの中で

wget -S -U test http://localhost/

と打って、正常にクロールできるか確認。

それで正常にクロールできる場合には、ファイヤーウォールがブロックしているという事になるので、ファイヤーウォールの設定を確認する。

Webコンソールの方でFirewallが提供されている場合にはそちらの方の設定を確認。

そうでない場合には、サーバ上でファイヤーウォールのprocessが走っていないか確認。

systemctl status firewalld.service

動いていて、止めても問題なければ

systemctl stop firewalld.service;
systemctl disable firewalld.service;

そしてアクセスしてみて、Webサイトが見えればO.K。

WordPressやLaravelといったウェブフレームワークを使う場合、.htaccessの機能を活用する必要がある為、

sudo sed -i -e 's/AllowOverride [Nn]one/AllowOverride All/g' /etc/httpd/conf/httpd.conf ;

後、httpd.conf内の

<Directory "/var/www/html">

のディレクトリが、対象ディレクトリを含むレベルに変更する必要がある。

httpd.confの編集が終わったら

sudo apachectl restart;

で変更を反映


ドメインの取得と割り当て

お名前.com、AWSなどと契約して、DNSレコード名に対してIPアドレスを割り当てる形で名前解決できるようにする。

ウェブサーバーの方でhttpd.confを触って、VirtualHostのセクションを定義しておく。
これは後で設定するSSLの為にも必要。

<VirtualHost *:80>
ServerName gloval.jp
DocumentRoot /var/www/html
</VirtualHost>

無料でhttpsでアクセスできるようにする

Let’s encryptのクライアントをインストール

wget https://dl.eff.org/certbot-auto;
chmod a+x certbot-auto;
mv ./certbot-auto /usr/local/bin/;

割り当ててるドメインを-dで指定。

certbot-auto run --apache -d blog.minakoe.jp

なお、その後、-d … を増やす事で、HTTPSを使えるドメインを増やす事は出来るが、一番最初のドメインは変えてはいけない(そのドメインの設定ファイルを他ドメインも使う為)。

certbot-auto run --apache -d blog.minakoe.jp -d programminglang.com -d ja.programminglang.com

後、自動的に証明書が更新されるように、cronに設定する。

crontab -e

と打って

15 * * * * /usr/local/bin/certbot-auto renew -q --no-self-upgrade --post-hook "/usr/sbin/apachectl graceful";

といった行を追加する。

vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
ServerName blog.minakoe.jp
RewriteEngine on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Include /etc/httpd/conf/httpd-le-ssl.conf

SELinuxの無効化

WebサーバーからDBへのアクセスだけ許可するには、Webサーバー側で

setsebool -P httpd_can_network_connect_db 1

色々面倒なのでSELinuxの機能自体を無効化するには

setenforce 0;
vi /etc/selinux/config

して

SELINUX=disabled