如何实现LNMP服务器环境自动部署

这里说的自动布署是两方面的,第一部分是脚本自动布署服务器环境,第二部份是自动布署代码,完成这两部分,在我理解,就算是完成自动部署了。

我们要做的,就是本地写完代码提交 git 后,使用git push 自动将代码推送到测试或生产环境的站点目录。
好的,开工吧!

LNMP线上环境自动布署脚本

使用 此脚本 可在一台全新的 Ubuntu 14.04 LTS 或者 Ubuntu 16 上自动部署适合 Laravel 使用的 LNMP 生产环境。
按照此 文档 安装即可。

但是此方法在使用中会有一些小问题

网易镜像加速后会出现一些安装错误
可能是网易镜像没有更新完全。
需要将网易镜像地址更新为其它地址,可以参考 Ubuntu 官方模版 来更新镜像。
我使用的是阿里云的镜像替换了网易的镜像。 vi /etc/apt/sources.list

更新为

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse ##測試版源 deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse # 源碼 deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse ##測試版源 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse # Canonical 合作夥伴和附加 deb http://archive.canonical.com/ubuntu/ xenial partner deb http://extras.ubuntu.com/ubuntu/ xenial main

正常安装后Nginx 启动前需要把 apache 卸载掉,然后再启动 Nginx . apt-get purge apache2 service nginx restart

redis 默认没有启动 service redis-server start // 启动 redis service redis-server status // 查看 redis service redis-server stop // 停止 redis

配置Git自动部署 创建Git远程仓库

我们用一个独立的路径来做远程仓库。
然后在仓库的路径下,创建一个git裸仓库:

cd /home/ubuntu/repo/ git init --bare blog.git

git 默认是禁止 push 的,所有要设置允许 push:

vi config

修改或添加如下内容:

[receive] denyCurrentBranch = ignore 编辑自动部署脚本

自动部署用到 git hooks ,在 git 路径下有个 hooks 文件夹,里面有一些示例。我们把 post-update.sample 重命名为 post-update ,并进行编辑:

mv post-update.sample post-update vi post-update #!/bin/sh # # An example hook script to prepare a packed repository for use over # dumb transports. # # To enable this hook, rename this file to "post-update". #exec git update-server-info unset GIT_DIR NowPath=`pwd` DeployPath="/home/ubuntu/www/blog" cd $DeployPath git pull origin master composer install cd $NowPath echo 'deploy success' exit 0

这样每当 push master 分支到服务器时,都会自动切换到 DeployPath ,也就是 Nginx root 路径,执行 git pull origin master 从仓库拉去最新 master 分支,并执行 composer install,如果项目 composer 有变更则安装,没有变更则不会安装。

部署路径初始化

先把空的仓库克隆到 home/ubuntu/www/ 路径下 :

git clone /home/ubuntu/repo/blog.git

服务器的配置就级别完成了,此 blog 即为你的站点目录

推送git仓库

进入本地共享文件夹,执行

git clone root@server_ip:/home/ubuntu/repo/blog.git blog_back

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。