一、环境准备:
<李> centos 7.5服务器一台,运行码头工人服务,李> <李>关于码头工人服务的安装,参考博文:码头工人的安装详细配置。李> <李>各个容器IP: 192.168.1.2 Nginx, 192.168.1.3 (PHP), 192.168.1.4 (MySQL)。李>
引用> <人力资源/>搭建LNMP注意事项:
<李>各个容器的数据实现持久化;李> <李>为容器分配固定的IP地址,防止容器重建后,IP地址发生变化,徒增不必要的麻烦,李> <李>由于客户端只需要访问Nginx的80端口,然后通过Nginx去调用PHP连接数据库,所以只需要将Nginx的80端口使用“p”选项映射到宿主机即可,其他容器,不必映射,相比较而言,也安全了些。李>
引用>二,开始配置
1,解决固定IP问题
<代码> [root@docker ~] #码头工人网络创建- d桥——子网192.168.1.0/24网关192.168.1.1 lnmp #创建自定义网络,并指定网段,网关,只有定义了网段,才可以使用此网络为容器分配固定IP 代码>2,运行Nginx容器
<代码> [root@docker ~] #码头工人- d——名字测试运行nginx #先随便运行一个nginx容器 (root@docker ~) # mkdir/数据#创建相应目录 (root@docker ~) #码头工人cp测试:/etc/nginx/数据#将容器内的nginx配置文件目录复制一份出来 (root@docker ~) #码头工人cp测试:/usr/share/nginx/html/数据#将网页根目录也复制一份出来 #之所以复制出来,是因为在实现数据持久化时,会覆盖掉容器内的配置文件。 (root@docker ~) #码头工人运行- d——名字nginx网络lnmp——ip 192.168.1.2 - p 80:80 - v/数据/nginx:/etc/nginx - v/数据/html:/usr/share/nginx/html nginx #基于刚刚创建的nginx网络运行nginx容器,并指定其IP地址; #使用“v”选项分别将目录挂载到nginx的配置文件及网页根目录,以便实现数据持久化; #在实现数据的持久化过程中,也解决了nginx容器内无法使用一些基本命令的问题, #若需要更改nginx配置文件或网络根目录,直接在本地的/数据目录下进行相应的操作即可。代码>3,运行MySQL容器
由于在生产环境中,大多数公司十分忌讳将MySQL这样的服务放在虚拟化的技术上运行,一般都是单独一台服务器,只跑MySQL服务,所以,这里为了简便一些,直接运行MySQL容器即可,就不去做这个MySQL数据的持久化了(主要是懒的找是那些目录要实现数据持久化了)。
<代码> [root@docker ~] #码头工人运行mysql - d -名字- e MYSQL_ROOT_PASSWORD=123. com——网络lnmp ip 192.168.1.4 mysql: 5.7 & lt; ! 基于lnmp网络运行MySQL镜像,并指定其IP地址; “MYSQL_ROOT_PASSWORD=123. com”是为指定MySQL数据库的根密码 若需要使用第三方图形化工具连接数据库,只需要加“p”选项将容器的3306端口映射到宿主机即可。 ——在代码>4,运行PHP容器
<代码> [root@docker ~] #码头工人运行- d——名字phpfpm - v/数据/html:/usr/share/nginx/html——网络lnmp ip 192.168.1.3 php: 7.2 fpm #若容器直接运行失败,则需要执行“码头工人把php: 7.2 fpm”命令下载镜像,再执行上面的运行容器命令 #由于需要和Nginx服务器一样的网页目录,所以挂载同样的目录代码>5,修改Nginx配置文件,以便关联PHP容器
<代码> [root@docker ~] # vim/数据/nginx/conf.d/违约。参看#在宿主机直接编辑Nginx配置文件 .................. #省略部分内容 位置/{ 根/usr/share/nginx/html; 指数指数。html索引。htm index . php。#添加“index . php” } {}#增加以下位置配置段 ~ \位置。php $ { 根/usr/share/nginx/html; fastcgi_pass 192.168.1.3:9000;9000 #指定PHP容器的端口 fastcgi_index index . php。 fastcgi_param SCRIPT_FILENAME document_root fastcgi_script_name美元; 包括fastcgi_params; } .................. #省略部分内容 #编辑完成后保存退出即可。 (root@docker ~) #码头工人重启nginx #重启nginx容器,以便配置生效 (root@docker ~) # vim/数据/html/测试。php #编辑php网页文件,测试Nginx与php是否协调工作 php & lt; ? phpinfo (); 比; 代码>6,客户端访问测试:
<强> 1)直接访问码头工人服务器的IP地址(默认是80端口):强>
基于码头工人容器分离部署LNMP架构