在腾讯云轻量服务器上通过Docker部署Nginx Unit部署PHP应用

0x001 简介

在上一期我们介绍了在腾讯云轻量服务器通过Nginx Unit来部署PHP应用的方式,同时Nginx Unit也是支持以docker方式部署运行的,本期我们将介绍通过docker镜像的方式来部署部署Nginx Unit的PHP应用。这里不在赘述docker部署的优点和再次介绍Nginx Unit。读者可自行阅读上一篇文章和互联网上的介绍。

0x002 前置条件和环境要求

笔者假定读者已掌握基础的Linux使用知识、会使用基础的Docker命令掌握基本的概念呢,并且拥有良好的网络。以下操作步骤均在以下环境操作并得到验证。

软件名

版本

备注

Ubuntu Server

20.04 LTS

已通过apt-get 更新到最新,并重启过

Client: Docker Engine - Community

20.10.5

\

Server: Docker Engine - Community

24.0.5

\

请在创建Lighthouse时选择如下镜像,上一期文章就是选择此镜像如果没有的话可以在此处购买 点击前往

请在点击登录后,执行

sudo apt-get update
sudo apt-get upgrade
重启机器后,请执行后续步骤。

0x003 制作Docker 镜像

1. 创建Dockerfile,内容如下

FROM unit:php
RUN docker-php-ext-install -j$(nproc) pdo_mysql
COPY ./php.json /docker-entrypoint.d/
COPY ./bundle.pem /docker-entrypoint.d/
WORKDIR  /phpapp
COPY thinkphp /phpapp/
RUN chown -R unit:unit /phpapp
EXPOSE 443/tcp

2. 创建Nginx Unit配置文件,内容如下。如需要修改请配套修改上方Dockerfile中的目录
{
    "listeners": {
        "*:443":{
            "pass":"routes",
            "tls":{
                "certificate":"bundle",
                "conf_commands":{
                    "ciphersuites":"TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256",
                    "minprotocol":"TLSv1.2"
                },
                "session":{
                    "cache_size":1024,
                    "timeout":60,
                    "tickets":[
                        "qpV1KjTOqEisH2nnY76zUciSNlfrdu2+BWCwtgwAr6EB+uk2rK3PVXYAlAdz8DKl",
                        "D596nU2DS8i+hG3S4Q2bzoMRUjBRkMug1Llrn42lVMaqaa/s9C/6obYOSOGrTpvF"
                    ]
                }
            }
        }

    },

    "routes"[
        {
            "match": {
                "uri"[
                    "!/static/*",		
                    "*.php",
                    "*.php/*"
                ]
            },

            "action": {
                "pass""applications/phpapp/direct"
            }
        },
        {
            "action": {
                "share""/phpapp/public$uri",
                "fallback": {
                    "pass""applications/phpapp/index"
                }
            }
        }
    ],

    "applications": {
        "phpapp": {
            "type""php",
            "targets": {
                "direct": {
                    "root""/phpapp/public"
                },

                "index": {
                    "root""/phpapp/public",
                    "script""index.php"
                }
            }
        }
    }
}

3. 创建bundle.pem 文件,将域名证书合成到其中

-----BEGIN CERTIFICATE-----
nginx 证书.pem文件内容
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
nginx 证书.key文件内容
-----END RSA PRIVATE KEY-----


4. 创建thinkphp目录,将已有的thinkphp复制到其中。此时目录结构如下。可查看参考资料部分 4. thinkphp模板
├── bundle.pem
├── Dockerfile
├── php.json
└── thinkphp
    ├── app
    ├── composer.json
    ├── composer.lock
    ├── config
     ....

如果成功进行了以上步骤,下面我们开始构造一个镜像本地测试一下。
1. 在有以上目录的下执行
sudo docker build . -t thinkphp-unit #这个.是指在当前目录构建

稍等,这里需要拉取基础镜像和构建,没提示报错的情况下,镜像就构建成功了

2. 下面运行一下镜像

sudo docker run ----name test thinkphp-unit # P是随机分配端口

看到如下提示即是镜像运行成功,红框部分是外部镜像访问的端口

curl -k -I -s https://127.0.0.1:32776 # 这里的端口要改成上面红框里的实际端口,不同的机器是不一样的

即可看到输出

0x004 发布到腾讯云容器镜像服务

前往容器镜像服务登录 - 腾讯云创建一个镜像仓库。参考容器镜像服务快速入门容器镜像服务 个人版快速入门-快速入门-文档中心-腾讯云。对此服务的操作和通过Dcoker登录镜像服务再处就不再赘述。

现在我们把这个镜像推送到这个仓库里,

先修改标签

sudo docker tag 96d299fed394 ccr.ccs.tencentyun.com/tusdasa/thinkphp-unit:6.0 # 这里的96d299fed394 是IMAGE ID 

再进行推送

sudo docker push ccr.ccs.tencentyun.com/tusdasa/thinkphp-unit:6.0

如图即推送完毕

这里也节约看到这个镜像

0x005 通过命令行运行docker应用

通过上面的步骤,我们将构建的docker进行推送到腾讯云容器镜像服务,即可在其他的服务器上拉取镜像进行部署。下面我将演示在另外一台轻量服务器上拉取镜像并进行部署

sudo docker pull ccr.ccs.tencentyun.com/tusdasa/thinkphp-unit:6.0 # 这里要改成自己的
如下即拉取完毕

运行镜像

sudo docker run -d --name unit -P  ccr.ccs.tencentyun.com/tusdasa/thinkphp-unit:6.0
sudo docker ps -a

访问端口验证正常,此处可参考上运行本地镜像部分,此处不在赘述

0x007 总结

本文解释了如何在腾讯云轻量服务器上构建一个Nginx Unit的PHP堆栈镜像,并推送腾讯云镜像服务中,并在另外一台服务器上拉取镜像实现一次构建,到处部署。

0x008 参考资料

  1. DockerHub https://hub.docker.com/
  2. Install Docker EngineInstall Docker Engine | Docker Docs
  3. Nginx UnitInstallation — NGINX Unit
  4. thinkphp模板GitHub - tusdasa/nginx-unit-php-thinkphp-docker-template: nginx unit php thinkphp docker template

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值