LoginSignup
9
10

More than 5 years have passed since last update.

CentOS7でのwordpress導入メモ

Last updated at Posted at 2015-04-16

CentOS7にwordpressを入れることがあったのでメモ

nginx + php-fpm + mysqlで、fastcgi cacheの設定もします。
mysqlのインストールは今回はスキップして、別ホストのデータベースを利用しています。

phpインストール

php-fpmと関連モジュールのインストール

$ sudo yum -y install php-mysql php php-gd php-mbstring php-fpm

php-fpmの設定

/etc/php-fpm.d/www.confを編集

使用するポート、許可するクライント、ユーザ名、グループ名の設定
最大プロセス数を10、起動時プロセス数5、アイドル状態のプロセス数の最小値3、
アイドル状態のプロセス数の最大値8、500リクエスト受け取るとプロセス再起動
(TCP/IPではなく、Unix Socketを使ってもいいかも)

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm.max_children = 10
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 8
pm.max_requests = 500

nginxユーザの追加

$ cat /etc/passwd|grep nginx

でnginxユーザがあるかどうかチェック

あればこの項目はスキップ

$ sudo addgroup nginx
$ sudo useradd -s /usr/sbin/nologin -g nginx -d /var/www -c nginx nginx

サービスの起動、自動起動設定

$ sudo systemctl start php-fpm.service
$ sudo systemctl enable php-fpm.service
$ sudo systemctl list-unit-files |grep php-fpm

データベースの設定

DBサーバーにて、wordpress_userというユーザを作成、wordpress_dbというデータベースを作成
ホストの部分は自分の環境に合わせて変更してください。

$ ssh db
$ mysql -u root -p
> CREATE USER 'wordpress_user'@'192.168.1.%' IDENTIFIED BY 'ぱすわーど';
> CREATE DATABASE wordpress_db;
> GRANT ALL ON wordpress_db.* TO wordpress_user;
> FLUSH PRIVILEGES;
> quit
$ exit

nginxのインストール

Nginxリポジトリとnginxをインストールする

$ sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum -y install nginx

nginxの設定

/etc/nginx/nginx.confを編集
ユーザー、グループをnginxに、worker_processesを2に、アップロードサイズを10MBに
(ここも自分の環境とかに合わせて任意で)

user  nginx nginx;
worker_processes  2;
client_max_body_size 10M;

wordpress用のnginxの設定

/etc/nginx/conf.d/wordpress.confを作成
ポート、ホスト名、パス、ログ、PHPの設定
ファイルが存在しないURIの場合は、index.phpへ転送

server {
    listen       80;
    server_name  www.example.com;
    root         /var/www/html/wp;
    index        index.php
    access_log   /var/log/nginx/wordpress.access.log warn;
    error_log    /var/log/nginx/wordpress.error.log warn;
    try_files $uri $uri/ /index.php?q=$uri&$args;

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

nginx起動

apache停止

$ sudo systemctl stop httpd.service
$ sudo systemctl disable httpd.service

nginx起動

$ sudo systemctl start nginx.service
$ sudo systemctl enable nginx.service
$ sudo systemctl list-unit-files |grep nginx

firewall設定

--permanentを付けないと再起動時に元に戻るので注意

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload

wordpressの配置

/var/www/html/wpにwordpressのフォルダを設置
この工程は省略

フォルダの所有者、パーミッションを変更

$ sudo chown -R nginx: /var/www/html/wp
$ cd /var/www/html/wp
$ sudo find . -type f -exec chmod 644 {} +
$ sudo find . -type d -exec chmod 755 {} +

semanageをインストールし、SELinuxでの書き込み権限付与

$ sudo yum -y install policycoreutils-python
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/wp(/.*)?"
$ sudo restorecon -R -v /var/www/html/wp

httpd_can_network_connectを有効に

これが無効だとデータベースに接続できない

$ sudo setsebool -P httpd_can_network_connect 1
$ getsebool httpd_can_network_connect

キャッシュの設定

/etc/nginx/nginx.confのhttpの中に以下を追記

fastcgi_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=wp-key:15m inactive=7d max_size=1000m;

/etc/nginx/conf.d/wordpress.conftry_filesの下辺りに追記

# fastcgi cacheのフラグ
set $do_not_cache 0;

# POST中の場合
if ($request_method != "GET") {
set $do_not_cache 1;
}
# WordPressにログイン中、コメント中、記事作成中
if ($http_cookie ~ ^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$) {
set $do_not_cache 1;
}
# モバイル系の場合
if ($http_x_wap_profile ~ ^[a-z0-9\"]+) {
set $do_not_cache 1;
}
# -- Mobile ?
if ($http_profile ~ ^[a-z0-9\"]+) {
set $do_not_cache 1;
}
# -- Kei-tai ?
if ($http_user_agent ~ ^.*(2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800).*) {
set $do_not_cache 1;
}
# -- Mobile ?
if ($http_user_agent ~ ^(w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-).*) {
set $do_not_cache 1;
}
# -- Kei-tai ?
if ($http_user_agent ~ ^(DoCoMo/|J-PHONE/|J-EMULATOR/|Vodafone/|MOT(EMULATOR)?-|SoftBank/|[VS]emulator/|KDDI-|UP\.Browser/|emobile/|Huawei/|IAC/|Nokia|mixi-mobile-converter/)) {
set $do_not_cache 1;
}
# -- Kei-tai ?
if ($http_user_agent ~ (DDIPOCKET\;|WILLCOM\;|Opera\ Mini|Opera\ Mobi|PalmOS|Windows\ CE\;|PDA\;\ SL-|PlayStation\ Portable\;|SONY/COM|Nitro|Nintendo)) {
set $do_not_cache 1;
}

/etc/nginx/conf.d/wordpress.confinclude fastcgi_params;の下辺りに追記

fastcgi_cache wp-key;
fastcgi_cache_key    $scheme://$host$request_uri;
fastcgi_cache_valid 200 10m;
fastcgi_cache_valid 404 1m;
fastcgi_no_cache $do_not_cache;
fastcgi_cache_bypass $do_not_cache;

フォルダの作成、権限の変更

$ sudo mkdir -p /var/cache/nginx/cache
$ sudo chown -R nginx:nginx /var/cache/nginx/cache

nginx反映

$ sudo systemctl start nginx.service

参考

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10