はじめに
centos7コンテナー上で、
アプリケーションサーバー(nginx→PHP-FPM)みたいなところを目指す。
phalcon3を入れて、おめでとう!的なやつを出すところまで。
環境
Dockerはインストール済みということで。
foderaでやってます
cat /etc/redhat-release
->Fedora release 24 (Twenty Four)
Dockerfile
FROM centos:7
RUN yum -y update && \
#git
yum install -y git && \
#epel
yum -y install epel-release && \
#remi
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm && \
#phpもろもろ
yum -y install --enablerepo=remi-php70 php && \
yum -y install --enablerepo=remi-php70 php-devel php-pear && \
yum -y install --enablerepo=remi-php70 php-mysqlnd php-mbstring && \
yum -y install --enablerepo=remi-php70 php-fpm && \
#Zephir
yum -y install --enablerepo=remi-php70 zephir && \
#phalcon3
yum -y install --enablerepo=remi-php70 php-phalcon3 && \
#Phalcon Devtools
git clone https://github.com/phalcon/phalcon-devtools.git /usr/local/src/phalcon-devtools && \
#コマンド化
ln -s /usr/local/src/phalcon-devtools/phalcon.php /usr/bin/phalcon && \
chmod ugo+x /usr/bin/phalcon && \
#nginxリポジトリ追加
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm && \
#nginxインストール
yum install nginx -y && \
# 共通ユーザー作成
useradd -m -s /bin/bash -u 1000 meidaimae && \
#php.ini変更
##date.timezone = "Asia/Tokyo"←タイムゾーンの設定※行頭のコメントアウト;を外して、"Asia/Tokyo"と記述
sed -i 's/\;date\.timezone\ \=/date\.timezone\ \=\ \"Asia\/Tokyo\"/g' /etc/php.ini && \
##mbstring.language = Japanese←デフォルト言語の設定※行頭のコメントアウト;を外す
sed -i 's/\;mbstring\.language\ \=\ Japanese/mbstring\.language\ \=\ Japanese/g' /etc/php.ini && \
#www.conf変更
##nginxに変更
sed -i 's/user\ \=\ apache/user\ \=\ meidaimae/g' /etc/php-fpm.d/www.conf && \
sed -i 's/group\ \=\ apache/group\ \=\ meidaimae/g' /etc/php-fpm.d/www.conf && \
##ソケット
sed -i 's/listen\ \=\ 127\.0\.0\.1\:9000/listen\ \=\ \/var\/run\/php-fpm\/php\-fpm\.sock/g' /etc/php-fpm.d/www.conf && \
sed -i 's/\;listen\.owner\ \=\ nobody/listen\.owner\ \=\ meidaimae/g' /etc/php-fpm.d/www.conf && \
sed -i 's/\;listen\.group\ \=\ nobody/listen\.group\ \=\ meidaimae/g' /etc/php-fpm.d/www.conf && \
sed -i 's/\;listen\.mode\ \=\ 0660/listen\.mode\ \=\ 0660/g' /etc/php-fpm.d/www.conf && \
#nginx.conf
sed -i 's/user\ \ nginx\;/user\ \ meidaimae\;/g' /etc/nginx/nginx.conf
EXPOSE 80
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
build&run
下準備
まずは、ディレクトリ作成
#Dockerfile置いてる場所にwwwディレクトリを作成
mkdir Dockerfile置いてる場所/www
# Dockerfile置いてる場所にディレクトリを作成
mkdir Dockerfile置いてる場所/conf
次にファイル作成
vi Dockerfile置いてる場所/conf/default.conf
中身は下記をこぴぺ
default.conf
server {
listen 80;
server_name localhost.dev;
root /var/www/phalcon/public;
index index.php index.html index.htm;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?_url=$uri&$args;
}
location ~ \.php {
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_index /index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
いよいよbuild
#イメージ作成
docker build -t phalcon ./
んで、run
#さっき作ったディレクトリをコンテナにマウントする感じでコンテナーを作成
docker run --privileged -d -p 8000:80 -v Dockerfile置いてる場所/www:/var/www -v Dockerfile置いてる場所/conf/:/etc/nginx/conf.d/ --name phalcon_app phalcon /sbin/init
コンフィグ周りの変更
とりあえずシェル起動
docker exec -it phalcon_app /bin/bash
phalconプロジェクト作成
cd /var/www/
phalcon create-project phalcon
chown -R meidaimae:meidaimae /var/www/
自動起動にして再起動
systemctl enable php-fpm.service
systemctl enable nginx.service
#抜けて再起動(少しまつ)
exit
docker restart phalcon_app
一応シェル起動して、プロセス確認(nginxとphp-fpmが起動してたらok)
docker exec -it phalcon_app /bin/bash
ps aux | grep -e nginx -e php-fpm
ブラウザで確認(ちょっと間を置いて。。。)
http://localhost:8000
ok!おめでとう!!!!
以上!!
次回
DBサーバーとlinkさせる。
ちょっとだけphalcon触ってみる
感想
ふう、やっと出来た。。
インフラの知識身につけんと。。
ビール飲も。