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

Leah发布于:2021-07-01阅读:0

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

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

LNMP线上环境自动布署脚本

使用此脚本可在一台全新的Ubuntu 14.04 LTS或者Ubuntu 16上自动部署适合 Laravel 使用的 LNMP 生产环境。
但是此方法在使用中会有一些小问题

  1. 网易镜像加速后会出现一些安装错误
    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
  2. 正常安装后Nginx启动前需要把apache卸载掉,然后再启动Nginx.
    apt-get purge apache2
    service nginx restart
  3. redis默认没有启动
    service redis-server start  // 启动 redis
    service redis-server status  // 查看 redis
    service redis-server  stop  // 停止 redis

配置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-infounset GIT_DIRNowPath=`pwd`DeployPath="/home/ubuntu/www/blog"cd $DeployPath
git pull origin master
composer installcd $NowPathecho '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

将远程的空仓库克隆下来。名称为blog_back,防止与本地blog目录冲突。
本地创建项目并提交Git

composer create-project --prefer-dist laravel/laravel blog
mv blog_back/.git  blog/.git  //将 .git 目录拷贝过来即可在此目录操作 git
cd  blog
git add -A
git commit -m 'init'
git push origin master //此时输入服务器密码即可将本地项目推送到服务器上

这里我使用的是默认的root用户,我们可以单独设置一个git用户,也可以使用公钥的形式,类似于github的方式。

安装Composer

打开命令行并依次执行下列命令安装最新版本的Composer

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
//下载安装脚本 - composer-setup.php - 到当前目录。
php composer-setup.php //执行安装过程。
php -r "unlink('composer-setup.php');"  //删除安装脚本

执行第一条命令下载下来的composer-setup.php脚本将简单地检测php.ini中的参数设置,如果某些参数未正确设置则会给出警告;然后下载最新版本的composer.phar文件到当前目录。
composer.phar文件移动到/usr/local/bin/目录下面:

sudo mv composer.phar /usr/local/bin/composer

进程监控器Supervisor配置

项目中有些脚本需要在后台运行,比如队列、HorizonSupervisor可以监控后台脚本的运行,再产生异常或是停止后自动重启,保证了脚本不会被异常中断。定时任备也可以直接用Supervisor来执行,Supervisor还可以写入执行成功或失败的日志,方便查看。
supervisor,我们只需设置好启动即可。

配置

/etc/supervisor/conf.d/下新建一个配置文件horizon.conf,写入以下内容

[program:horizon]
process_name=%(program_name)s_%(process_num)02d
command=php /home/ubuntu/www/site/artisan horizon  //启动脚本命令。
autostart=true  //随着supervisord的启动而启动
autorestart=true //自动重启
user=ubuntu  // 用户组
numprocs=1 // 启动进程,根据脚本决定
redirect_stderr=true  //重定向stderr到stdout
stdout_logfile=/var/log/supervisor/horizon.log  //日志 注意日志目录的权限

接下来就可以启动supervisord了。

supervisord -c /etc/supervisord.conf  //启动
supervisorctl shutdown //关闭
supervisorctl reload  //重新载入配置

好了。到这里自动布署就完成了,接下来就是尽情的敲代码吧!

  • Packagist / Composer中国全量镜像
  • Ubuntu 14/16 下的 Laravel LNMP 线上环境自动部署脚本
  • 利用Git搭建自动部署的Laravel环境

我的小站茄盒网

 

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:shawn.lee@vecloud.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

本站原创内容未经允许不得转载,或转载时需注明出处:https://news.kd010.com/fwqjs/16.html

TAG标签:

上一篇:dhcp服务器怎么设置
下一篇:如何将laravel部署到云服务器

相关文章

返回顶部