CentOS7 + PHP7.1 + h2o + MariaDB10.1 + Word Press

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

こんにちは、おてらです。

CentOSも7がリリースされてはや1年、そろそろちゃんと使えるようにならないとね!CentOS7といえばPHPも7になったしね。それにDBもMySQLからMariaDBに変わるしね。え?Webサーバも新しいの出た?h2o?Word Pressが早くなる?

というわけで全部CentOS7にぶち込んでみた。

CentOS 7の初期設定

システムの最新化

yum コマンドでシステムを最新化しておきましょう。

yum -y update

日本語環境にする

※日本語環境じゃなくてもいいよって人は飛ばしてください。

パッケージをインストールします。

yum -y install ibus-kkc vlgothic-*

システムの文字セットを変更します。

localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf
echo $LANG

タイムゾーンを東京に変更する

timedatectl set-timezone Asia/Tokyo

確認します。

timedatectl
      Local time: 水 2016-10-19 15:15:29 JST
  Universal time: 水 2016-10-19 06:15:29 UTC
        RTC time: 水 2016-10-19 06:15:29
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

ひとまずOS側の設定はこれでOKでしょう。

続いてPHP7.1のインストールを行います。

PHP 7.1インストール

php-v7-logo

CentOS 7系のデフォルトのPHPのバージョンは5.4となっています。7系を手っ取り早くインストールするためには remi リポジトリを利用します。

  • epel を追加
yum -y install epel-release
  • remi を追加
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

追加したリポジトリを使ってyumでインストールします。
インストールするパッケージは必要に応じて追加したり減らしたりしてください。

yum install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-pdo php-gd

h2oをインストール

cmakeをインストール

h2oをインストールするにはcmakeコマンドが必要なのでインストールしておきます。

yum install cmake

ソースファイルの取得

続いてソースを取得します。
適当なユーザのホームディレクトリなどで行いましょう。

cd ~/
git clone --depth=1 https://github.com/h2o/h2o.git
cd h2o

ビルド&インストール

cmake -DWITH_BUNDLED_SSL=off .
make && make install

起動スクリプトの用意

systemctlコマンドで起動、停止、再起動、ステータス確認が出来るようにスクリプトを用意します。

vi /usr/lib/systemd/system/h2o.service
[Unit]
Description=H2O optimized HTTP server

[Service]
Type=forking
PIDFile=/var/run/h2o/h2o.pid
ExecStartPre=-/usr/bin/mkdir -p /var/run/h2o /var/log/h2o
ExecStartPre=-/usr/bin/chown USERNAME:USERNAME /var/run/h2o /var/log/h2o
ExecStart=/usr/local/bin/h2o -c /etc/h2o/h2o.conf -m daemon
ExecReload=/usr/bin/kill -HUP $MAINPID
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target

SSL証明書の用意

以下のばっしーさんの記事を参考に今回もLet’s Encryptで証明書を取得しました。

無料SSLサーバー証明書「Let’s Encrypt」 を使ってみた

設定ファイルの準備

慣例に習い/etc/以下にh2oというディレクトリを用意し、そこに設定ファイルを作成しました。

mkdir /etc/h2o
vi /etc/h2o/h2o.conf

色々な記事を参考にさせてもらい、こんな感じに設定。
certificate-file と key-file の部分でLet’s Encryptで取得した証明書を指定しています。

user: nobody
access-log: /var/log/h2o/access.log
error-log: /var/log/h2o/error.log
pid-file: /var/run/h2o/h2o.pid

file.custom-handler:
  extension: .php
  fastcgi.spawn: "PHP_FCGI_CHILDREN=10 exec /usr/bin/php-cgi"

file.index: [ 'index.php','index.html' ]

hosts:
  "hogehoge:443":
    listen:
      port: 443
      ssl:
        certificate-file: "/etc/letsencrypt/live/hogehoge.com/fullchain.pem"
        key-file: "/etc/letsencrypt/live/hogehoge.com/privkey.pem"
        minimum-version: TLSv1
    paths:
      "/":
        file.dir: /home/web/wordpress/
        file.dirlisting: ON
        redirect:
          url: /index.php/
          internal: YES
          status: 307
  "hogehoge.com:80":
    listen:
      port: 80
    paths:
      "/":
        redirect:
          status: 301
          url: https://hogehoge.com/

http2-reprioritize-blocking-assets: ON

h2o起動

h2oを起動させます。

systemctl start h2o

ついでに自動起動するようにも設定。

systemctl enable h2o

ちゃんと起動したかどうか確認します。

