Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

さくらVPSにWordPress環境をつくる その1:基礎環境

急遽さくらVPS上にWordPress環境を作る必要がでたのでメモ。
まずは基礎環境を構築、その後セキュリティを強化し独自ドメインを展開するところまでやりたいと思います。

実際のところ

前提

作業

基礎環境といえる環境をつくるため、下記の手続き

公式ドキュメントCentOS前提で進んでいますが、色々古く*2使い物にならないためUbuntu16系ですすみます
何につけても、まずはupdateしてパッケージを最新に。

$ sudo apt-get update
apache
$ sudo apt install apache2

接続設定"apache2.conf"をバックアップをとった状態で弄ります

$ sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bk
$ sudo vi /etc/apache2/apache2.conf

こんな感じで

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
##上記の下に追記。Wordpress用の設定
<Directory /var/www/html/wordpress>
        AllowOverride All
</Directory>

チェックツールで確認。タイポならここでエラーです

$ sudo apache2ctl configtest
Syntax OK
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2
MySQL
$ sudo apt-get install mysql-server

MySQLの設定は対話型のアレで進みます。
初回のrootパスワード変更はn、それ以外Yで安全に

$ sudo mysql_secure_installation

MySQLをひらき

$ mysql -u root -p

DBを作成

mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
php
$ sudo apt-get install php
WordPress本体

WordpressCLIツール"wp"を導入
ダウンロード先はtmpにしておきます

$ cd
$ wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
$ chmod +x wp-cli.phar
$ sudo mv wp-cli.phar /usr/local/bin/wp

"wp"をつかって日本語化済Wordpressを入れます

$ /usr/local/bin/wp  core download --locale=ja --path=/tmp/wordpress

下準備が整ったら、いよいよ/var/www以下に移動
管理権限を付加

$ sudo cp -a /tmp/wordpress/. /var/www/html/wordpress
$ sudo chown -R root:www-data /var/www/html/wordpress
$ sudo chmod g+w /var/www/html/wordpress/wp-content
$ sudo chmod -R g+w /var/www/html/wordpress/wp-content/themes
$ sudo chmod -R g+w /var/www/html/wordpress/wp-content/plugins

Wordpress公式が提供しているランダムキーを入手します
こんな感じの文字列が出てくるはずです

$ cd
$ wget https://api.wordpress.org/secret-key/1.1/salt/
$ cat index.html
less index.html.3
define('AUTH_KEY',         'd;|+qwm(j9/VF,fO6@@ yaU~K|+2nxrE_|Df1: +tB.+3Nps2/%KfpId4fH @Hoc');
define('SECURE_AUTH_KEY',  'tpW>OY-H-s-1|-:~f}m&alHuA7yn-3st,((#Y(?6R(_4!@BpdwT~)yj`-2m/u9cU');
define('LOGGED_IN_KEY',    ']<4:2kb;]jenicI<ze:g:PLhcS:WCbRt0C3^i(Anr3%(7{#dM),i2fGMNo[n^mf3');
define('NONCE_KEY',        'fo]FB#Gif o|TEccU-pq$ZY-9MlH-J~(p|(y0wmd Q-+&Clv.[d)L!xiv/.y2v@7');
define('AUTH_SALT',        'ltr26/3L^X9)gUrE*wZnnjDJcvRCQxSA {mSq|][sp+ncAAaPcM}JFi^wJPsKgN}');
define('SECURE_AUTH_SALT', 'i;met;A:&3b{?Efuz_|/EetWm@>xE~UB&r9|:z+$B9|IMyP+1]aq#|ZVf{41]D;Q');
define('LOGGED_IN_SALT',   'E,1%9^W|e-4K2h]dzk w#|<7qgVQy&M_:Q67MUCx.L]:u0-l:X4:|L,@[O8xS5jj');
define('NONCE_SALT',       '9{.~F<@#kP@+|A~d^SXiC:%l.3p2pZd 9-|E/^R~ cpfA-~7;wM+5]PsW25tCYA');

これを、wp-config.phpの当該部分と置き換えます

$ cd /var/www/wordpres
$ vi wp-config.php
VirtualHost

WordPress

$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/010-wordpress.conf
<VirtualHost *:80>
        # ドメインがあれば設定、無い場合はコメントアウトのまま
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/wordpress

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
$ sudo a2dissite 000-default
$ sudo a2ensite 010-wordpress
$ sudo systemctl restart apache2
外向きに開放する(IPTable/ufw)

肝心な設定がここ。
ここが終わってないと、外から確認できません。
私はここで2時間詰みました

$ sudo vi /etc/iptables/iptables.rules

真ん中の2行を追加し、外向きポートを開けます
でないと、真っ当に動きません

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

更に

$ sudo ufw app list
Available applications:
  Apache
  Apache Full
  Apache Secure
  OpenSSH

無事終わると

http://{{さくらVPSインスタンスのIP}}/にアクセスすると
待ちに待ったwordpress画面が
f:id:shuzo_kino:20180316033753p:plain

*1:……本当はnode.jsやりたかったんですが、ハードルが高かったでs

*2:廃止されたオプションがフツーに書いてある等