经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Docker » 查看文章
docker部署LNMP架构
来源:cnblogs  作者:林奋斗的成长之路  时间:2021/2/18 15:07:44  对本文有异议

环境要求:

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

  1. docker run -itd --name test nginx #运行test容器
  2. docker cp test:/etc/nginx /conf      #copy主配置文件
  3. ls /conf/
  4. conf.d koi-win nginx.conf win-utf
  5. fastcgi_params mime.types scgi_params
  6. koi-utf modules uwsgi_params
  7. docker cp test:/usr/share/nginx/html /www #copy网站目录
  8. ls /www/
  9. 50x.html index.html

 mysql

  1. [root@node1 ~]# docker rm -f test
  2. test
  3. [root@node1 ~]# docker run -itd --name test -e MYSQL_ROOT_PASSWORD=pwd123 mysql:5.7
  4. 6b8d73ecd541d454f121302963a85d53131286d3118a968525a24ad2315b047b
  5. [root@node1 ~]# docker exec -it test sh
  6. # mysql -uroot -ppwd123 -h127.0.0.1
  7. ..........
  8. mysql> create database test;
  9. Query OK, 1 row affected (0.00 sec)
  10. mysql> show databases;
  11. +--------------------+
  12. | Database |
  13. +--------------------+
  14. | information_schema |
  15. | mysql |
  16. | performance_schema |
  17. | sys |
  18. | test |
  19. +--------------------+
  20. 5 rows in set (0.00 sec)
  21. mysql> exit
  22. Bye
  23. # exit
  24. [root@node1 ~]# docker cp test:/var/lib/mysql /var/lib/mysql

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

  1. docker network create -d bridge --subnet 172.16.10.0/24 --gateway 172.16.10.254 lnmp

 2、创建nginx容器测试访问 

  1. [root@node1 ~]# docker run -itd --name nginx -p 80:80 -v /www/:/usr/share/nginx/html -v /conf:/etc/nginx --network lnmp --ip 172.16.10.10 nginx:latest
  2. e6e8824abd10ec4f8cb610fdd3bb77bd5919cce94c50a86732e8fd2138b8091b
  3. [root@node1 ~]# echo hello > /www/index.html
  4. [root@node1 ~]# curl 192.168.1.1
  5. hello

 3、运行MySQL容器 

  1. #创建mysql挂载数据目录、开发端口、指定IP
  2. [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.7
  3. 448227483a9c3141c2155d2c7b027aec263bfcfe4ebc49371b6817c17565ff81
  4. #查看运行状态
  5. [root@node1 ~]# docker ps
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  7. 448227483a9c mysql:5.7 "docker-entrypoint.s…" 10 seconds ago Up 9 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
  8. 4d1e99a06972 nginx:latest "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp nginx
  9. 6b8d73ecd541 mysql:5.7 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes 3306/tcp, 33060/tcp test
  10. #测试登录
  11. [root@node1 ~]# yum -y install mariadb
  12. [root@node1 ~]# mysql -uroot -ppwd123 -h127.0.0.1
  13. Welcome to the MariaDB monitor. Commands end with ; or \g.
  14. Your MySQL connection id is 2
  15. Server version: 5.7.33 MySQL Community Server (GPL)
  16. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  17. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  18. MySQL [(none)]> Bye

 4、创建php-fpm容器

  1. [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
  2. ae09213d7c8c84299b1522ca474fccf7f26e27973cd02563891c37d51799b766
  3. [root@node1 www]# docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. ae09213d7c8c php:7.2-fpm "docker-php-entrypoi…" 7 seconds ago Up 6 seconds 0.0.0.0:9000->9000/tcp php-fpm

 5、nginx和PHP的连接 

  1. [root@node1 ~]# vim /conf/conf.d/default.conf

 

 

 

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

  1. [root@node1 ~]# echo Hello LNMP! > /www/index.html
  2. [root@node1 ~]# cat /www/index.html
  3. Hello LNMP!
  4. [root@node1 ~]# curl 192.168.1.1
  5. Hello LNMP!

5.2、添加PHP测试页面 

  1. [root@node1 ~]# cd /www
  2. [root@node1 www]# vim test.php
  3. [root@node1 www]# cat test.php
  4. <?php
  5. phpinfo();
  6. ?>
  7. [root@node1 www]# docker restart nginx
  8. nginx
  9. [root@node1 www]# pwd
  10. /www
  11. [root@node1 www]# ls
  12. 50x.html index.html test.php

 

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

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

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

6.1、更新nginx配置文件 

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

 

 

 

 内容如下:

  1. location /phpmyadmin {
  2. root /usr/share/nginx/html;
  3. index index.php index.html index.htm;
  4. }
  5. location ~ /phpmyadmin/(?<after_ali>(.*)\.(php|php5)?$) {
  6. root /usr/share/nginx/html;
  7. fastcgi_pass 172.16.10.30:9000;
  8. fastcgi_index index.php;
  9. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  10. include fastcgi_params;
  11. }  

测试访问:

 

 

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

7、解决php不关联mysql

  1. [root@node1 /]# cd /file/
  2. [root@node1 file]# ls
  3. Dockerfile
  4. [root@node1 file]# cat Dockerfile
  5. FROM php:7.2-fpm
  6. RUN 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
  7. [root@node1 file]# docker build -t php_mysql .
  1. #删除php容器
  2. [root@node1 /]# docker rm php-fpm -f
  3. php-fpm
  4. #运行phpmysql容器
  5. [root@node1 /]# docker run -itd --name phpfpm -p 9000:9000 -v /www:/usr/share/nginx/html --network lnmp --ip 172.16.10.30 phpmysql:latest
  6. c4e943880fd51f947cba64ba0006abd26a923439a3e39a0350ca2561b42b8026
  7. [root@node1 /]# docker ps
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. c4e943880fd5 phpmysql:latest "docker-php-entrypoi…" 14 seconds ago Up 13 seconds 0.0.0.0:9000->9000/tcp phpfpm

7.1、phpmysql配置指向mysql地址

  1. [root@node1 www]# cd /www/phpmyadmin/
  2. [root@node1 phpmyadmin]# mv config.sample.inc.php config.inc.php
  3. [root@node1 phpmyadmin]# vim config.inc.php
  4. [root@node1 phpmyadmin]# docker restart phpfpm
  5. phpfpm

8、访问测试  

 

 

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

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

 

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

 

 

 

  

 

原文链接:http://www.cnblogs.com/lin-strive/p/14409080.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号