!> 熟练使用docker,能够在10分钟内部署好一套PHP环境

为什么使用Docker?

部署快

只需要几分钟,就能部署好一套PHP环境

性能好

Docker 的性能损失只有1-2%,几乎可以忽略不计。

安全性高

容器与宿主机完全隔离,默认情况下不能相互访问。

同时支持多版本软件

可以PHP多版本共存

教程目的

如何用laradock 在10分钟内 部署 Notadd 与 laradock 环境

开始安装Docker

Linux (先执行这步)

  1. curl -sSL https://get.docker.com | sh

!> 建议使用清华大学镜像源 !> https://mirror.tuna.tsinghua.edu.cn/help/docker/

systemctl enable docker # docker 开机启动 systemctl start docker # 启动docker

安装Docker-compose (ubuntu 请注意权限问题)

  1. curl -L https://get.daocloud.io/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  2. chmod +x /usr/local/bin/docker-compose

开启国内镜像加速

  1. curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s https://registry.docker-cn.com

?> 如果系统不支持以上命令,且docker版本在1.13以上

nano /etc/docker/daemon.json 编辑文件,也可以使用vi

  1. {
  2. "registry-mirrors": ["https://registry.docker-cn.com"]
  3. }

Windows10(64位)

下载安装 https://get.daocloud.io/docker-install/windows

开启国内镜像加速

在桌面右下角状态栏中右键 Docker 图标,修改在 Docker Daemon 标签页中的 json ,把下面的地址:

  1. https://registry.docker-cn.com

加到”registry-mirrors”的数组里。点击 Apply 。

Mac 10.8+

下载安装 https://get.daocloud.io/docker-install/mac

开启国内镜像加速

右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:

  1. https://registry.docker-cn.com

点击 Apply & Restart 按钮使设置生效。

安装 laradock 与 Notadd

下载laradock 与 Notadd

请确保git 可用 (win 建议在Powershell下执行)

  1. git clone https://github.com/Laradock/laradock.git
  2. mkdir -p wwwroot/data # 创建网站目录
  3. cd wwwroot
  4. mkdir public #创建用于 HTTP服务软件的公共目录
  5. git clone https://github.com/notadd/notadd.git
  6. cd .. # 返回到上级目录

Linux: (win 和 mac 请直接编辑env-example 文件)

  1. cd laradock
  2. vi env-example

env-example 配置说明

  1. APPLICATION=../wwwroot
  2. DATA_SAVE_PATH=../wwwroot/data

WORKSPACE 配置项

视情况开启

  1. NODE=true
  2. YARN=true

PHP_FPM配置说明

  1. PHP_FPM_INSTALL_XDEBUG=false
  2. PHP_FPM_INSTALL_MONGO=false
  3. PHP_FPM_INSTALL_MSSQL=false
  4. PHP_FPM_INSTALL_SOAP=false
  5. PHP_FPM_INSTALL_ZIP_ARCHIVE=true
  6. PHP_FPM_INSTALL_BCMATH=true
  7. PHP_FPM_INSTALL_PHPREDIS=true
  8. PHP_FPM_INSTALL_MEMCACHED=false
  9. PHP_FPM_INSTALL_OPCACHE=false
  10. PHP_FPM_INSTALL_EXIF=true
  11. PHP_FPM_INSTALL_AEROSPIKE=false
  12. PHP_FPM_INSTALL_MYSQLI=false
  13. PHP_FPM_INSTALL_TOKENIZER=false
  14. PHP_FPM_INSTALL_INTL=false
  15. PHP_FPM_INSTALL_GHOSTSCRIPT=false
  16. PHP_FPM_INSTALL_LDAP=false
  17. PHP_FPM_INSTALL_SWOOLE=false

线上环境请将 PHP_FPM_INSTALL_OPCACHE=true

下面是数据库默认的账号和密码,请根据需要自行修改,不再阐述。

更改完毕后请务必进行此操作:

  1. cp env-example .env

复制环境变量文件。

更改Caddy 配置

Caddy 是一个高性能,且使用很简单的HTTP服务器,自带HTTPS证书。

  1. cd caddy
  2. vi Caddyfile

更改为如下配置:

  1. # Docs: https://caddyserver.com/docs/caddyfile
  2. 0.0.0.0:80 {
  3. root /var/www/notadd/public
  4. fastcgi / php-fpm:9000 php {
  5. index index.php
  6. }
  7. # To handle .html extensions with laravel change ext to
  8. # ext / .html
  9. rewrite {
  10. r .*
  11. ext /
  12. to /index.php?{query}
  13. }
  14. gzip
  15. browse
  16. log /var/log/caddy/access.log
  17. errors /var/log/caddy/error.log
  18. }

!> 容器和宿主机无法相互访问, 必须通过端口映射或者目录映射的方式

