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

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

前提条件

  • VPS:Vultr
  • OS:FreeBSD13.1
  • DBサーバー:MariaDB 10.6
  • Webサーバー:nginx 1.22.0

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

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

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

ローカルに落としてftpでアップロードとかだるいので、直接サーバーにダウンロードします。今回はwgetで。ダウンロードでエラーになる場合はwgetに–no-check-certificateオプションをつけるとダウンロードできます。

# wget https://ja.wordpress.org/wordpress-6.0.1-ja.tar.gz --2022-07-23 15:55:18-- https://ja.wordpress.org/wordpress-6.0.1-ja.tar.gz Resolving ja.wordpress.org (ja.wordpress.org)... 198.143.164.252 Connecting to ja.wordpress.org (ja.wordpress.org)|198.143.164.252|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 21978045 (21M) [application/octet-stream] Saving to: ‘wordpress-6.0.1-ja.tar.gz’ wordpress-6.0.1-ja.tar.gz 100%[=================================================>] 20.96M 10.5MB/s in 2.0s 2022-07-23 15:55:21 (10.5 MB/s) - ‘wordpress-6.0.1-ja.tar.gz’ saved [21978045/21978045]
Code language: PHP (php)

ちょうはやい。

WordPressファイルの展開

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

# tar -xzvf wordpress-6.0.1-ja.tar.gz x wordpress/ x wordpress/wp-login.php 〜中略# rm wordpress-6.0.1-ja.tar.gz # mv wordpress admin-days # chown -R www:www admin-days
Code language: PHP (php)

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

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

今回使ってるのはMariaDBだけどね。ま、コマンド名含めてMySQLと何も変わらない。

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

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

# mysql -uroot -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 10.6.8-MariaDB-log FreeBSD Ports Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. root@localhost [(none)]> CREATE USER 'works'@'localhost' IDENTIFIED BY 'p@ssw0rd'; Query OK, 0 rows affected (0.003 sec) root@localhost [(none)]> CREATE DATABASE junk; Query OK, 1 row affected (0.00 sec) root@localhost [(none)]> GRANT ALL PRIVILEGES ON junk.* TO 'works'@'localhost'; Query OK, 0 rows affected (0.01 sec) root@localhost [(none)]> flush privileges; Query OK, 0 rows affected (0.001 sec) root@localhost [(none)]> quit; Bye
Code language: PHP (php)

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; } }
Code language: PHP (php)

wp-config.phpの設定

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

データベースの設定はMySQLユーザーとデータベースの作成で設定した内容に書き換えます。データベースのホスト名はunix socketのパスによってはlocalhostの後に追記してやらないと、「データベース接続確立エラー」が発生してしまいます。

認証用ユニークキーは素直にWordPress公式が提供しているオンラインジェネレータを使いましょう。

データベーステーブルは、複数のWordPressデータを保存している場合に被らないように書き換えます。

〜前略// ** データベース設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', 'junk'); /** データベースのユーザー名 */ define('DB_USER', 'works'); /** データベースのパスワード */ define('DB_PASSWORD', 'p@ssw0rd'); /** データベースのホスト名 */ define( 'DB_HOST', 'localhost:/var/run/mysql/mysql.sock' ); 〜中略/**#@+ * 認証用ユニークキー * * それぞれを異なるユニーク (一意) な文字列に変更してください。 * {@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_'; 〜後略
Code language: PHP (php)

WordPressを起動する

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

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

設定画面
設定完了

設定完了後、ログインします。ログインページはちゃんとBasic認証で保護されています。

完成しました!

ブログ完成

次回はWordPressの設定です。