有一天,主机商跑路了。迫于无奈之下,我需要进行数据迁移。原先用的主机我可以什么都不管,直接用就行。而现在,只有一个centos服务器。一切从零开始...

我曾试过一个一个安装,从docker入手,一步一步搭建mysql,nginx,php。正当我即将看到胜利的曙光时,现实又给了我当头一棒。php扩展没有pdo_mysql,php.ini配置文件找不到等等。各种问题接踵而至。我曾多次想过放弃。不知道到底哪个环节出错了,如果让我从新再来,想想就让人心生疲惫。直到我看到了这个: DNMP(LNMP)一键安装程序 。注意:这不是广告,亲测,亲测。

我们先初步了解下他的强大之处:

好家伙,口气还真不小。事实是否真就如此呢。我们就来动手实操一番。是骡子是马拉出来溜溜。我们就按照他的要求,一步步操作。

1.准备工作(docker+docker-compose 1.7以上+git)

docker安装就不多加叙述,根据服务器系统的不同,百度一下对应的安装命令即可。

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

安装完之后可以输入:docker -version查看版本。

docker-compose安装命令:先确定安装目录。我这里打算安装到home目录下的dnmp子目录:

下载docker-compose命令:要安装其他版本的 Compose,请替换 v2.2.2。

$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

至此docker和docker-compose已安装完成,而git只是为了clone项目。我们可以直接选择去git下载即可。这里就不安装了。下载完之后的目录结构如下:

我们将文件上传到dnmp目录下,这里我是通过xftp上传的。

2.启动项目

第一步和第二步我们已经完成,第三步不用管,现在我们直接进行第四步,继续终端:依次输入命令,别忘了启动docker,启动命令:start docker.service

[root@localhost dnmp]# docker-compose --version
Docker Compose version v2.2.2
[root@localhost dnmp]# ls
bash.alias.sample  data  docker-compose.sample.yml  env.sample  LICENSE  logs  README-en.md  README.md  services  snapshot.png  www
[root@localhost dnmp]# cp env.sample .env
[root@localhost dnmp]# cp docker-compose.sample.yml docker-compose.yml
[root@localhost dnmp]# docker-compose up

至此,基于docker的lnmp集成环境就安装完成啦~~,让我们奔放一下~

very good !!!接下来就是自由发挥时间了,根据说明,我们可以更换mysql版本和php版本以及php扩展,另外,该集成还自备https。这就很nice了。下面我们继续深入一下。

3.数据库

数据库一共有两个版本,第一个是mysql8.0,第二个是mysql5.7,集成环境默认搭建的配置是:

如果要下载其他的php版本或者mysql版本,找到dnmp目录下的docker-compose.yml配置文件,把前面的#号去掉皆可,再使用命令 docker-compose up创建启动一下就行了。数据库的默认用户名root,密码123456。

注意:另外下载的mysql5.7对应的端口为3305

通过docker进入mysql,修改密码sql语句如下:两个用户都修改

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                                                                      NAMES
9d4ece6148f1   dnmp_nginx     "/docker-entrypoint.…"   13 minutes ago   Up 13 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx
89b79105ce9c   mysql:8.0.13   "docker-entrypoint.s…"   13 minutes ago   Up 13 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                       mysql
a5333f2cfde3   dnmp_php       "docker-php-entrypoi…"   13 minutes ago   Up 13 minutes   9000/tcp, 9501/tcp                                                         php
[root@localhost ~]# docker exec -it 89b79105ce9c /bin/bash
root@89b79105ce9c:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.13 MySQL Community Server - GPLCopyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)mysql>
#mysql5.7修改密码
use mysql;
update user set authentication_string=password('liuqing') where user='root' and host='localhost';
update user set authentication_string=password('liuqing') where user='root' and host='%';#mysql8.0修改密码
use mysql;
ALTER user 'root'@'localhost' IDENTIFIED BY 'liuqing';
ALTER user 'root'@'%' IDENTIFIED BY 'liuqing';

4.nginx静态配置

lz的项目是thinkphp5.0的,有两个,分别位于站点根目录www/api/tp5和www/dream。

dnmp/services/nginx/conf.d文件夹下的localhost.conf配置如下:

