Docker+PHP环境配置和负载

提前先准备好一个干净的lnmp环境,一键安装lnmp:https://lnmp.org/auto.html

配置前先安装好docker
1.安装
yum包更新到最新:yum update
安装需要的软件包:yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.安装docker,出现的提示都输入Y
yum install -y docker-ce
4.安装完成输入docker -v 查看版本
5.配置镜像加速:vi /etc/docker/daemon.json,可以参考菜鸟教程的docker镜像加速配置
复制下面内容到daemon.json中
{
“registry-mirrors”: [“https://g5ae7o25.mirror.aliyuncs.com”]
}
保存后依次执行:sudo systemctl daemon-reload 和 sudo systemctl restart docker

完场上述操作后,现在就开始配置
1、创建私有网络:docker network create lnmp
2、安装Nginx镜像:docker pull nginx:1.18.0
3、运行Nginx:

#创建并运行容器
docker run --name mynginx -p 8080:80 -v /root/docker/nginx/html:/usr/share/nginx/html -d nginx:1.18.0
 
#移动到配置目录
cd /root/docker/nginx
 
#复制配置文件:cd到/root/docker/nginx 文件夹下复制nginx配置文件目录
docker cp mynginx:/etc/nginx/conf.d conf.d
 
#停止容器
docker stop mynginx
 
#删除容器 
docker rm mynginx
 
#再次运行
docker run --name mynginx -p 8080:80 --network lnmp -v /root/docker/nginx/html:/usr/share/nginx/html -v  /root/docker/nginx/conf.d:/etc/nginx/conf.d/ -d nginx:1.18.0

测试:在Nginx站点根目录html目录下创建index.html文件,并写入文字:
echo “Nginx Server” >> /root/docker/nginx/html/index.html
浏览器访问主机地址 服务器ip:8080 显示 Nginx Server,则Nginx安装成功

4、安装MySQL镜像:docker pull mysql:5.7.35
5、创建并运行MySQL容器:
docker run --name mysql5.7 --network lnmp -v /root/docker/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --privileged=true mysql:5.7.35
6、安装PHP镜像:docker pull php:7.4-fpm
7、创建并运行PHP容器:

#运行镜像
docker run --name php7.4 --network lnmp -d php:7.4-fpm
 
#创建目录
mkdir -p /root/docker/php
 
#移动目录
cd /root/docker/php/
 
#复制www.conf
docker cp php7.4:/usr/local/etc/php-fpm.d/www.conf www.conf
 
#进入容器
docker exec -it php7.4 bash
 
#移动目录
cd /usr/src/
 
#解压文件
xz -d php.tar.xz
 
#解压文件
tar -xvf  php.tar
 
#退出镜像
exit
 
#复制php.ini,这里根据自己的centos系统本身安装的PHP版本来定义复制目录,例如本次操作使用的centos7 PHP版本是7.4.25的
docker cp php7.4:/usr/src/php-7.4.25/php.ini-production php.ini
 
#停止镜像
docker stop php7.4
 
#删除镜像
docker rm php7.4
 
#再次运行镜像
docker run --name php7.4 --network lnmp -v /root/docker/nginx/html:/var/www/html -v /root/docker/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /root/docker/php/php.ini:/usr/local/etc/php/php.ini -d php:7.4-fpm

8、编辑Nginx配置文件 vim /root/docker/nginx/conf.d目录下面的default.conf文件:

server {
    listen       80;
    server_name  _;
    root /usr/share/nginx/html;
    index index.html index.htm;
 
    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;
 
    location / {
        #root   /usr/share/nginx/html;
        #index  index.php index.html index.htm;
        try_files $uri $uri/ =404;
    }
 
    error_page  404  /404.html;
    location = /40x.html {
        root    /user/share/nginx/html;
    }
 
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/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           /var/www/html/;
        fastcgi_pass   php7.4:9000;
        fastcgi_index  index.php;
#        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 
    }
  # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

9、重新启动nginx容器:docker restart mynginx
测试:创建index.php文件:vim /root/docker/nginx/html/index.php,输入:

<?php
    phpinfo();

保存后,浏览器再次访问主机地址 服务器ip:8080 显示php信息,则PHP安装成功

docker的nginx负载

实践操作:安装以上的操作步骤3、再分别创建mynginx1 和 mynginx2 容器,注意修改步骤中的mynginx命名,以及/root/docker/nginx1和/root/docker/nginx2路径修改,然后再修改宿主机的nginx配置,我的安装路径是:/usr/local/nginx/conf/
http中添加如下:

upstream 192.168.2.195 {
        server 127.0.0.1:8081 weight=2;
        server 127.0.0.1:8082 weight=1;
        server 127.0.0.1:8080 weight=3;
    }

    server {
         listen 80;
         server_name 192.168.2.195;

         location /{
                proxy_pass http://192.168.2.195;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_http_version 1.1;
                proxy_set_header Connection "";
        }
    }

再重启宿主机的nginx,再次浏览器访问服务器ip,不需要端口即可访问到8080 8081 8082端口

docker + php 环境配置,参考:
https://www.jb51.net/article/218747.htm
https://blog.csdn.net/UserPHP/article/details/100728267

docker + 负载,参考:
https://blog.csdn.net/weixin_41515615/article/details/81351006
https://blog.csdn.net/yinjinshui/article/details/101352012
https://blog.csdn.net/weixin_39902184/article/details/110606615?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,您想问有关使用Docker运行PHP-FPM的问题,是吗?那我来简单介绍一下。 使用Docker运行PHP-FPM的主要目的是为了方便地进行开发和部署,同时还可以保证应用程序在不同环境中的一致性。下面是一些基本步骤: 1. 首先,您需要安装Docker,可以在官网上下载安装包。 2. 然后,您需要创建一个dockerfile文件,用于构建您的PHP-FPM镜像。示例文件内容如下: ``` FROM php:7.4-fpm-alpine RUN apk --update --no-cache add \ git \ unzip \ libzip-dev \ libpng-dev \ libjpeg-turbo-dev \ freetype-dev \ && docker-php-ext-install zip pdo_mysql mysqli gd \ && apk del --purge autoconf g++ make \ && rm -rf /var/cache/apk/* WORKDIR /var/www/html CMD ["php-fpm"] ``` 3. 接着,您可以使用以下命令构建您的镜像: ``` docker build -t your-image-name . ``` 4. 然后,您可以使用以下命令运行您的PHP-FPM容器: ``` docker run -d --name your-container-name -p 9000:9000 -v /path/to/your/app:/var/www/html your-image-name ``` 其中: - -d:表示在后台运行容器 - --name:指定容器的名称 - -p:将容器的9000端口映射到主机的9000端口 - -v:将主机上的应用程序目录挂载到容器中的/var/www/html目录中 5. 最后,您可以使用以下命令进入容器并查看PHP-FPM的日志: ``` docker exec -it your-container-name /bin/sh tail -f /usr/local/var/log/php-fpm.log ``` 希望这些信息能帮助到您。如果您还有其他问题,请随时问我。 ### 回答2: Docker是一种开源的容器化平台,可以在不同的操作系统中创建和管理轻量级的容器。php-fpm(PHP FastCGI Process Manager)是PHP中用于处理FastCGI的进程管理器。结合使用Dockerphp-fpm可以带来一些好处。 首先,使用Dockerphp-fpm可以使PHP应用程序更易于部署和管理。通过在Docker容器中运行php-fpm,可以将应用程序及其所有的依赖项打包到一个容器中,而不需要在不同的环境中进行配置和安装。这使得在不同的服务器上部署应用程序变得更加简单和一致。 其次,使用Dockerphp-fpm可以提供更好的资源管理。通过使用php-fpm进程管理器,可以控制和监视PHP进程的数量和资源使用情况。这有助于避免服务器过载和资源浪费,并确保应用程序的性能和稳定性。 此外,使用Dockerphp-fpm可以提高开发和测试的效率。在开发环境中,可以使用Docker容器来模拟生产环境,确保应用程序在不同的环境中具有一致的行为。还可以利用Docker容器的快速启动和停止功能,加速开发、测试和部署流程。 最后,使用Dockerphp-fpm还可以实现应用程序的可伸缩性。通过通过启动多个具有相同配置php-fpm容器来处理更多的请求,可以轻松地扩大应用程序的处理能力。这使得应对高流量和负载峰值变得更加容易。 综上所述,通过结合使用Dockerphp-fpm,可以简化应用程序的部署和管理、提高资源利用率、加速开发和测试速度,并实现应用程序的可伸缩性。 ### 回答3: Docker是一个开源的应用容器引擎,可以将应用程序与其依赖项打包在一个轻量级的、可移植的容器中。而php-fpm是PHP FastCGI Process Manager的简称,是一种常用的PHP处理器,它能够管理和处理PHP请求。 在使用Docker时,可以通过Docker镜像来运行php-fpm容器,以便于更方便、更快速地搭建和部署PHP应用程序。首先,我们可以根据需要选择适合的php-fpm镜像,并使用Docker命令来创建和启动容器。 在创建容器时,我们可以指定容器运行的端口号、挂载主机目录、设定环境变量等。例如,我们可以将容器的端口号映射到主机的某个端口上,这样就可以通过主机的IP地址和对应端口号来访问容器内运行的PHP应用程序。 另外,我们还可以通过容器之间的网络连接来实现不同容器间的通信。例如,我们可以创建一个Nginx容器来作为反向代理服务器,同时将其与php-fpm容器连接在一起,这样就可以实现客户端与PHP服务器之间的通信。 由于Docker的轻量级特性,可以在一台物理机或虚拟机上运行多个容器,每个容器可以独立运行,互不干扰。这样的模式可以有效地隔离应用程序及其依赖项,减少部署和升级的风险。 总而言之,通过使用Docker来运行php-fpm容器,可以更方便、更快速地部署和管理PHP应用程序,提高开发和运维效率。同时,Docker的轻量级特性和容器间的网络连接,也提供了更灵活和可扩展的部署方案,使整个应用环境更加稳定和可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值