LoginSignup
8
7

More than 5 years have passed since last update.

DockerでPhalcon3(nginx,php-fpm,phalcon3)

Last updated at Posted at 2016-11-20

はじめに

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触ってみる

感想

ふう、やっと出来た。。
インフラの知識身につけんと。。
ビール飲も。

参考

Nginx Installation Notes
Dockerでつくる開発環境【nginxコンテナ編】

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7