おあけおめです。
新年早々、物作りでは無くWeb作りに勤しんでしまいました。
pleskの値上げのお陰で収支の悪くなったサイトのコスト削減であります。
SSH接続は頭が沸いてきますが勉強を兼ねてチャレンジです。
目次
さくらVPS CentOS7 + Let’s Encryptスタートアップスクリプト + nginx + WordPress
今回は人気のさくらVPSを使ってみる事にしました。
結構つまずく部分があったので相変わらず自分メモです。
こんな深夜に書いてるのは、後でメモるのが面倒なので一気に終わらせる為。
なので文章は粗雑です。
途中は要約します。
まず、さくらVPS CentOS7 + Let’s Encryptスタートアップスクリプトはnginxがデフォなので、nginxのインストなどは省かれます。
ついでに初期セットアップも省きます。
Mysqlのインスト
# yum remove mariadb-libs # rm -rf /var/lib/mysql/
たしかmariadbが初期はインストされてた気がするので削除。
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm # yum install mysql-community-server
mysqlのインスト。
# systemctl start mysqld.service # systemctl enable mysqld.service
MySQLを起動してサービスに追加。
# cat /var/log/mysqld.log | grep root 2019-01-06T00:16:42.309144Z 1 [Note] A temporary password is generated for root@localhost: ********* <-ここに初期パスワード
初期パスワード取得
# mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: 初期パスワード ~~~ 要約 ~~~ All done!
パスワード設定の流れへ。
基本Y。
# systemctl restart mysqld.service # mysql -u root -p mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec) mysql> exit
mysqlのチェック。
問題無ければ、exit で終了。
phpMyAdminのインスト
もろSEの人はいらないんだろうけど、私には便利なphpMyAdminを入れておく。
最新のphpMyAdminの本家から取得。
https://www.phpmyadmin.net/
/usr/share に入れた。
# unzip phpMyAdmin-4.8.4-all-languages.zip # mv phpMyAdmin-4.8.4-all-languages phpmyadmin # rm phpMyAdmin-4.8.4-all-languages.zip rm: remove regular file 'phpMyAdmin-4.8.4-all-languages.zip'? y
ZIP解凍からネーム変更。
そんでZIP削除。
# vim /etc/nginx/conf.d/default.conf location /phpmyadmin { root /usr/share; index index.php; location ~ ^/phpmyadmin.+\.php$ { # fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
nginxの設定。
# vim /etc/php.ini ;session.save_path = "/tmp" session.save_path = "/var/lib/php/session"
session.save_pathの設定。
# chown -R root.nginx /var/lib/php/session # cd /var/lib/php # ls -l total 0 drwxrwx--- 2 root nginx 6 Dec 5 22:25 session
sessionのグループ変更。
メモでは省いているけど、nginxはユーザーもグループもnginxに変更済。
デフォはApacheだった気がする。
ls -lで一応確認。
# systemctl restart php-fpm # systemctl restart nginx
php-fpmとnginxをrestart。
これで ホスト名/phpmyadmin でphpmyadminに繋がる。
このままだと簡単にphpmyadminに繋がるのでalias設定。
# vim /etc/nginx/conf.d/default.conf location /phpmyadmin*テキトーな乱数文字* { alias /usr/share/phpmyadmin; #root /usr/share; index index.php; location ~ ^/phpmyadmin.+\.php$ { # fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_split_path_info ^/phpmyadmin*テキトーな乱数文字*(.+\.php)(.*)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
こーすると、ホスト名/phpmyadmin*テキトーな乱数文字* で繋がる。
アタック防止に少しはなると思う。
WordPresのインスト
# cd /var/www/html # wget https://ja.wordpress.org/wordpress-4.9-ja.tar.gz # tar xvzf wordpress-4.9-ja.tar.gz # rm wordpress-4.9-ja.tar.gz # mv wordpress/* . # rmdir wordpress
WordPresの本体をUPして解凍。
そんで圧縮ファイル削除と、wordpressディレクトリの削除。
# chown -R nginx:hoge * # ls -l # usermod -G nginx hoge # id amavps uid=1000(hoge) gid=1000(hoge) groups=1000(hoge),994(nginx)
nginxとユーザー(hoge)が触れるように変更。
作っていたユーザー(hoge)がnginxに属したほうが楽じゃね?と思って、それも設定。
SSL証明書の発行
さくらVPSのチュートリアルを見ると、最初にDNS設定しておけば勝手に発行されたのかもだけど、そんな説明読んで無かったので自分で発行するハメに。
# cd /usr/local/certbot/ # ./certbot-auto certonly --webroot --agree-tos -w /var/www/html -m メールアドレス -d ドメイン # ls -lrth /etc/letsencrypt/live/ドメイン total 4.0K lrwxrwxrwx 1 root root 46 Jan 7 22:27 privkey.pem -> ../../archive/ドメイン/privkey1.pem lrwxrwxrwx 1 root root 43 Jan 7 22:27 cert.pem -> ../../archive/ドメイン/cert1.pem lrwxrwxrwx 1 root root 48 Jan 7 22:27 fullchain.pem -> ../../archive/ドメイン/fullchain1.pem lrwxrwxrwx 1 root root 44 Jan 7 22:27 chain.pem -> ../../archive/ドメイン/chain1.pem -rw-r--r-- 1 root root 692 Jan 7 22:27 README
これで証明書発行完了。
server { listen 80; server_name ドメイン; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name ドメイン; root /var/www/html; index index.php index.html index.htm; charset utf-8; ssl_certificate /etc/letsencrypt/live/ドメイン/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ドメイン/privkey.pem;
nginxの設定ファイルを常時SSL用に書き換えて終わり。
0 4 1 * * root /usr/local/certbot/certbot-auto renew --post-hook "systemctl restart nginx.service"
最後に証明書の更新をcronに登録してAutoに更新されるようにしてOK。
多分こんな感じ。
とりあえず私のサイトは動いています。
ではでは