Logical Rabbit.

さくらのVPS

さくらのクラウドでphp7環境を作るまで。

遅ればせながら「さくらのクラウド」にアカウントを作って、php7環境を構築して見たなど。

…そしてこの記事を下書きのまま3ヶ月ほど寝かせる事案… orz

「さくらのクラウド」のセットアップ

アカウントの作成

既にさくらインターネットの会員IDは取得済みです。そこから「さくらのクラウド」の利用を開始 →「さくらのクラウド」内にアカウントを作成 →「さくらのクラウド」内アカウント内にユーザーを作成、までやってようやくサーバーインスタンスが作れるようになります。何なんだこの多重構造(汗) 組織内で大規模に使うときは必要そうだけど、個人で使うには過剰ですね…。

「さくらのクラウド」の利用を開始するにあたっては電話認証も必要なので、ここは電話を掛けられる環境で作業する必要があります。

サーバーインスタンスの作成

まずデータセンターを選択します。同一スペックなら石狩のほうが安いっぽいです。都心部からの通信速度をシビアに要求するとか欲しい機能がリリースされているとかの理由で選択することになるでしょう。

次にサーバーインスタンスを…といきたいのですが、先にパケットフィルタを定義しておいたほうが手順的に楽です。

取り敢えずテンプレートを使用して、SSHは自宅IP(固定契約)、NTPはさくらインターネット提供のNTPサーバーのIPでフィルタを定義。私の場合自宅のほかもう1箇所よく使うIPがあるので、フィルタ定義後に[ルール] →[追加]でSSHの開放を1つ追加。この際追加位置に気をつけないと、最終行の「その他は全部拒否」の下に追加してしまい、つながらなくて首を捻ることになります(360°ほど捻った)。

本当はSSHポートも変更したほうがいいけど、IPのほうをガチガチに絞ったから、まぁ、いいかな、と。

そしてようやくサーバーインスタンスの定義です。「シンプルモード」だとパケットフィルタを選択できない様子? 「非シンプルモード」は1台だけちょっと作るには設定項目が過剰で面倒だけど。

OSはCentOS 7を選択。CPU/メモリはお試し環境ゆえ最小限で十分なのですが、最初はOSアップデートやコンパイルをやるので余裕を持たせておくと快適です。ただし後で戻すのを忘れると請求書が鬼と化しますが。フフフ、怖いか?

サーバー環境の構築

とりま、yum upgrade で最新環境にしておきます。あとsudoできる作業ユーザーを作ってrootは封印。

# useradd worker
# passwd worker
(パスワード入力)
# visudo
(worker をsudo可能ユーザーに)
# su - worker
[worker]$ ssh-keygen
(パスフレーズの設定などはお好みで)
[worker]$ vi .ssh/authorized_keys
(作業PCの公開鍵を登録)
[worker]$ chmod 600 .ssh/authorized_keys
[worker]$ exit
# vi /etc/ssh/sshd_config
(PermitRootLogin no を追記)
# systemctl restart sshd

以後はworkerユーザーで作業していきます。

php 7の導入

http://php.net/から最新版をダウンロード、適当な場所に展開します。

configureの設定は以下のようにしました。必要なライブラリの導入~configure実行~make test(+コメントアウトしているけどmake installとconfの配置)までをgistに記録してあります。実行前にprefixだけは確認してください。

ここまでで高負荷作業は終了するので、いったんサーバーをシャットダウン、プラン変更で実作業に必要な程度のCPU/メモリスペックへ変更しておくことをおススメします。

なお、4コアCPU+4GBメモリ+20GB SSDのセッティングでここまで約1時間といったところ。CPU使い切っていたようなので、もうちょいコア数増やした方が幸せかも(いや、コンパイラがちゃんとマルチコア対応しているなら、ですが…)。

php-fpmの設定

/etc/php-fpm.conf.default を /etc/php-fpm.conf へリネームし、設定を調整します。

  • daemonize は no にする (systemctl用のファイルでも指定されているが念のため)
  • include が /etc/php-fpm.d/*.conf となっていることを確認。

/etc/php-fpm.d/www.conf.default を www.conf または適当な *.conf にリネームします。

  • [www] は適宜変更
  • prefix は /var 等とする(ログが /var/log/ 直下に作成される)
  • user および group は apache に変更

複数のphp-fpmを稼動させる場合は、[www] の括弧内と listen のポート番号を適切に変更しましょう。

前述のgist公開バッチファイルでsystemd用のファイルは配置・設定されている筈なので、php-fpmを登録・起動します。

$ sudo systemctl enable php-pfm
$ sudo systemctl start php-fpm

Apache2の設定

さくらインターネット側のセキュリティ設定としてパケットフィルタを設定していますが、CentOS側にもfirewalldがあるので、ここでhttpを通すようにしておく必要があります。

$ firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

$ sudo firewall-cmd --add-service http
success
$ sudo firewall-cmd --add-service http --permanent
success
$ firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client http ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

これでphp7を使うための環境が概ね整いました。