SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ツールがなくてもサーバー構築でたじろがない! 一撃シェルスクリプト道場

WordPressとnginx+MySQL+memcached+wp-cliをインストールする一撃シェルスクリプト

ツールがなくてもサーバー構築でだじろがない! 一撃シェルスクリプト道場 最終回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード ICHIGEKI (9.5 KB)

PHPおよび依存パッケージをインストール

 本稿執筆時点で、CentOS 7.1の標準リポジトリでは、PHPは5.4系です。remi(remi-php56)リポジトリでは、PHPは5.6ですので、こちらからインストールすることにします。

 WordPressは、アップロードした画像を上下左右反転やリサイズなどの加工を行う機能があるのですが、php-gdライブラリが必要となります。remi-php56リポジトリにあるphp-gdは、標準リポジトリにあるgdライブラリではなく、remiリポジトリにあるgd-lastライブラリに依存しますので、まず先にこれをインストールします。

yum -y --enablerepo=remi install gd-last fontconfig fontpackages-filesystem jbigkit-libs libX11 libX11-common libXau libXpm libjpeg-turbo libpng libtiff libvpx libxcb

 次に、PHPをremi-php56リポジトリからインストールします。

yum -y --enablerepo=epel --enablerepo=remi-php56 install php-cli php-pdo php-pear php-pecl-igbinary php-pecl-jsonc php-pecl-msgpack php-process php-common php-fpm php-gd php-intl php-mbstring php-mcrypt php-mysqlnd php-opcache php-pecl-apcu php-pecl-geoip php-pecl-memcache php-pecl-memcached php-pecl-zip php-xml GeoIP libevent libmcrypt libmemcached libtool-ltdl libxslt t1lib libicu

 

PHP設定(/etc/php-fpm.d/www.conf)

 Fast-CGI形式で動作するPHP-FPMですが、設定ファイルは/etc/php-fpm.d/www.confになります。ログの設定やプロセスの起動方法、初回起動時の子プロセス数などの設定項目がありますが、必ず変更しないといけないのが、起動ユーザーです。デフォルト値がユーザー、グループともにapacheになっています。

user = apache
group = apache

 今回、Webサーバーはnginxで、起動ユーザーもnginxなので、これに合わせます。

user = nginx
group = nginx

 ここはsedのワンライナーで置換してしまいましょう。

sed -i.orig "/^[ug][sr][eo][ru]/s/\;//g;s/apache$/nginx/g" /etc/php-fpm.d/www.conf

 

PHP設定(/etc/php.ini)

 php.iniでは、デフォルトでは空の値になっているタイムゾーン設定にAsia/Tokyoを設定し、一撃シェルスクリプトの先頭で設定した制限値をここで代入します。もう一度、php.iniに設定する制限値を見てみましょう。

MEMLIMIT=256M                          # memory_limit (Default: 128M)
POSTMAXSIZE=32M                        # post_max_size (Default: 8M)
UPLOADMAXFILESIZE=128M                 # upload_max_filesize (Default: 2M)

 php.iniの設定もsedのワンライナーで行います。

PHPINI=/etc/php.ini
cp -p ${PHPINI}{,.orig}
sed -i "s/^;date.timezone\ =$/date.timezone = Asia\/Tokyo/" ${PHPINI}
sed -i "/^memory_limit/s/[0-9]*M$/${MEMLIMIT}/" ${PHPINI}
sed -i "/^post_max_size/s/[0-9]*M$/${POSTMAXSIZE}/" ${PHPINI}
sed -i "/^upload_max_filesize/s/[0-9]*M$/${UPLOADMAXFILESIZE}/" ${PHPINI}

 

nginxインストール、初期設定

 nginxのインストールと設定の手順は、ほぼ前回と同じです。nginxリポジトリのダウンロード、nginxのインストール、nginx.confの設定、バーチャルホストの設定ファイルの生成の順に行っていきます。

nginxリポジトリのダウンロード、nginxのインストール

 前回と流れは一緒ですが、リポジトリはRHEl7/CentOS7用のものを用います。

yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
cp -p /etc/yum.repos.d/nginx.repo{,.orig}
sed -i "/^baseurl/s/centos/mainline\/centos/" /etc/yum.repos.d/nginx.repo
yum -y install nginx

 /var/lib/php/sessionと/var/lib/php/wsdlcacheはphp-fpmインストール後にできるディレクトリですが、これらのグループはデフォルトでapacheになっています。

$ ll /var/lib/php/
total 8
drwxrwx--- 2 root apache 4096 Apr 16 21:48 session
drwxrwx--- 2 root apache 4096 Apr 16 21:48 wsdlcache

 このため、グループをnginxにします。

sudo chgrp nginx /var/lib/php/{session,wsdlcache}

 

nginx.confの設定

 nginx.confの設定ですが、worker_processesを1からautoへ変更します。

sed -i.orig "s/worker_processes[[:space:]]\+[0-9]\+/worker_processes auto/" /etc/nginx/nginx.conf

 

バーチャルホストの設定ファイルの生成

 バーチャルホストの設定ファイルは、/etc/nginx/conf.d/の下に、バーチャルホストの名前をファイル名にして生成します。

cat << _EOL_ | tee /etc/nginx/conf.d/${VHOST}.conf
server {
    listen       80;
    server_name  ${VHOST};
    access_log  /home/logs/${VHOST}/access_log  main;
    error_log  /home/logs/${VHOST}/error_log;

    location / {
        root   /home/vhosts/${VHOST}/public_html;
        index  index.php index.html index.htm;

        ## WordPressのパーマリンク設定をカスタム構造に ##
        if (-f \$request_filename) {
                expires 30d;
        }
        if (!-e \$request_filename) {
                rewrite ^.+?(\$/wp-.*) \$1 last;
                rewrite ^.+?(/.*\.php)\$ \$1 last;
                rewrite ^ /index.php last;
        }
        ## ここまで ##
    }

    location ~ \.php\$ {
        root   /home/vhosts/${VHOST}/public_html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  \$document_root/\$fastcgi_script_name;
        client_max_body_size 256M;
        include        fastcgi_params;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /usr/share/nginx/html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

_EOL_

 特に難しいことはしていないのでソースコードの解説は省略しますが、この後、バーチャルホストの公開用ディレクトリ、ログディレクトリを作成し、ログローテーションの設定を追加しています。

次のページ
memcachedのインストールと各デーモンの起動

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ツールがなくてもサーバー構築でたじろがない! 一撃シェルスクリプト道場連載記事一覧

もっと読む

この記事の著者

濱田 康貴(ハマダ ヤスタカ)

サーバーエンジニアとして主にLinuxのWEBサーバーを設計、構築、運用を行っています。運用ツールの相棒としてシェルスクリプトやワンライナーは心強いパートナーと信じて疑わず、ブログでTIPSを公開しています。2009年5月のUSP友の会活動開始より参画し、現副会長。最近では、USP友の会で「一撃サーバー構築シェルスクリプト勉強会」を開催しているほか、日本で唯一のシェルスクリプト総合誌『シェルスクリプトマガジン』(毎月25日発売)で、隔月(偶数月号)連載「教えて先輩 サーバー運用お助けTips」を執筆しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8703 2015/06/02 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング