2017年9月 さくらのVPS、LAMP(CentOS7)、SSL、etcセットアップ
基本的に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は終了日を見ていて、近づいてきたら更新するらしい。
失敗することもあるらしいので、毎日実行だけしておく。
前の記事: [PHP]urlを指定してtitleとrssを抜き出すサンプル
次の記事: [baserCMS]Router::connectが効かない
2017/09/04 | 開発記録
コメント/トラックバック
トラックバック用URL:
この投稿のコメント・トラックバックRSS