server {listen       80  default;server_name  localhost;root   /www/localhost;index  index.php index.html index.htm;#charset koi8-r;access_log /dev/null;#access_log  /var/log/nginx/nginx.localhost.access.log  main;error_log  /var/log/nginx/nginx.localhost.error.log  warn;#error_page  404              /404.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($|/){fastcgi_pass   php:9000;include        fastcgi-php.conf;include        fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}
location /api/tp5/public/ {index index.php;#如果文件不存在则尝试TP解析if (!-e $request_filename) {rewrite  ^/api/tp5/public/(.*)$  /api/tp5/public/index.php?s=/$1  last;break;}}
location /dream/public/ {index index.php;#如果文件不存在则尝试TP解析if (!-e $request_filename) {rewrite  ^/dream/public/(.*)$  /dream/public/index.php?s=/$1  last;break;}}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}
}server {listen 443  default ssl http2;server_name  localhost;root   /www/localhost;index  index.php index.html index.htm;#charset koi8-r;access_log /dev/null;#access_log  /var/log/nginx/nginx.localhost.access.log  main;error_log  /var/log/nginx/nginx.localhost.error.log  warn;#error_page  404              /404.html;ssl_certificate /ssl/localhost/localhost.crt;ssl_certificate_key /ssl/localhost/localhost.key;# 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$ {fastcgi_pass   php:9000;include        fastcgi-php.conf;include        fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}
location /api/tp5/public/ {index index.php;#如果文件不存在则尝试TP解析if (!-e $request_filename) {rewrite  ^/api/tp5/public/(.*)$  /api/tp5/public/index.php?s=/$1  last;break;}}
location /dream/public/ {index index.php;#如果文件不存在则尝试TP解析if (!-e $request_filename) {rewrite  ^/dream/public/(.*)$  /dream/public/index.php?s=/$1  last;break;}}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}
}

5.配置SSL

这个就不多说了dnmp/services/ngin/ssl/localhost文件下的两个证书文件替换成自己的就行。

以上,就是docker安装集成环境的全部步骤,lz一路摸索一路爬坑。索性,幸不辱命!!

DNMP:基于docker搭建集成LNMP(nginx+mysql+php)相关推荐

  1. nginx搭建文件服务器脚本,基于docker搭建nginx文件服务器的方法步骤

    1.在本机新建配置文件docker_nginx.conf server { listen 7070; server_name localhost; charset utf-8; location /f ...

  2. docker 启动容器的时候没-p 后面怎么加-p_基于Docker搭建基础自动化部署

           阅读本文约需要7分钟  大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下SpringBoot如何实现全链路调用 ...

  3. 基于Docker搭建私有镜像仓库

    通常我们在docker中拉取的镜像都是在docker hub在线存储库中获取的,这个在线存储库里的docker镜像可以由任何用户发布和使用,显然这在某些场景下是不适用的,比如某些互金的隐私项目,或者是 ...

  4. Spring Boot 2.0:Docker Compose + Spring Boot + Nginx + Mysql 实践

    Spring Boot 2.0:Docker Compose + Spring Boot + Nginx + Mysql 实践 Spring Boot + Nginx + Mysql 是实际工作中最常 ...

  5. 树莓派4b学习笔记三--基于Ubuntu搭建Docker 和portainer,基于Docker 搭建Homeassistant、EMQX

    文章目录 一.基于Ubuntu搭建Docker和portainer 1.Docker简介 2.Ubuntu20.04安装Docker-ce 3.Ubuntu20.04安装Docker图形化界面port ...

  6. 基于docker 搭建mysql8.0主从复制

    如何基于docker搭建mysql8.0主从复制从而实现读写分离 前言 1. docker的安装与mysql8.0镜像的打包这里不做详细介绍.以后有时间再出详细教程.安装好docker运行环境拉去my ...

  7. 基于 Docker 搭建 ownCloud 个人云盘

    在我的博客上阅读 基于 Docker 搭建 ownCloud 个人云盘 官方文档 机翻气息贯穿全文~ 概述 配置: 公开端口 8080,允许 HTTP 连接. 使用单独的 MariaDB 和 Redi ...

  8. docker yum php mysql_Centos下 使用Docker, 配置PHP+Nginx+Mysql(多PHP版本)

    Centos下 使用Docker, 配置PHP+Nginx+Mysql(多PHP版本) 2年前 阅读 6556 评论 0 喜欢 0 ### 一.先安装Dokcer: 1.安装一些必要的系统工具: `s ...

  9. 基于Docker搭建分布式消息队列Kafka

    本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的 ...

最新文章

  1. [冲昏头脑]IDEA中的maven项目中学习log4j的日志操作
  2. linux远程连接工具
  3. 做好十足准备面字节跳动,五面都过了,HR告诉我这个原因我被刷了...
  4. 【Android 逆向】ART 脱壳 ( InMemoryDexClassLoader 脱壳 | DexFile 构造函数及相关调用函数 | Android 源码中查找 native 函数 )
  5. 判断checkbox是否被选中,判定选中的个数!
  6. android平板交互,安卓平板就应该如此,华为MatePad Pro 交互体验
  7. 计算机网络技术教材多少钱,计算机网络技术课程标准教材.doc
  8. wifi 信道_Win10电脑找不到自家Wifi无线网络解决方法 可能是无线信道问题
  9. [视频教程]ASP.net入门课程
  10. centos下配置使用Imagick+ghostscript将PDF文件转为图片
  11. html object 播放swf,JS进阶篇--swfobject.js视频播放插件
  12. 流量红利渐失,电商的“新故事”往哪讲?
  13. ps 图片 透明度 设置
  14. Back键和Home键的屏蔽
  15. ipad分屏功能怎么开启_iPad 重大更新!14个新功能,每个都很实用
  16. 44学习自动化运维工具 Chef 的基本用法,包括厨师编写、节点管理
  17. 吴裕雄--天生自然 诗经:小儿垂钓
  18. 前端(h5)js监控手机电池状况(是否充电、剩余电量、剩余可用时间等等)
  19. 计算机网路原理复习笔记
  20. IC失效分析芯片测试

热门文章

  1. 华为交换机ip地址与MAC地址绑定(全局/接口模式)
  2. tlias 教学过程_传智专修学院:“打开天窗说亮话”,让学生正确评价每一位教师...
  3. 计算机软件科学家谢涛,计算机软件科学家谢涛:星辰大海,求思进取
  4. MFC窗口程序exc和回车关闭窗口解决办法
  5. 清华大学公开课线性代数2——第4讲:线性变换1
  6. opencv 图像与视频分析教程③
  7. Vue3 css实现背景图片
  8. 阿里云ACP备考分享及刷题总结
  9. Histograms of Oriented Gradients (HOG)理解和源码
  10. 微信小程序实现js控制动画——点击播放动画