WordPressでWebサイトを作ってみる(下準備編)

WordPressのインストール記事なんて掃いて捨てるほどあるけれど、一応覚え書きということで書いてみます。公式サイト見ればいいだけの話ではあるんですがね。

前提条件

  • VPS:さくらVPS(メモリ1GB、HDD100GB、CPU2コア)
  • OS:FreeBSD10.3
  • DBサーバー:mysql
  • Webサーバー:nginx 1.10.3

2017年5月時点での最新バージョン、WordPress 4.7.4をインストールします。



WordPressファイルのダウンロード

ファイルはWordPress公式サイトのリリースページからダウンロードできます。.tar.gzの方がファイルサイズが小さいので、こちらを使用しましょうか。

ローカルに落としてftpでアップロードとかだるいので、直接サーバーにダウンロードします。今回はwgetで。

2017年11月17日
いつ頃からかわからないですが、今日wgetで試してみたらエラーで弾かれました。サイト外からのダウンロードをチェックしているようです。

wgetに–no-check-certificateオプションをつけるとダウンロードできました。

$ wget --no-check-certificate https://ja.wordpress.org/wordpress-4.8.3-ja.tar.gz
--2017-11-17 07:39:49--  https://ja.wordpress.org/wordpress-4.8.3-ja.tar.gz
Resolving ja.wordpress.org (ja.wordpress.org)... 66.155.40.250, 66.155.40.249
Connecting to ja.wordpress.org (ja.wordpress.org)|66.155.40.250|:443... connected.
WARNING: cannot verify ja.wordpress.org's certificate, issued by ‘CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O=GoDaddy.com\\, Inc.,L=Scottsdale,ST=Arizona,C=US’:
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 200 OK
Length: 8668681 (8.3M) [application/octet-stream]
Saving to: ‘wordpress-4.8.3-ja.tar.gz’

wordpress-4.8.3-ja.tar.gz     100%[=================================================>]   8.27M  1.80MB/s    in 4.9s    

2017-11-17 07:39:54 (1.68 MB/s) - ‘wordpress-4.8.3-ja.tar.gz’ saved [8668681/8668681]

ちょうはやい。

WordPressファイルの展開

nginxは/usr/local/www以下をWeb上に公開するので、ファイルダウンロード時はここに落とすのが楽チン。

$ tar -xzvf wordpress-4.7.4-ja.tar.gz
x wordpress/
x wordpress/wp-mail.php

〜中略〜

x wordpress/wp-blog-header.php
x wordpress/wp-links-opml.php
$ rm wordpress-4.7.4-ja.tar.gz
$ mv wordpress junkworks
$ ll
total 8436
drwxr-xr-x  13 takeru  wheel      512 May 16 21:29 .
drwxr-xr-x  23 root    wheel      512 Apr 25 15:04 ..
drwxr-xr-x   5 takeru  wheel   512 Apr 21 10:44 junkworks

展開後はtarファイルを削除して、生成されたディレクトリ名をドキュメントルート(ドメインが指し示すトップページの位置)に合わせて適当にリネームします。

MySQLユーザーとデータベースの作成

サイトのデータを保存するデータベースと、それを操作するユーザーを作成します。
ここではデータベース名がjunk、ユーザー名がworks、パスワードがp@ssw0rdとしています。

できるだけツールを入れずにやりたいので、PHPAdminを使わずに直接MySQLを操作しましょう。

$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 90
Server version: 5.6.35 Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE DATABASE junk;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON junk.* TO 'works'@'localhost' IDENTIFIED BY 'p@ssw0rd';
Query OK, 0 rows affected (0.01 sec)

mysql> quit;
Bye

nginxの設定

nginxのインストールは別稿に譲るとして、とりあえず独自ドメインでアクセスできるように設定します。

/usr/local/etc/nginx/nginx.confに次のようなserverブロックを追加。
wwwありを正式なアドレスとして正規化します。
また、ログイン画面アタックを防止するためにBasic認証も設定しました。
その他、WordPressを動作させるためのphpの設定なども。

