当前位置:首页 > 技术文章 > 正文内容

Docker部署web服务器之Nginx与PHP联合篇(三)

arlanguage3个月前 (01-20)技术文章30

内容回顾,前面两节,已经介绍了docker的安装,nginx的安装,还有PHP的安装。这一小节则是要介绍,怎么让这三个毫无关联的软件,给关联上。

前两节内容如下:

《Docker部署web服务器之Nginx篇(一)》

《Docker部署web服务器之PHP篇(二)》

启动PHP

查看一下docker容器的运行情况:

[root@localhost ~]# docker ps -a

看到之前两节介绍留下的例子。这一节,只需要用到“myphp8.1”这个容器,nginx-example则用不到。另外创建一个nginx关联容器myphp8.1即可,因为nginx的配置要开发成在宿主机上可以配置的灵活方式。

先启动myphp8.1容器:

[root@localhost ~]# docker start 8f26a5307523
[root@localhost ~]# docker ps

启动PHP成功后,可以看到开启了9000端口,这个端口就是fpm的端口。通过这个端口nginx就能跟PHP交互了。

Nginx配置

在宿主机上进行一下服务器的配置,主要是配置nginx即可,PHP暂时采用默认的配置。在宿主机创建nginx的配置目录,并创建conf配置文件,代码如下:

[root@localhost ~]# mkdir -p /usr/local/services/nginx/conf/vhosts/
[root@localhost ~]# vim /usr/local/services/nginx/conf/vhosts/localhost.conf
          server {
          listen 80;
          server_name localhost;
          location / {
          root /data/www;
          index index.html index.htm index.php;
          }
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
          root /data/www;
          }
          location ~ \.php$ {
          fastcgi_pass php:9000;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME /data/www/$fastcgi_script_name;
          include fastcgi_params;
          }
          }
          //退出保存

启动nginx并关联PHP

启动命令,需要添加刚才nginx的配置目录和PHP脚本目录的映射,如下:

[root@localhost ~]# docker run --name php-nginx -p 80:80 -d -v /data/web:/data/www:ro -v /usr/local/services/nginx/conf/vhosts:/etc/nginx/conf.d:ro --link myphp8.1:php nginx
[root@localhost ~]# docker ps

php-nginx容器如果运行不起来,看看是不是挂载的目录不对,或者nginx配置文件写错了。启动成功后,通过ip访问一下web服务器,会提示403错误。有这个提示,意味着离成功只差一步了。下一步,我们只需要写一些PHP脚本放到宿主机的/data/web目录下,就可以坐享成功的喜悦了。

测试例子

在宿主/data/web下创建一个index.php:

[root@localhost ~]# cd /data/web/
[root@localhost web]# vim index.php
      <?php
      echo "hello Nginx and PHP.Nice to meet you!!!";
      //保存退出

运行一下:

到此为止,docker、nginx、PHP搭建web服务器大功告成了!

当然了,这个只是初步的,还有更多的配置需要优化,功能等着我们去学习和探索。至于mysql,redis,kafka等数据存储软件,我们还需要安装吗?如果我们是用来学,建议安装。如果用于生成环境,建议购买云数据库,可以省去很多运维成本,和服务器成本。

文末再次附上web服务器三部曲:

《Docker部署web服务器之Nginx篇(一)》

《Docker部署web服务器之PHP篇(二)》

《Docker部署web服务器之Nginx与PHP联合篇(三)》

你的关注,是我前进的动力,后续会推出更多短小精悍的章节,大家一起学习。在web架构方面,我们从来没停过,一直在路上。。。

欢迎关注本账号,不迷路。


我分享,我快乐!

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/979.html

标签: nginx 多php
分享给朋友:

“Docker部署web服务器之Nginx与PHP联合篇(三)” 的相关文章

Nginx教程

NginxNginx1. 基本概念2. centos7部署nginx1. 部署前准备2. 安装nginx3. 配置文件1. nginx目录结构2. 默认的nginx.conf1. nginx.conf内容结构:2. nginx.conf内容格式说明:3. location 语法详解1. 语法规则:2...

CentOS安装nginx

安装nginx第一步,查看是否安装,没有我们就开始安装:rpm -qa| grep nginx第二步,安装依赖包。(1)gcc安装。由于nginx是c语言写的,因此在安装nginx前需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,则需要安装:yum install gcc-c...

nginx location 多root理解location

由于应用需求,这个 r 目录需要单独拉出来做处理,nginx 最开始是这样写的: server { root /home/webadm/htdocs; index index.php; location /r/ { root /diska/htdocs; } location ~ \.php { f...

「每天一道面试题」Nginx 502错误原因和解决方法

Nginx 502错误原因和解决方法不管你是做运维还是做开发,哪怕你是游客,时不时会遇到 502 Bad Gateway 或 504 Gateway Time-out。出现这页面,把服务重启下,再实在不行重启下服务器,问题就解决了,特殊情况请继续阅读。状态码解释502 Bad Gateway:作为网...

为什么一条UPDATE语句有索引反而更慢

先来看看今天要讲的主人翁:UPDATE `i_msg_system` set `deliver`=1 where `uid`=10000 and `msg_group`=0 and `deliver`=0;涉事表结构:CREATE TABLE `i_msg_system` ( `id` int(...

大数据分析工程师入门15-数据收集

数据与智能 本公众号关注大数据与人工智能技术。由一批具备多年实战经验的技术极客参与运营管理,持续输出大数据、数据分析、推荐系统、机器学习、人工智能等方向的原创文章,每周至少输出10篇精品原创。同时,我们会关注和分享大数据与人工智能行业动态。欢迎关注。 作者:凯凯连导语上一篇文章我们简单介绍了下大数...