CentOS7でのLet’sEncrypt証明書のインストール

Apache、OpenSSL、ModSSLがインストールされている前提です。

インストールするディレクトリに移動。

$ cd /opt/

gitでプログラムを取得する。

# git clone https://github.com/letsencrypt/letsencrypt

ヘルプを表示すると必要コンポーネントをインストールしてくれる。

# cd letsencrypt
# ./letsencrypt-auto --help

証明書の作成。
※事前にapacheのサービスを停止しておく

# ./letsencrypt-auto certonly --standalone -d www.example.com

ApacheのSSL設定。
/etc/httpd/conf.d/ssl.conf の最下部に下記を追記する。

<VirtualHost *:443>
    ServerName www.example.com
    DocumentRoot "/var/www/html/"
    <Directory "/var/www/html/">
        AllowOverride All
    </Directory>
    SSLEngine on
    SSLProtocol -All +TLSv1.2
    SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA:!3DES:!RC4:!DH
    SSLHonorCipherOrder On
    SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
</VirtualHost>

証明書の自動更新設定。
更新するコマンドは下記の3行。
※ちなみにcertbot-autoに–dry-runオプションを付けるとテストが可能

# /bin/systemctl stop httpd
# /usr/local/letsencrypt/certbot-auto renew --force-renew
# /bin/systemctl start httpd

なのでcrontabで毎月1日の朝4時に更新を行うよう設定。

00 04 01 * * /bin/systemctl stop httpd; /usr/local/letsencrypt/certbot-auto renew --force-renew; /bin/systemctl start httpd

CentOS7へMySQL5.7をインストールする

CentOS7はデフォルトでMariaDBがインストールされていると思われるので、削除。

# yum remove mariadb-libs
# rm -d -r -f /var/lib/mysql/

MySQLサーバーをローカルインストール。
※https://dev.mysql.com/downloads/repo/yum/を参考に適宜URLを変更

# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

MySQLサーバーをインストール。

# yum -y install mysql-community-server

文字コードをUTF-8に設定する。
/etc/my.cnfを編集して下記1行を追加。

character-set-server = utf8

MySQLサーバーが自動起動するよう構成。

# systemctl enable mysqld.service

MySQLサーバーを起動。
※この時点でrootのパスワードが自動生成されログに書き込まれる(/var/log/mysqld.log)

# systemctl start mysqld.service

MySQLサーバーの初期設定。

# mysql_secure_installation

パスワードポリシーをMEDIUMからLOWに変更する。
mysql -p でログイン後に

SET GLOBAL validate_password_policy=LOW

php-mysqlのインストール。

# yum -y install php-mysql

CentOS7へApacheとPHPをインストールする

Apacheをインストールする。

# yum install httpd

サブドメイン毎のルートディレクトリを設定する。
設定ファイル最下部に下記を追記する。

<VirtualHost *:80>
    ServerName test.example.com
    DocumentRoot "/var/www/html/test/"
    <Directory "/var/www/html/test/">
        AllowOverride All
    </Directory>
</VirtualHost>

SELinuxのラベル付けを行うためのユーティリティをインストールする。

# yum install policycoreutils-python

ルートディレクトリ以下をhttpdで読み書き可能にするSELinuxのラベル付け。

# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/test(/.*)?"
# restorecon -RF /var/www/html/test/

httpdがネットワークに接続することを許可するSELinuxの設定。

# setsebool -P httpd_can_network_connect true

PHPと使用する拡張機能をインストールする。

# yum install php
# yum install php-mbstring
# yum install php-json
# yum install php-mysqlnd
# yum install php-xml
# yum install php-gd

Apacheを有効化してサービスを起動する。

# systemctl enable httpd
# systemctl start httpd

ファイアウォールに例外を追加する。

# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent

ファイアウォールの設定を読み込み。

# firewall-cmd --reload

yumについて

パッケージ一覧を閲覧する。

# yum list

グループパッケージ一覧を閲覧する。hiddenを付けないと表示されないパッケージがある。

# yum grouplist hidden