server {
    listen       80;
    server_name  junk-works.science;
    return 301 https://www.junk-works.science$request_uri;
}
server {
    listen       80;
    server_name  www.junk-works.science;
    root   /usr/local/www/junkworks;
    index  index.php index.html index.htm;

    location = /wp-config.php { deny all; }
    location = /xmlrpc.php { deny all; }
    location = /wp-login.php {
        auth_basic "Restricted";
        auth_basic_user_file /home/user/.htpasswd;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME /usr/local/www/junkworks/$fastcgi_script_name;
        include fastcgi_params;
    }
    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }
    location ~ \.php$ {
        fastcgi_index index.php;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME /usr/local/www/junkworks/$fastcgi_script_name;
        include fastcgi_params;
    }
}

wp-config.phpの設定

ドキュメントルート下にあるwp-config-sample.phpをwp-config.phpにリネームして設定します。
書き換えるのは3箇所。

MySQLの設定はMySQLユーザーとデータベースの作成で設定した内容に書き換えます。

認証用ユニークキーは素直にWordPress Codex日本語版の認証ユニークキーにあるオンラインジェネレータを使います。

最後にデータベーステーブルは、ひとつのMySQLに複数のWordPressデータを保存しているので被らないように書き換えます。

〜前略〜

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'junk');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'works');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'p@ssw0rd');

〜中略〜

/**#@+
 * 認証用ユニークキー
 *
 * それぞれを異なるユニーク (一意) な文字列に変更してください。
 * {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org の秘密鍵サービス} で自動生成することもできます。
 * 後でいつでも変更して、既存のすべての cookie を無効にできます。これにより、すべてのユーザーを強制的に再ログインさせることになります。
 *
 * @since 2.6.0
 */
define( 'AUTH_KEY',         't`DK%X:>xy|e-Z(BXb/f(Ur`8#~UzUQG-^_Cs_GHs5U-&Wb?pgn^p8(2@}IcnCa|' );
define( 'SECURE_AUTH_KEY',  'D&ovlU#|CvJ##uNq}bel+^MFtT&.b9{UvR]g%ixsXhGlRJ7q!h}XWdEC[BOKXssj' );
define( 'LOGGED_IN_KEY',    'MGKi8Br(&{H*~&0s;{k0<S(O:+f#WM+q|npJ-+P;RDKT:~jrmgj#/-,[hOBk!ry^' );
define( 'NONCE_KEY',        'FIsAsXJKL5ZlQo)iD-pt??eUbdc{_Cn<4!d~yqz))&B D?AwK%)+)F2aNwI|siOe' );
define( 'AUTH_SALT',        '7T-!^i!0,w)L#JK@pc2{8XE[DenYI^BVf{L:jvF,hf}zBf883td6D;Vcy8,S)-&G' );
define( 'SECURE_AUTH_SALT', 'I6`V|mDZq21-J|ihb u^q0F }F_NUcy`l,=obGtq*p#Ybe4a31R,r=|n#=]@]c #' );
define( 'LOGGED_IN_SALT',   'w<$4c$Hmd%/*]`Oom>(hdXW|0M=X={we6;Mpvtg+V.o<$|#_}qG(GaVDEsn,~*4i' );
define( 'NONCE_SALT',       'a|#h{c5|P &xWs4IZ20c2&%4!c(/uG}W:mAvy<I44`jAbup]t=]V<`}.py(wTP%%' );
/**#@-*/
/**
 * WordPress データベーステーブルの接頭辞
 *
 * それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
 * インストールすることができます。半角英数字と下線のみを使用してください。
 */
$table_prefix  = 'jw_';

〜後略〜

WordPressを起動する

準備が整ったのでサイトにアクセスしてみましょう。

初回アクセス時にブログ名とユーザーの登録をします。

初回起動画面

必要情報の登録

登録完了

…と、もたもたしているうちにWordPressのバージョンが上がっていました。更新しましょう。

更新画面

完成しました!

ブログ完成

次回はWordPressの設定です。