ConoHaのVPS上で CentOS 7 + nginx + WordPress 構築まで

[投稿日] 2016年7月7日
[最終更新] 2016年9月26日

2016/07/20 修正:nginx.confを直接書き換えていたところを、conf.d/blog.confを作成して設定するようにしました。

ConoHa – GMOの高性能オールSSDクラウド」のConoHaのVPSで、CentOS 7 + nginx + WordPress 環境を構築します。慣れると30分の作業です。

スポンサーリンク

前提

ConoHa標準のCent OS 7は、最初からSELinuxが切られており、またEPELが使えるといった特徴があるので、他のVPSでは初期設定の部分で必要なところがあると思います。

また、サーバーの構築、起動については省きます。また、sshでrootでログインできる状態から始めるものとします。また、使用するドメイン名をexample.comとします。

sshユーザーの作成

rootログインは嫌なので、sshでログインするユーザーを作成します。ここでは、仮にtestユーザーとします。

ssh root@example.com
useradd test
passwd test
# testユーザーでsudoを使えるようにする
visudo
----
# 以下を追記
test    ALL=(ALL)       ALL
----
# testユーザーに切り替え
su - test

# 秘密鍵を作成. ここではパスフレーズ使用しないのでエンターキー連打
ssh-keygen -t rsa

# rootの許可リストをtestユーザー
sudo cp /root/.ssh/authorized_keys ~/.ssh/
sudo chown test:test ~/.ssh/authorized_keys
chmod 644 ~/.ssh/authorized_keys

# ここでいったんログアウト
# testユーザーでログインできることを確認する
ssh test@example.com

# sshのrootログインを禁止する
sudo vi /etc/ssh/sshd_config
sudo sed -i "s/PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config
sudo grep -i permitrootlogin /etc/ssh/sshd_config
-> no になっていることを確認

# sshサービスを再起動し、rootでログインできないことを確認。
sudo systemctl restart sshd.service

# ログアウトして、rootログインができないことを確認
ssh root@example.com
-> Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

# testユーザーならばログインできることを確認
ssh test@example.com
-> ログイン

以後、testユーザーでログインして操作するものとします。

必要なソフトウェアをインストールする

各種ソフトウェアをインストールします。nginx、mariadbを含みます。byobuを使っていますが、別に使わなくても問題ありません。個人的には、途中で接続が切断されても大丈夫なので、リモートログイン先ではよく使っています。

sudo yum install byobu
# 以後、byobu上で実行します。
byobu
# 基本的なソフトウェア
sudo yum update -y
sudo yum groupinstall -y "開発ツール"

# 個人的な趣味で入れているもの
sudo yum install -y emacs tig etckeeper ruby gnuplot
# 個人的な趣味で入れているもの2, python関係のインストールで必要だから
sudo yum install -y bzip2 bzip2-devel openssl-devel readline readline-devel sqlite-devel freetype* libpng-devel

# nginx, php, mariadb
# php-fpm は WordPress で必要
sudo yum install -y bash-completion unzip nginx php php-gd php-mbstring php-mysql php-pspell php-xml php-xmlrpc php-fpm mariadb mariadb-server
# 実行
sudo systemctl start nginx.service
sudo systemctl start php-fpm.service
sudo systemctl start mariadb.service
# 有効化(起動時にON)
sudo systemctl enable nginx.service
sudo systemctl enable php-fpm.service
sudo systemctl enable mariadb.service
# ステータスの確認
systemctl status nginx.service
systemctl status php-fpm.service
systemctl status mariadb.service

以上で、基本的なソフトウェアをインストールしました。

各種設定

さまざまな設定。

ファイアウォールの設定

ファイアウォールの設定をします。具体的には、httpで利用するポート80を開放します。

firewall-cmd --list-services
sudo firewall-cmd --add-service=http --zone=public
sudo firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --list-services

データベースの準備

WordPressで用いるデータベースを準備します。ここではMariaDBを利用していますが、MySQLでも同様かと。データベース名、ユーザー名、パスワードを決めておきます。

# データベース名 wpdata, ユーザー名 wpdbuser, パスワード pass とする
sudo mysql
> create database wpdata;
> grant all on wpdata.* to wpdbuser@'localhost' identified by 'pass';
> flush privileges;

nginxの設定

nginxの設定をします。大元の設定ファイルは /etc/nginx/nginx.conf ですが、ここでは /etc/nginx/conf.d/blog.conf を新たに作成し、そこに以下の内容を記述します。パーマリンク設定を変更することを前提とした設定になっています。参考記事は本記事の最後にのっけています。

なお、基本的な設定ファイルの読み方については「nginxの設定ファイル nginx.conf の読み方 超入門 – 或る阿呆の記」という記事を書きました。よければ御覧ください。

sudo nginx -t で設定ファイルの文法をチェックできます。変更したら忘れずに確認しましょう。

server {
    listen       80;
    listen       [::]:80;
# ドメインに合わせて適宜変更
    server_name  example.com;
    index        index.php;
# ドキュメントルートに合わせて適宜変更
    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

# 設定ファイルを見られないように
    location ~* /wp-config.php { deny all; }
    location ~ \.php$ {
             try_files $uri @wordpress;
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             include        fastcgi_params;
    }

    location / {
             try_files $uri $uri/ @wordpress;
    }

    location @wordpress {
             fastcgi_index index.php;
             fastcgi_split_path_info ^(.+\.php)(.*)$;
             fastcgi_pass  127.0.0.1:9000;
             fastcgi_param SCRIPT_FILENAME  $document_root/index.php;
             include       fastcgi_params;
    }

    error_page 404 /404.html;
    location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

php-fpmの設定

userとgroupをnginxに変更します。

sudo sed -i "s/user = apache/user = nginx/" /etc/php-fpm.d/www.conf
sudo sed -i "s/group = apache/group = nginx/" /etc/php-fpm.d/www.conf

サービスの再起動

ここまでの設定を反映させるために、サービスを再起動します。

sudo systemctl restart nginx.service
sudo systemctl restart php-fpm.service

WordPressのインストール

WordPressをインストールします。最新版のURLは「日本語 — WordPress」で確認。また、ここではドキュメントルートをデフォルトである/usr/share/nginx/htmlとしています。

インストールと設定ファイルの編集

cd
WPVER=4.6.1
wget https://ja.wordpress.org/wordpress-${WPVER}-ja.zip
unzip wordpress-${WPVER}-ja.zip
sudo cp -a wordpress/* /usr/share/nginx/html/
# ディレクトリ所有権の変更
sudo chown -R nginx:nginx /usr/share/nginx/html
# WordPressの設定
cd /usr/share/nginx/html
sudo cp -a wp-config-sample.php wp-config.php
# wp-config.php を編集して、前節のデータベース名、ユーザー名、パスワードを反映
# 認証用ユニークキーの設定
sudo vi wp-config.php

サイトにアクセス

ここまでできたら、ブラウザからアクセスできるようになります。アクセスして、初期設定を行い、またパーマリンクの設定やプラグインの導入などを行います。これで、一通り完成です。

参考リンク

多くの記事を参考にさせていただきました。ありがとうございます。

また、CentOS 7の基本的な操作については、下記の本を大いに参考にしました。

関連コンテンツ

関連記事

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。