2017年9月 さくらのVPS、LAMP(CentOS7)、SSL、etcセットアップ

2017/09/04 | 開発記録 | hideichi

基本的にhideichiの備忘録です。
色んな記事を参考にしながら作った。
メモに残ってたのを元にして書いた。
漏れとか抜けとかあるかもしれないし、このままコマンド打ち込んでもたぶん出来ないのであしからず。

CentOS Linux release 7.2.1511 (Core)
Apache/2.4.6
mysql Ver 15.1 Distrib 5.5.52-MariaDB
PHP 5.6.31 (cli)
phpmyadmin 4.7.4
git version 1.8.3.1

出来上がったのは上記の通り。
セキュリティとかパフォーマンスは抜けが多いと思う。
IPとは、dbnameとか、sxsample.comとかは適時読み替えて。

1,申し込み
[参考]http://vps.sakura.ad.jp/
10分くらいでメールが届く。
パスワード、IPとか必要な情報が載ってる。

2,OS再インストール
管理画面でサーバーを選択
右上、各種設定 → OSインストール → 標準OSインストール
CentOS7を選択
パスワード入力
スタートアップスクリプト、CentOS_LAMPを選択
インストール実行押す。

3,ターミナルからSSHログイン

ssh -p 22 root@111.222.333.444

4,作業用ユーザー追加
[参考]https://vps-news.sakura.ad.jp/tutorials/centos7-initial-settings/

useradd hideichi
passwd hideichi

5,公開鍵認証
[参考]http://qiita.com/mukoya/items/f20def019e25dc162ca8
クライアントの/Users/username/で、

ssh-keygen -t rsa

id_rsa.pub をサーバーの home/hideichi/.ssh/ に[authorized_keys]という名前で設置。
サーバー側のパーミッション変更。

chmod 600 authorized_keys
chmod 700 .ssh/

クライアント側の.ssh もパーミッション変更

chmod 700 .ssh/

接続テスト

ssh -i /Users/username/.ssh/id_rsa -p 22 hideichi@111.222.333.444

6,wheel グループに対する sudo 設定の有効化

usermod -G wheel hideichi

7,SSH設定

vi /etc/ssh/sshd_config

Port 10022 22を10022に
PermitRootLogin no # yes を「no」(許可しない)に
RSAAuthentication yes コメントアウト解除
PubkeyAuthentication yes コメントアウト解除
PasswordAuthentication no # yes を「no」に

vi /usr/lib/firewalld/services/ssh.xml

「port=”22″」の部分を「port=”10022″」に

systemctl restart sshd

別ターミナルで接続テスト

ssh -i /Users/username/.ssh/id_rsa -p 10022 hideichi@111.222.333.444

8,firewalldの設定
[参考]https://www.websec-room.com/2017/02/18/2756

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
systemctl list-unit-files | grep firewalld

enabled ならOK

9,PHPバージョンアップ
PHP5.6をインストール

systemctl stop httpd.service

remi インストール

cd /etc/yum.repos.d
curl -O http://rpms.famillecollet.com/enterprise/remi.repo
yum -y --enablerepo=remi-php56 install php php-common
systemctl enable httpd.service
systemctl start httpd.service

10,Apacheの設定
[参考]http://qiita.com/salt_field/items/3e255c3356006a1e020f
変える必要ないかも。いじるならバックアップ。

cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.backup

以下、基本コマンド。

systemctl start httpd
systemctl status httpd
systemctl restart httpd
systemctl stop httpd

11,MySQLの設定
[参考]http://qiita.com/akito1986/items/98a8430d936b293cb354

systemctl start mariadb
/usr/bin/mysql_secure_installation

色々聞かれる。rootのパスワード作る。

12,phpmyadminインストール

yum --enablerepo=remi,remi-php56 install phpMyAdmin
vi /etc/httpd/conf.d/phpMyAdmin.conf

AddDefaultCharset UTF-8 の下に2行追加
AllowOverride all
Require all granted
※このままではセキュリティ的にグダグダなので、できればIP指定する。
そこまで出来なくても、ディレクトリ変更、Basic認証、SSL化などはやりたいね。

13,gitインストール

git --version

git version 1.8.3.1
入ってた。たぶんスタートアップスクリプトで入ったのかな。

14,CMS本体の引越(basercms)
引越し元で、zipとsql.dump作る

mysqldump -u root -p dbname > /var/www/20170901dbname.dump
zip -r 20170901basercms.zip basercms/