systemctl status h2o
● h2o.service - H2O optimized HTTP server
   Loaded: loaded (/usr/lib/systemd/system/h2o.service; enabled; vendor preset: disabled)
   Active: active (running) since 水 2016-10-19 15:54:07 JST; 1min 1s ago
  Process: 7845 ExecStart=/usr/local/bin/h2o -c /etc/h2o/h2o.conf -m daemon (code=exited, status=0/SUCCESS)
  Process: 7843 ExecStartPre=/usr/bin/chown root:root /var/run/h2o /var/log/h2o (code=exited, status=0/SUCCESS)
  Process: 7841 ExecStartPre=/usr/bin/mkdir -p /var/run/h2o /var/log/h2o (code=exited, status=0/SUCCESS)
 Main PID: 7848 (perl)
   CGroup: /system.slice/h2o.service
           tq7848 perl -x /usr/local/share/h2o/start_server --pid-file=/var/run/h2o/h2o.pid --log-file=/var/log/h2o/error.log --daemonize --port=0.0.0.0:443 --port=[::]:443 --port=0.0.0.0:80 --port=[::]:80 -- /usr/local/b...
           tq7849 /usr/local/bin/h2o -c /etc/h2o/h2o.conf
           tq7850 perl -x /usr/local/share/h2o/kill-on-close --rm /tmp/h2o.fcgisock.nF6qSM -- /usr/local/share/h2o/setuidgid web /bin/sh -c PHP_FCGI_CHILDREN=10 exec /usr/bin/php-cgi
           tq7851 /usr/local/bin/h2o -c /etc/h2o/h2o.conf
           tq7854 /usr/bin/php-cgi
           tq7857 perl -x /usr/local/share/h2o/annotate-backtrace-symbols
           tq7862 /usr/bin/php-cgi
           tq7863 /usr/bin/php-cgi
           tq7864 /usr/bin/php-cgi
           tq7865 /usr/bin/php-cgi
           tq7866 /usr/bin/php-cgi
           tq7867 /usr/bin/php-cgi
           tq7868 /usr/bin/php-cgi
           tq7869 /usr/bin/php-cgi
           tq7870 /usr/bin/php-cgi
           mq7871 /usr/bin/php-cgi

10月 19 15:54:07 hogehoge.com systemd[1]: Starting H2O optimized HTTP server...
10月 19 15:54:07 hogehoge.com h2o[7845]: start_server (pid:7845) starting now...
10月 19 15:54:07 hogehoge.com systemd[1]: PID file /var/run/h2o/h2o.pid not readable (yet?) after start.
10月 19 15:54:07 hogehoge.com systemd[1]: Started H2O optimized HTTP server.

これでh2oが起動できました。
この状態ではまだWord Pressを設置していないのでブラウザからアクセスしてもNot foundになるだけです。

もし動作確認をしたい場合は、/home/web/wordpress ディレクトリにindex.htmlを作成してhello worldさせてみましょう。

MariaDB 10.1のインストール

mariadb

MariaDBのアシカさん、割と好きです。

リポジトリの追加

CentOS7のデフォルトのMariaDBのバージョンは5.5ですが、MariaDB公式から10.1をインストールするためのリポジトリが用意されているのでそれを使います。

URL:https://downloads.mariadb.org/mariadb/repositories/

上記リンクから以下のように選択します。

  1. Choose a Distro : CentOS
  2. Choose a Release : CentOS 7 (64-bit)
  3. Choose a Version : 10.1

するとリポジトリファイルに記載する内容が表示されるのでコピーしてリポジトリファイルを作成します。

vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.1 CentOS repository list - created 2016-10-19 08:19 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

その後、yumでインストールしましょう。

yum install MariaDB-server MariaDB-client MariaDB-devel

確認してみると

mysql -V
mysql  Ver 15.1 Distrib 10.1.18-MariaDB, for Linux (x86_64) using readline 5.1

となり、きちんと10.1がインストールされていることが分かりますね。

初期設定

MariaDBを起動させて初期設定を行います。

systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation

あとはデータベースとユーザを作成してWordPressを設置すれば見事完成です。

まとめ

技術ブログらしく新しい技術を取り入れた記事を書いてみました。

サイトのSSL化とHTTP/2の利用が今後は絶対条件になりつつあるので遅かれ早かれ対応する必要が出てきます。

今回それに向けて、ということでh2oを初めて触ってみたのですが、Apacheに比べてconfigの内容は非常にコンパクト・シンプルなのでとても扱いやすいと感じました。

構築したサーバは空っぽのWordPressを設置しただけなのであまり実感は沸きませんが、HTTP/2で速度も向上するということなのでこれから期待が膨らみますね。

 

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す