您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

docker部署LNMP架构的方法

51自学网 2022-07-04 11:34:15
  网站维护

环境要求:

IP  hostname
192.168.1.1 node1

项目规划:

容器网段:172.16.10.0/24

NGINX:172.16.10.10

MySQL:172.16.10.20

PHP:172.16.10.20

网站根目录:/www

nginx配置文件:/conf

mysql持久化目录:/var/lib/mysql

提前准备服务配置文件:

nginx

<strong>docker run -itd --name test nginx       #运行test容器  docker cp test:/etc/nginx /conf      #copy主配置文件ls /conf/conf.d     koi-win   nginx.conf  win-utffastcgi_params mime.types scgi_paramskoi-utf     modules   uwsgi_paramsdocker cp test:/usr/share/nginx/html /www   #copy网站目录ls /www/50x.html index.html     </strong>

mysql

<strong>[root@node1 ~]# docker rm -f testtest[root@node1 ~]# docker run -itd --name test -e MYSQL_ROOT_PASSWORD=pwd123 mysql:5.76b8d73ecd541d454f121302963a85d53131286d3118a968525a24ad2315b047b[root@node1 ~]# docker exec -it test sh# mysql -uroot -ppwd123 -h127.0.0.1..........mysql> create database test;Query OK, 1 row affected (0.00 sec) mysql> show databases;+--------------------+| Database      |+--------------------+| information_schema || mysql       || performance_schema || sys        || test        |+--------------------+5 rows in set (0.00 sec) mysql> exitBye# exit[root@node1 ~]# docker cp test:/var/lib/mysql /var/lib/mysql</strong>

1、配置lnmp虚拟网卡,网段172.16.10.0/24,网关172.16.10.254

<strong>docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.254 lnmp</strong>

 2、创建nginx容器测试访问 

<strong>#创建mysql挂载数据目录、开发端口、指定IP[root@node1 ~]# docker run -itd --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql --network lnmp --ip 172.16.10.20 mysql:5.7448227483a9c3141c2155d2c7b027aec263bfcfe4ebc49371b6817c17565ff81#查看运行状态[root@node1 ~]# docker psCONTAINER ID  IMAGE     COMMAND         CREATED     STATUS     PORTS                NAMES448227483a9c  mysql:5.7   "docker-entrypoint.s…"  10 seconds ago  Up 9 seconds  0.0.0.0:3306->3306/tcp, 33060/tcp  mysql4d1e99a06972  nginx:latest  "/docker-entrypoint.…"  3 minutes ago  Up 3 minutes  0.0.0.0:80->80/tcp         nginx6b8d73ecd541  mysql:5.7   "docker-entrypoint.s…"  9 minutes ago  Up 9 minutes  3306/tcp, 33060/tcp         test#测试登录[root@node1 ~]# yum -y install mariadb[root@node1 ~]# mysql -uroot -ppwd123 -h127.0.0.1Welcome to the MariaDB monitor. Commands end with ; or /g.Your MySQL connection id is 2Server version: 5.7.33 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '/h' for help. Type '/c' to clear the current input statement. MySQL [(none)]> Bye</strong>

 3、运行MySQL容器 

<strong>[root@node1 www]# docker run -itd --name php-fpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 php:7.2-fpm ae09213d7c8c84299b1522ca474fccf7f26e27973cd02563891c37d51799b766[root@node1 www]# docker psCONTAINER ID  IMAGE     COMMAND         CREATED     STATUS     PORTS                NAMESae09213d7c8c  php:7.2-fpm  "docker-php-entrypoi…"  7 seconds ago  Up 6 seconds  0.0.0.0:9000->9000/tcp       php-fpm</strong>

 4、创建php-fpm容器

<strong>[root@node1 ~]# vim /conf/conf.d/default.conf</strong>

 5、nginx和PHP的连接 

5.1、添加nginx静态的测试界面

<strong>[root@node1 ~]# echo Hello LNMP! > /www/index.html[root@node1 ~]# cat /www/index.htmlHello LNMP![root@node1 ~]# curl 192.168.1.1Hello LNMP!</strong>

5.2、添加PHP测试页面 

<strong>[root@node1 ~]# cd /www[root@node1 www]# vim test.php[root@node1 www]# cat test.php<?phpphpinfo();?>[root@node1 www]# docker restart nginxnginx[root@node1 www]# pwd/www[root@node1 www]# ls50x.html index.html test.php</strong>

能够访问到以上两个界面,说明nginx和php的连接,没有问题,接下来是 php和mysql的连接。在这里我们使用一个phpMyAdmin的数据库管理工 具。

6、测试PHP容器与Mysql容器的协调性、工具phpMyadmin

[root@node1 www]# pwd/www[root@node1 www]# unzip phpMyAdmin-4.9.0.1-all-languages.zip[root@node1 www]# mv phpMyAdmin-4.9.0.1-all-languages phpMyAdmin[root@node1 www]# rm -rf phpMyAdmin  

6.1、更新nginx配置文件 

[root@node1 www]# cd /conf/conf.d/[root@node1 conf.d]# vim default.conf

 

内容如下:

location /phpmyadmin {  root  /usr/share/nginx/html;  index index.php index.html index.htm;}location ~ /phpmyadmin/(?<after_ali>(.*)/.(php|php5)?$) {  root      /usr/share/nginx/html;  fastcgi_pass  172.16.10.30:9000;  fastcgi_index index.php;  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  include    fastcgi_params;}  

测试访问:

其实这主要是php镜像不支持连接mysql,我们要重新写一个。

7、解决php不关联mysql

[root@node1 /]# cd /file/[root@node1 file]# lsDockerfile[root@node1 file]# cat DockerfileFROM php:7.2-fpmRUN apt-get update && apt-get install -y /libfreetype6-dev /libjpeg62-turbo-dev /libpng-dev /&& docker-php-ext-install -j$(nproc) iconv /&& docker-php-ext-configure gd --with-freetypedir=/usr/include/ --with-jpeg-dir=/usr/include/ /&& docker-php-ext-install -j$(nproc) gd /&& docker-php-ext-install mysqli pdo pdo_mysql[root@node1 file]# docker build -t php_mysql .
#删除php容器[root@node1 /]# docker rm php-fpm -fphp-fpm#运行phpmysql容器[root@node1 /]# docker run -itd --name phpfpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 phpmysql:latestc4e943880fd51f947cba64ba0006abd26a923439a3e39a0350ca2561b42b8026[root@node1 /]# docker psCONTAINER ID  IMAGE       COMMAND         CREATED     STATUS     PORTS                NAMESc4e943880fd5  phpmysql:latest  "docker-php-entrypoi…"  14 seconds ago  Up 13 seconds  0.0.0.0:9000->9000/tcp       phpfpm

7.1、phpmysql配置指向mysql地址

[root@node1 www]# cd /www/phpmyadmin/[root@node1 phpmyadmin]# mv config.sample.inc.php config.inc.php[root@node1 phpmyadmin]# vim config.inc.php[root@node1 phpmyadmin]# docker restart phpfpmphpfpm

8、访问测试  

9、趁热打铁,在发布一个dz论坛

dz论坛链接地址:http://down.chinaz.com/soft/41403.htm

#上传[root@node1 /]# lsbin    Discuz_X3.4_SC_UTF8_20210119.zip#移动到/www网页目录下mv upload/ /www/dzchmod 777 /www/dz<br>#保证数据库有dz库<br>#授权一个dz库的管理员<br>#注意安装是IP为数据库的IP不要写错<br>

  


下载地址:
Virtualbox 安装centos7虚拟机的图文教程详解
Docker初级网络端口映射的配置
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1