PHP 7.0.0 已經推出了幾天,帶來了新版本的Zend引擎,不只如此,還有許多新特性和改進,好比:php
性能提高:PHP 7速度是PHP 5.6的兩倍html
內存的使用顯著下降mysql
抽象語法樹nginx
支持64位c++
許多重大的錯誤將轉爲異常web
安全的隨機數生成器sql
刪除舊的、不支持的SAPIs和擴展docker
null合併操做符(??)centos
返回和標量類型聲明安全
匿名類
零成本斷言
下面我經過結合docker,部署一下php7
REMI 倉庫提供了CentOS和RHEL的核心包的更新版本,尤爲是最新的PHP/MySQL系列。 所以我選擇經過
remi源的方式在線安裝php7。具體的dockerfile定義以下:
FROM centos:centos6 RUN rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm RUN rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm RUN rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi RUN yum -y --enablerepo=remi install php70 php70-php-cli php70-php-common php70-php-fpm # 安裝mysql擴展 RUN yum -y --enablerepo=remi install php70-php-mysqlnd # 安裝nginx RUN yum -y install nginx # 增長一個啓動腳本 RUN echo "#!/bin/bash" >> /start.sh RUN echo "/opt/remi/php70/root/usr/sbin/php-fpm" >> /start.sh RUN echo "/usr/sbin/nginx" >> /start.sh # 監聽80端口 EXPOSE 80 # 給腳本一個執行權限 RUN chmod +x /start.sh #啓動容器,執行 start.sh命令 CMD /start.sh
注意事項: 安裝remi源以前,首先須要安裝epel源
把nginx服務跟php部署在同一個容器裏
docke build -t fasss/php7 .
docker run -it fasss/php7 bash
進入php的安裝目錄
cd /opt/remi/php70/root
查看php配置文件目錄
[root@96238f70b8b4 root]# ./usr/bin/php -i | head -10 phpinfo() PHP Version => 7.0.0 System => Linux 96238f70b8b4 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 Build Date => Dec 3 2015 17:56:57 Server API => Command Line Interface Virtual Directory Support => disabled Configuration File (php.ini) Path => /etc/opt/remi/php70
獲得php和fpm的配置文件目錄爲 /etc/opt/remi/php70
退出容器。從容器裏拷貝文件到宿主機
docker cp 96238f70b8b4:/etc/opt/remi/php70 ./
96238f70b8b4這個根據你本身生成的容器ID來
宿主機映射的配置文件夾位置
docker cp 96238f70b8b4:/etc/nginx /data/etc/php70/
nginx conf文件
daemon off; user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; #charset koi8-r; access_log /var/log/nginx/access.log main; location / { root /webwww/bbs; index index.php index.html index.htm; } location ~ \.php$ { root /webwww/bbs; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } }
注意點: 「daemon off」表示程序在前臺運行。 「/webwww/bbs」 document_root的位置。
裏面是我建立的一個hello.php文件。 輸出「hello from php7」
docker run -it --name my_php7 \ -v /data/etc/php70/nginx/:/etc/nginx/ \ -v /data/app/test:/webwww/bbs -p 80:80 fasss/php7
/data/app/test 表示程序文件夾
/data/etc/php70/nginx/:/etc/nginx/ 配置文件映射
顯示結果:
wget http://cn2.php.net/get/php-7.0.0.tar.gz/from/this/mirror
yum -y install gcc automake autoconf libtool make yum -y install gcc gcc-c++ glibc
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
防止有些包找不到
yum -y install libmcrypt-devel mhash-devel libxslt-devel \ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel \ libxml2 libxml2-devel \ zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 \ bzip2-devel \ ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel \ krb5 krb5-devel libidn libidn-devel openssl openssl-devel
./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-mysqli \ --with-openssl \ --enable-fpm \ --enable-mbstring \ --with-freetype-dir \ --with-jpeg-dir \ --with-png-dir \ --with-zlib-dir \ --with-libxml-dir=/usr \ --enable-xml \ --with-mhash \ --with-mcrypt \ --enable-pcntl \ --enable-sockets \ --with-bz2 \ --with-curl \ --enable-mbregex \ --with-gd \ --enable-gd-native-ttf \ --enable-zip \ --enable-soap \ --with-iconv \ --enable-sysvshm \ --enable-sysvmsg \ --with-pdo-mysql # 若是沒有錯誤 make make install
[root@b30acbed1ebd php]# /usr/local/php/bin/php -v PHP 7.0.0 (cli) (built: Dec 7 2015 13:03:05) ( NTS ) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
cd /usr/local/php/etc/ mv php-fpm.conf.default php-fpm.conf cd /usr/local/php/etc/php-fpm.d mv www.conf.default www.conf
/usr/local/php/sbin/php-fpm
configure: error: mcrypt.h not found. Please reinstall libmcrypt.
出現錯誤
yum install libmcrypt libmcrypt-devel
No package libmcrypt available. No package libmcrypt-devel available.
須要安裝EPEL源
安裝第三方源:EPEL源
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
在線安裝 libmcrypt
yum install libmcrypt libmcrypt-devel