引越し先にzipとsql.dumpを移動。
引越し先、phpmyadminでユーザーとDB作る。リストア。

mysql -u root -p -D dbname < /var/www/20170901dbname.dump
unzip 20170901basercms.zip

[参考]https://basercms.net/manuals/1/etc/7.html
パーミッション変更、設定ファイル変更とか。

15,DNS変更
バリュードメインなどのレジストラで変更できれば、それで。

16,httpd変更

vi /etc/httpd/conf/httpd.conf

以下、末尾に追加してアクセステスト。

<VirtualHost *:80>
    DocumentRoot "/var/www/html/"
    ServerName 111.222.333.444
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/html/exsample.com/app/webroot/"
    exsample.com
</VirtualHost>

引越し元と引越し先で、ドキュメントルートのパスが変わっていたら変更。
ブラウザからアクセステスト。

17,SSL
Let’s Encryptを入れることにした。
[参考]https://letsencrypt.jp/usage/
[参考]https://w0s.jp/diary/501
[参考]https://www.websec-room.com/2016/10/01/2698
[参考]http://qiita.com/yasushi00/items/40bdaf8f05017e212325

ついでにPHPのセキュティ見直しもやった。
[参考]https://blog.tokumaru.org/2010/09/phpini.html?date=20100927

vi /etc/php.ini

firewallの確認。httpとhttpsがあればOK

firewall-cmd --list-all

インストール→実行→認証

yum install certbot python-certbot-apache
certbot
certbot certonly --webroot -w /var/www/html/exsample.com/app/webroot -d exsample.com

鍵が作られたかどうか確認する。

find / -name chain.pem

SSL設定変更

vi /etc/httpd/conf.d/ssl.conf

SSLCertificateKeyFile /etc/letsencrypt/live/exsample.com/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/exsample.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/exsample.com/chain.pem
該当の場所だけ変更した。

vi /etc/httpd/conf/httpd.conf

httpd.confは相当いじりまわしたよ。
無駄な設定も多いと思うがとりあえず以下で動いた。
80(http)アクセスはリライトしてる。

LoadModule rewrite_module modules/mod_rewrite.so

NameVirtualHost exsample.com:80
NameVirtualHost exsample.com:443

<VirtualHost exsample.com:80>
    ServerAdmin root@exsample.com
    DocumentRoot /var/www/html/exsample.com/app/webroot/
    ServerName exsample.com:80
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}  [L,R=301]
  </IfModule>
</VirtualHost>
<VirtualHost exsample.com:443>
    SSLEngine on
    SSLCertificateKeyFile   /etc/letsencrypt/live/exsample.com/privkey.pem
    SSLCertificateFile      /etc/letsencrypt/live/exsample.com/cert.pem
    SSLCertificateChainFile /etc/letsencrypt/live/exsample.com/chain.pem
    ServerAdmin root@exsample.com
    DocumentRoot /var/www/html/exsample.com/app/webroot/
    ServerName exsample.com:443
</VirtualHost>
systemctl restart httpd

証明書が更新されるかテスト

certbot renew --dry-run

定期実行

crontab -u root -e

MAILTO=”info@exsample.com”
1 3 * * * certbot renew
cronにて毎日3時1分に実行。

certbotは終了日を見ていて、近づいてきたら更新するらしい。
失敗することもあるらしいので、毎日実行だけしておく。

前の記事:

次の記事:

2017/09/04 | 開発記録

コメント/トラックバック

トラックバック用URL:

この投稿のコメント・トラックバックRSS




管理人にのみ公開されます

前の記事:

次の記事:

【二種免許】深視力検査合格のコツや裏技
【二種免許】深視力検査合格のコツや裏技

東京では免許更新の際、ゴールド免許の方や島嶼にお住まいの方以外は、鮫洲...

no image
[cakephp4] dirtyとoriginal

patchEntityすると、変更したところと、変更前の内容が取れる。...

BaserTestCaseで特定プラグインの有無でfixturesを振り分ける
BaserTestCaseで特定プラグインの有無でfixturesを振り分ける

baserCMSのTestCaseで、特定のプラグインの有無を調べて、...

kusanagi で letsencryptが更新されない
kusanagi で letsencryptが更新されない

結論から、アパッチを直接再起動すると直るかも。 systemctl r...

baserCMS プラグインのアップデートスクリプト
baserCMS プラグインのアップデートスクリプト

(参考) http://project.e-catchup.jp/pr...

→もっと見る

PAGE TOP ↑