概要
Alpine Linux での PHP 開発環境構築に取り組みました。パッケージ管理ツールの apk の練習も兼ねています。
Alpine Linux は 5MB の軽量のディストリビューションです。Alpine Linux の開発チームのメンバーは Docker 社に雇用されており、公式イメージの対応が少しずつ進められています。
2016年3月に Docker for Mac and Windows が公開され、VirtualBox を使わずに xhyve Virtual Machine (Mac OS X) もしくは Hyper-V VM で Docker が利用できるようにするツールが開発されています。しかしながら、招待を申請してトークンをメールで受理した人しか使えません。
Vagrant プラグインを導入する
vagrant plugin
サブコマンドでセットアップを支援してくれるプラグインを導入します。
vagrant plugin install vagrant-alpine
Vagrant Box をセットアップする
次のコマンドを実行します。利用できるバージョンは README をご参照ください。
vagrant init maier/alpine-3.3.1-x86_64
Vagrant Box にアクセスします。
vagrant up
vagrant ssh
ホストマシンのブラウザーから HTTP サーバーにアクセスできるようにポートフォワードの設定を Vagrantfile に追加します。
config.vm.network "forwarded_port", guest: 80, host: 3000
Guest Additions のインストールが毎回失敗するので、無効にします。
config.vbguest.auto_update = false
config.vbguest.no_remote = true
上記の設定を利用するために vagrant-vbguest をインストールしておきます。
vagrant plugin install vagrant-vbguest
合わせて共有フォルダーを無効にしました。
config.vm.synced_folder '.', '/vagrant', disabled: true
再起動します。
vagrant reload
リポジトリを追加する
PHP 7.0 を利用するために edge/testing リポジトリを追加します。/etc/apk/repositories
を開き、コメント行を解除して次の URL を追加します。
#/media/cdrom/apks
http://repos.dfw.lax-noc.com/alpine/v3.3/main
http://repos.dfw.lax-noc.com/alpine/edge/main
http://repos.dfw.lax-noc.com/alpine/edge/testing
リポジトリのインデックスを更新します。
sudo apk update
PHP のコマンドツールをインストールする
PHP 7.0 をインストールしてみましょう。ツールの名前は php7 になっています。
sudo apk add php7
オプションの --update
を指定することで、リポジトリのインデックス更新と同時にパッケージを導入することができます。
sudo apk add --update php7
バージョンを確認します。
php7 --version
PHP のプログラムを用意する。
echo "<?php phpinfo();" > index.php
PHP のビルトインサーバーを起動させてみよう。
sudo php7 -S 0.0.0.0:80
Apache と mod_php をインストールする
今度は Apache と mod_php をインストールします。
sudo apk add apache2 php7-apache2
/var/www/localhost/htdocs
に PHP スクリプトを設置します。
サービスを起動させてみましょう。
sudo service apache2 start
サービスを停止させるには次のコマンドを実行します。
sudo service apache2 stop
OS 起動時にサービスを自動起動させるには次のコマンドを実行します。
sudo rc-update add apache2
nginx と php-fpm をインストールする
PHP 7.0 の FPM (FastCGI Process Manager) をインストールして起動させます。
sudo apk add php-fpm7
sudo service php-fpm7 start
次に nginx をインストールして起動させます。
sudo apk add nginx
sudo service nginx start
FPM 対応のために /etc/nginx/nginx.conf を編集します。
location ~ \.php$ {
root /path/to/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
nginx を再起動します。
sudo service nginx restart
h2o (HTTP サーバー) をインストールする
HTTP サーバーの h2o をインストールして起動させてみよう。
sudo apk add h2o
sudo service h2o start
php-fpm を利用するために /etc/h2o.conf
を修正しよう。
user: h2o
pid-file: /var/run/h2o.pid
error-log: /var/log/h2o/error.log
access-log: /var/log/h2o/access.log
file.custom-handler:
extension: .php
fastcgi.connect:
host: 127.0.0.1
port: 9000
type: tcp
file.index: [ 'index.php', 'index.html' ]
hosts:
"Default":
listen:
port: 80
paths:
/:
file.dir: /var/www
h2o を再起動する。
sudo service h2o restart
MariaDB をインストールする
MariaDB とクライアントをインストールします。MySQL は MariaDB のエイリアスになっています。
sudo apk add mariadb mariadb-client
データベースの初期化を実行します。
sudo /etc/init.d/mariadb setup
サービスを起動させます。
sudo service mariadb start
mysql クライアントでサービスにアクセスします。
mysql -u root
> exit
PHP 7.0 の mysqli と pdo_mysql 拡張モジュールを導入しよう。PHP 7.0 で mysql 拡張モジュールは廃止されましたので、インストールしません。
sudo apk add php7-mysqli php7-pdo_mysql