postfix 部署ssl后还是25_Docker部署LNMP开发环境

项目背景:

接到通知公司某项目业务需要上线,运维人员需要部署一套开发环境并配合开发拉取代码上线,并要求测试无误,最后确定采用docker部署LNMP环境方式,先整理了一下思路,并列出有哪几部分,大概每步做什么,最后话不多说,干!

环境要求:

CentOS Linux release 7.5.1804 (Core)

docker 版本:19.03.11

nginx/1.17.6

php 7.3 .23

RDS MySQL 5.7

目录章节:

  • 项目背景

  • 环境要求

  • 目录章节

  • docker底层环境部署

  • docker运行安装php7.3

  • 源码编译Nginx环境配置

  • 报错问题排查

  • 测试验证

docker底层环境部署

1、docker软件安装

docker-ce的yum源下载(任选其一)

  • 下载docker官方ce版

[root@yunweilaoxu ~]# wget https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  • 或者使用aliyun的docker-ce源

[root@yunweilaoxu ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

docker安装

[root@yunweilaoxu ~]# yum clean all[root@yunweilaoxu ~]# yum install docker-ce -y

PS: 注意要安装docker-ce版,不要安装docker(否则可能安装1.13老版本)

启动服务

[root@yunweilaoxu ~]# systemctl start docker[root@yunweilaoxu ~]# systemctl enable docker[root@yunweilaoxu ~]# systemctl status docker

查看版本信息

[root@yunweilaoxu ~]# docker -vDocker version 18.09.7, build 2d0083d[root@yunweilaoxu ~]# docker info
[root@yunweilaoxu ~]# docker versionClient: Version:           18.09.7 API version:       1.39 Go version:        go1.10.8 Git commit:        2d0083d Built:             Thu Jun 27 17:56:06 2019 OS/Arch:           linux/amd64 Experimental:      falseServer: Docker Engine - Community Engine:  Version:          18.09.7  API version:      1.39 (minimum version 1.12)  Go version:       go1.10.8  Git commit:       2d0083d  Built:            Thu Jun 27 17:26:28 2019  OS/Arch:          linux/amd64  Experimental:     false

2、镜像加速器

国内的几个互联网巨头都有自己的容器服务。这里以阿里云为例

阿里云容器镜像服务地址:https://cr.console.aliyun.com/cn-hangzhou/new    申请一个阿里账号登录

1e2fe5b95a85725855b5e834dfeb0c29.png

c61a8291d00a2a3d835e9456b5552e05.png

7842f1292c5001ac96281201532cb62d.png

[root@yunweilaoxu ~]# vim /etc/docker/daemon.json{    "registry-mirrors": ["https://42h8kzrh.mirror.aliyuncs.com"]}以上要是多个要在尾部,号隔开[root@yunweilaoxu ~]# systemctl daemon-reload[root@yunweilaoxu ~]# systemctl restart docker

docker安装运行PHP7.3.25

1、docker pull php:7.3.25-fpm 2、docker run -d -p 9005:9000 --name myphp7-fpm -v /home/data/webserver4:/usr/share/nginx/html --privileged=true docker.io/php:7.3.25-fpm3、docker container update --restart=always myphp7 为容器设置开机自启4、docker ps注:--privileged=true 为真root运行,此参数多数用户普通运维账户管理维护容器

docker安装运行Nginx环境配置

1、拉取Nginx镜像

1、docker pull nginx:1.17.6

2、运行Nginx容器镜像

2、docker run -d -p 8085:80 --name mynginx4  -v /home/data/webserver4:/usr/share/nginx/html --privileged=true -v /opt/nginx1/conf.d:/etc/nginx/conf.d -v /opt/nginx4/conf.d/logs:/etc/nginx/conf.d/logs --link myphp7-fpm:php docker.io/nginx:latest

3、配置Nginx配置文件

server {    listen       80;    listen       [::]:80;    listen       443 ssl;  #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。    server_name  xxxxxxx;    ssl_certificate cert/3266544__xxx.com.pem;    ssl_certificate_key cert/3266544__xxx.com.key;    ssl_session_timeout 5m;    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。    ssl_prefer_server_ciphers on;    if ($scheme = http) {       return 301 https://$server_name$request_uri;    }    #charset koi8-r;    #access_log  /var/log/nginx/host.access.log  main;    access_log /opt/logs/operate_access.log;    error_log  /opt/logs/operate_error.log;    add_header 'Access-Control-Allow-Origin' "*";    add_header 'Access-Control-Allow-Headers' "X-Requested-With,token";    add_header 'Access-Control-Allow-Methods' "GET,POST,OPTIONS";    add_header 'Access-Control-Allow-Credentials' "true";    location / {        root   /usr/share/nginx/html/xinzhi;        index  index.html index.htm index.php;        try_files $uri $uri/ /index.php?$query_string;    }    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    }      location ~ \.php$ {        root           html;        fastcgi_pass   php:9000;        fastcgi_index  index.php;        fastcgi_param  SCRIPT_FILENAME                               /usr/share/nginx/html/xinzhi/$fastcgi_script_name;        include        fastcgi_params;        }    }}

4、给容器做开机自启

docker container update --restart=always mynginx4

RDS连接

注:因公司采用阿里云RDS云端数据库,连接时候只需要阿里云提供内链地址,然后紧接着在项目文件中的.env里面进行输入相关数据库信息连接即可!

报错问题排查

1、数据库连接出现问题

fd86eab1ef6a4e561a7db158ae666660.png

故障排查

1. 去/home/data/webserver4/jsyixin_prd/application/config/config.php 检查php连接数据库账号信息是否准确2. 查看RDS的白名单是否将所在这台服务器的内网IP加入到白名单中3. 中再次核实数据库的连接信息,如果还是不行的话,看一下PhP扩展是否安装了,一般这种情况只会出现在docker部署的容器中,如果没有的话安装pdo_mysql扩展;注:pdo_mysql 是PHP用来访问mysql服务的扩展。# docker容器实例中执行:docker-php-ext-install pdo_mysql# 如果还是不可以的话看一下以下插件对比以下是否安装[PHP Modules]bcmathCorectypecurldatedomfilterftpgdgettexthashiconvjsonlibxmlmbstringmysqlimysqlndopensslpcntlpcrePDOpdo_mysqlpdo_sqlitePharposixReflectionsessionshmopSimpleXMLsoapsocketsSPLsqlite3standardsysvsemtokenizerxmlxmlreaderxmlrpcxmlwriterzipzlib[Zend Modules]注:缺少哪个进行安装,然后安装完以后进行重启PHP容器镜像,然后web界面访问URL查询;

2、项目目录权限问题等问题导致报错

32638e4e8f3378779bd463885b9de753.png

故障排查:

此问题是权限问题直接给目录所属子目录权限设置为777,然后打开网页再次访问

chmond -R 777 /home/data/webserver5/career/storage/ 

故障排查:

2.1、打开php debug 调试模式
1. 进入docker php镜像容器docker exec -it bcb0168ebc4b /bin/bash2. 查找php容器中 php.ini 配置文件php -i |grep php.ini 或: find / -name php 路径地址:/usr/local/etc/php/php.ini 3. 474行 display_errors=on 4. 打开浏览器再次访问
2.2、以下界面出现php插件连接mysql等问题

185739ad76afd57f779d0f7cf7c8b9ea.png

解决方法:

1. 进入docker php镜像容器docker exec -it bcb0168ebc4b /bin/bash2. docker-php-ext-install pdo_mysql3. exit 4. 重启phpdocker restart bcb0168ebc4b5. 再次访问
2.3、项目路径问题导致bootstrap 没有写权限

3cc85ba8a5382694bbcdbddba3cc11ef.png

解决方法:

chmond -R 755 /home/data/webserver5/career/bootstrap 即可解决此问题
2.4、关闭debug调式模式
474行 display_errors=Off

测试验证

fcaa7e0f1efd4bd0dc3589804cbf1d76.png

此时出现这个代表项目上线成功

作者:运维老许

出处:https://www.strives.cn/

联系方式:strive120620@163.com

微信公众号:Linux必修之路

声明1:本站部分资源收集自互联网,仅供个人学习交流,如不慎侵犯了您的权益,请联系我,我将尽快处理!

声明2:本文版权归作者,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值