宿主机nginx与docker的PHP

NGINX

1、安装

 ~]# yum -y install gcc  pcre-devel  openssl-devel                         ##三个nginx的依赖包
 ~]# useradd -s /sbin/nologin nginx                                              ##创建nginx用户,用次用户的身份,让服务更安全。
 ~]# tar  -xf   nginx-1.10.3.tar.gz
 ~]# cd  nginx-1.10.3
  nginx-1.10.3]# ./configure   \
> --prefix=/usr/local/nginx   \                //指定安装路径
> --user=nginx   \                            //指定用户
> --group=nginx  \                            //指定组
> --with-http_ssl_module   \                     //开启SSL加密功能
> --with-stream    \                          //开启TCP/UDP代理模块
> --with-http_stub_status_module    开启status状态页面(管理员查看页面状态)  
nginx-1.10.3]# make && make install    //编译并安装
 ~]# ln -s /usr/local/nginx/sbin/nginx       /sbin/        //设置软连接,方便后期使用
 ~]# netstat -ntuap |grep nginx                        //查看nginx端口信息

DOCKER

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

阿里云

$ sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:

 sudo yum install docker-ce docker-ce-cli containerd.io

如果提示您接受 GPG 密钥,请选是。

有多个 Docker 仓库吗?

如果启用了多个 Docker 仓库,则在未在 yum install 或 yum update 命令中指定版本的情况下,进行的安装或更新将始终安装最高版本,这可能不适合您的稳定性需求。

Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。

要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:

1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。

$ yum list docker-ce --showduplicates | sort -r

docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable

2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。

$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

启动 Docker。

$ sudo systemctl start docker

通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。

$ sudo docker run hello-world

docker启动php:7.3.5-fpm

下载镜像

docker pull php:7.3.5-fpm

创建容器

docker run -d --name phpfpm -p 9001:9000 -v /usr/local/nginx/html:/var/www/html php:7.3.5-fpm

查看一下实际分配的IP地址

docker inspect phpfpm

测试一下服务端口是否打开

telnet 172.17.0.3  9000

修改本地nginx配置

因为php-fpm的服务要修改为docker提供, 而且在docker中php文件的目录是 /var/www/html

server{
    listen       80;
    server_name  www.qgwddd.com
    #access_log  /var/log/nginx/access.log  main;
        location / {
            root   html;
            index  index.php  index.html index.htm ;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
       location ~ \.php$ {
           root           html;
           fastcgi_pass   127.0.0.1:9001;
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
           include        fastcgi_params;
        }
   }

重启nginx或者重新加载

nginx -s  reload

在配置文件的html目录上写一个index.php

cd  /usr/local/nginx/html/
vim  index.php
	<?php
	phpinfo();
	?>
vim /etc/hosts
	192.168.80.128  www.qgwddd.com

访问www.qgwddd.com

在这里插入图片描述
出现页面说明访问成功。

若出现404报错
请看nginx的配置文件里的

	       location ~ \.php$ {
           root           html;
           fastcgi_pass   127.0.0.1:9001;		#或者docker提供的地址 172.17.0.3:9000
           fastcgi_index  index.php;
           fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
           include        fastcgi_params;
        }
fastcgi_param  SCRIPT_FILENAME /var/www/html$fastcgi_script_name; #docker加载PHP的项目路径

安装必要的工具和扩展

默认的php:7.3.5-fpm不带ifconfig, ping等工具, 也缺一些常用的扩展, 需要自行安装

进入docker命令行
docker exec -it phpfpm /bin/bash
 
安装 ifconfig, ping
apt update
apt install net-tools iputils-ping
 
安装依赖(安装gd扩展等必须要先安装系统依赖)
apt install libfreetype6-dev libmcrypt-dev libpng-dev libjpeg-dev libpng-dev sendmail zlib1g-dev

用 docker-php-ext-install 安装扩展, 这个脚本会自动编译并配置指定的扩展

docker-php-ext-install mysql
docker-php-ext-install gd
docker-php-ext-install zip
docker-php-ext-install mbstring
docker-php-ext-install pdo_mysql

重启docker后, 刷新phpinfo页面查看是否生效.

如果是安装pecl扩展, 这个image已经带了pecl, 直接运行pecl命令, 注意要指定版本, 以免和当前php版本不兼容

pecl install redis-4.0.1
 #中途提示选no, 因为需要额外的.h文件支持, 没安装而选yes的话会设置失败
enable igbinary serializer support? [no] :
enable lzf compression support? [no] :
 #启用
docker-php-ext-enable redis

php的pecl库里存在的扩展(例如redis,memcached,swoole等)
这些扩展需要先使用pecl安装,然后再使用docker命令开启扩展即可

RUN apk update && apk add --no-cache \
	autoconf g++ make libmemcached-dev \
	&& pecl install redis-5.2.2 \
	&& docker-php-ext-enable redis \
	&& pecl install memcached \
	&& docker-php-ext-enable memcached \
	&& pecl install swoole \
	&& docker-php-ext-enable swoole

安装成功,使用 php -m 可以看到已经安装了redis、memcached、swoole扩展;

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值