vagrantにcentos7+nginx+PHP7+mariadbの環境でwordpressを導入する
nginxの本を買って、試してみたが
centos6の記述だったり、初心者にはどのディレクトリにあるファイルのことを言っているのかわからなかったり、真似して一通りやってみたらphpのインストール書いてねーぞってなったり大変だった。。
とりあえず、以下の画像のページがvagrantで表示できるまでの記事。
購入したnginxの本は次の2冊
・nginx実践ガイド 2017年2月16日
・nginx実践入門 2016年1月16日
正直、この本だけで構築するのは無理そうだったが、
理解を深めるって点では、「nginx実践ガイド」は1年前くらいに出た本だから、まぁいいんじゃないでしょうか(雑)
##構築の仕方は次のような感じです。
(セキュリティなどの設定はまたおいおい。学習、入門などにどうぞ。)
作業用ディレクトリで以下のコマンドを実行する
vagrant init centos/7
Vagrantfileが生成される
vim Vagrantfile
Vagrantfile内(config.vm.networkの行)のコメントアウトを外す
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "private_network", ip: "192.168.33.10"
vagrantの起動と接続
vagrant up
vagrant ssh
ルートユーザに変更する
$ sudo su -
yumのアップデート
$ yum update
EPELリポジトリの追加
$ yum -y install epel-release
remiリポジトリの追加
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
使いそうなものをインストールしておく
vimのインストール (ついvimって打ってしまうので入れとく)
$ yum -y install vim
wgetのインストール (wordpressインストールとかに使う)
$ yum -y install wget
nginxのインストール準備
リポジトリの追加
$ vim /etc/yum.repos.d/nginx.repo
以下を記述して保存する
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=http://nginx.org/keys/nginx_signing.key
[nginx-source]
name=nginx source
baseurl=http://nginx.org/packages/mainline/centos/7/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://nginx.org/keys/nginx_signing.key
nginxをインストールする
$ yum -y install nginx
nginxのバージョン確認
$ nginx -v
nginx version: nginx/1.15.0
自動アップデートの設定
$ yum install yum-cron
$ vim /etc/yum/yum-cron.conf
Vagrantfile内のapply_updatesをnoからyesに修正する
# Whether updates should be applied when they are available. Note
# that download_updates must also be yes for the update to be applied.
apply_updates = yes
nginxの状態確認(起動前)
$ systemctl status nginx
Active: inactive (dead)
nginxの起動
$ systemctl start nginx
nginxの状態確認(起動後)
$ systemctl status nginx
Active: active (running)
サーバ再起動時にnginxが自動起動するように設定するようにする
$ systemctl enable nginx.service
(※ centos6などは次のようなコマンド。"chkconfig nginx on"。 参考サイト探しているときに紛らわしい。。)
ブラウザでアクセス(vagrantfileでコメントアウトを外したip)
http://192.168.33.10/
welcome to nginx!
表示される!!
##次からは、wordpressの準備!
nginxでwebアプリケーション(phpの場合)を使用するために、php-fpmが必要なので入れる(結構ハマった。)
nginxの設定
$ vim /etc/nginx/conf.d/default.conf
以下を編集する
(〜.confのファイルが読み込まれるらしい。本やブログごとに名前が違って紛らわしいが、だぶんそういうこと。)
server {
listen 80;
server_name localhost;
root /var/www/html/;
charset UTF-8;
access_log /var/log/nginx/sample.com.access.log main;
error_log /var/log/nginx/sample.com.error.log;
location / {
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
nginxの再起動
$ systemctl restart nginx
phpとphp-fpmのインストール
$ yum -y install --enablerepo=epel,remi,remi-php72 php php-mbstring php-pdo php-mysqlnd php-fpm
PHPのバージョン確認
$ php -v
PHP 7.2.7
php-confの設定を行う
$ vim /etc/php-fpm.d/www.conf
それぞれの行を修正する
修正前
listen = 127.0.0.1:9000
修正後
listen = /var/run/php-fpm/php-fpm.sock
修正前
user = apache
修正後
user = nginx
修正前
group = apache
修正後
group = nginx
修正前
;listen.owner = nobody
;listen.group = nobody
修正後
listen.owner = nginx
listen.group = nginx
php-fpmの起動
$ systemctl start php-fpm
php-fpmの状態確認
$ systemctl status php-fpm
サーバ再起動時にphp-fpmが自動起動するように設定するようにする
$ systemctl enable php-fpm
とりあえず、phpが使えるか確認してみる。
$ cd /var/www/html
$ vim index.php
みんな大好き hello world! 以下を記述して保存する。
<?php echo 'Hello PHP7';
ブラウザでアクセス
http://192.168.33.10/
表示された!
先ほどのindex.phpはいらないので消しとく
$ rm index.php
wordpressのインストール
$ cd /var/www/html/
日本語版の最新のwordpressを取得する
$ wget https://ja.wordpress.org/latest-ja.tar.gz
解凍する
$ tar xfz latest-ja.tar.gz
以下のディレクトリが生成される
wordpress
wordpressディレクトリの所有権を変更する
$ chown -R nginx. wordpress
アクセスすると...
http://192.168.33.10/wordpress/
リダイレクトされ、セットアップ画面が表示される!
http://192.168.33.10/wordpress/wp-admin/setup-config.php
URLにwordpressが含まれているとなんか嫌なので整える
wordpressをリネイム(とりあえず、sample.comにする)
$ mv wordpress sample.com
rootの位置をsample.comにする
nginxの設定を修正する
$ vim /etc/nginx/conf.d/default.conf
rootの行を修正する
server {
listen 80;
server_name localhost;
root /var/www/html/sample.com;
charset UTF-8;
省略...
設定を変更したのでnginxの再起動
$ systemctl restart nginx
↑にアクセスすると↓にリダイレクトされる
よしよし。
mysql(mariadb)をインストールする
$ yum -y install mariadb-server
mariadbの起動
$ systemctl start mariadb
サーバ起動時に自動で起動するように設定
$ systemctl enable mariadb
mariadb状態確認
$ systemctl status mariadb
wordpress用のデータベースを作成する
$ mysqladmin -uroot create wordpress
$ mysql -uroot
MariaDB > GRANT ALL PRIVILEGES ON wordpress .* TO (ここにユーザ名)@localhost IDENTIFIED BY 'ここにパスワード';
(ユーザ作ったけど、なんやかんやハマってしまいrootユーザで進めます)
$ chown -R nginx:nginx /var/www/html/sample.com
$ systemctl restart nginx
$ systemctl restart php-fpm
以下にアクセスして、wordpressの初期設定を行う(データベース繋ぎこみ)
http://192.168.33.10/
ユーザ: root
パスワード:
ホスト名: localhost
何度か上記の内容で設定しようとしたが上手くいかず、
wordpressにこれコピぺしてwp-config.php設定してまたアクセスしてよって言われる。
画面をコピペして、以下に配置する
$ vim /var/www/html/sample.com/wp-config.php
内容は、以下のファイルを参考に作成できそう。
$ vim /var/www/html/sample.com/wp-config-sample.php
各行を以下のような内容で修正する
define('DB_NAME', 'wordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
これで再度アクセスして設定する
http://192.168.33.10/
wordpressの初期テーマの画面が表示される!
※ 403 Forbiddenが表示される場合
SELinuxを無効にする(本番ではないのでとりあえず無効でok)
$ sudo getenforce
Enforcing
$ sudo setenforce 0
$ sudo getenforce
permissive
デフォルトで無効にする場合
vim /etc/selinux/config
修正前:
SELINUX=enforcing
修正後:
SELINUX=disabled
なんとかwordpressの画面が表示されるまでできた。
mysqlあたりの設定が適当になったので、なんとかしたい。。。
とりあえず、今回はnginxでwordpressが使えるようになったので良しとしよう!
次は、varnishとwordpressを使ってみたり、ログの収集やセキュリティ、本番運用など学習したい。
良いサイトや本あったら教えてください。
参考書:
・nginx実践ガイド
・nginx実践入門