之前的设置映射了目录: APPLICATION=../wwwroot ,所以 wwwroot目录 会对应容器的/var/www 目录

完成后请:

  1. cd .. # 进入laradock 根目录

启动laradock

可以根据自己需要自行启动 nginx/apache/mysql/phpmyadmin/redis 等

注:phpmyadmin 请访问 http://IP:88 pgadmin请访问 http://IP:5050

  1. docker-compose up caddy postgres pgadmin

第一次运行需要安装环境,需要比较久的时间,请耐心等待

?> 安装notadd需进入workspace,参见 laradock常用操作——工作空间相关说明

laradock 常用操作

以下操作请确保在laradock 根目录下

启动相关

laradock 默认会启动 php-fpm 和 workspace ,所以参数中无需加这两个。

启动 caddy 和 postgresql

  1. docker-compose up caddy postgres

后台启动

  1. docker-compose up -d caddy postgres

只重启caddy (比如修改了配置文件)

  1. docker-compose restart caddy

停止所有

  1. docker-compose stop

工作空间

!> 请先确认环境已经启动,在宿主机下无法直接使用php/composer 等命令,必须进入工作空间

  1. docker-compose exec workspace bash

会进入 /var/www 目录

此时 可以执行composerPHP命令。

如果之前env-example 开启了nodeyarn 也可执行对应命令。

安装notadd

  1. cd notadd
  2. composer install
  3. php notadd vendor:publish --force

退出工作空间

  1. exit

连接数据库和PHP

请一定注意,数据库连接地址请一定填写为mysqlpostgresmariadb 等。 另外Nginx/Caddy/Apache 如果需要访问PHP容器,请填写:php-fpm

更改laradock 配置

当你再次修改完env-example 后,请一定按照如下方法执行:

  1. cp env-example .env

重新构建相应的容器

  1. docker-compose build php-fpm worksapce

如果还修改了 其他容器配置,请在后面一同加上

修改容器参数

值得注意的是,直接在容器内通过命令所做的修改,比如增加PHP拓展,在重启容器后就会被恢复成初始状态~ 所以,需要修改容器环境,需要修改对应的Dockerfile 文件,然后重新构建(上述操作)。

?> 通过env 修改数据库密码请注意 ?> 由于数据库的数据是映射到 wwwroot/data 目录, ?> 所以在env-example 修改数据库密码,即使重新构建也无效。 ?> 如需强制更改 请删除wwwroot/data 里面对应数据库的数据。 ?> 日常修改密码,请使用phpmyadmin 或者 pgadmin

如何使用Caddy

caddy 是用go语言开发的轻巧高性能的HTTP服务器,一个文件就能运行,配置也相对简单。 修改caddy下的Caddyfile文件后重启caddy即可。 常见的一些配置

HTTP域名

80端口号,和后面的 { 必须有空格

  1. domain1.com:80 domain2.com:80 {
  2. root /home/wwwroot # 网站目录
  3. index index.php # 默认首页
  4. # 这里是配置
  5. }

HTTPS 域名

  1. domain.com:443 {
  2. root /var/www/notadd/public
  3. index index.php
  4. tls you@163.com # 自动申请证书,必须在外网,且域名可访问
  5. # 如果你有证书,可如下方式配置
  6. # tls /home/ssl/domain.com.crt /home/ssl/domain.com.key
  7. }

配置PHP转发 (Laravel为例)

  1. Laravel.com:80 {
  2. root /var/www/notadd/public
  3. fastcgi / php-fpm:9000 php {
  4. index index.php
  5. }
  6. # To handle .html extensions with laravel change ext to
  7. # ext / .html
  8. rewrite {
  9. r .*
  10. ext /
  11. to /index.php?{query}
  12. }
  13. gzip # 开启gzip
  14. browse # 开启文件浏览
  15. #日志
  16. log /var/log/caddy/access.log
  17. errors /var/log/caddy/error.log
  18. }

markdown 渲染

caddy 可以直接帮你把md 文件渲染成网页

  1. domian.com:80 {
  2. markdown {
  3. ext /data # 不进行渲染的目录
  4. template [name] path # 模板,可不填,使用默认
  5. }
  6. }

自动从git 同步

  1. domian.com:80 {
  2. root /home
  3. git https://github.com/notadd/notadd.git /var/www/ {
  4. key /home/git/domian.key # key 文件地址,公有库可忽略
  5. interval 60 # 间隔60秒
  6. # 或者使用钩子同步
  7. hook /hook password # hook地址和密钥,用于 github 等git 仓库推送更新。
  8. }
  9. }

创建文件下载服务器

需要说明的是,这个自带界面哦,还能在线编辑文件

  1. domian.com:80 {
  2. root /home
  3. filemanager
  4. }

当然还有更多好玩的用法,参考官方文档: https://caddyserver.com/docs

如遇到问题,欢迎提问:https://bbs.notadd.com/category/8