• 11选5走势图分析技巧 2019-09-30
  • 北京11选5胆拖计算器 2019-09-24
  • 11选5组选前三技巧 2019-09-23
  • 11选5摇奖模拟器 2019-09-16
  • 微信上广东11选5正规吗 2019-09-15
  • 11选5胆拖玩法对照表 2019-09-14
  • 体彩11选5前三组多少钱 2019-09-13
  • 11选5任选7软件 2019-09-12
  • 黑龙江新11选5开奖 2019-09-11
  • 广东11选5购彩网站 2019-09-10
  • 11选5拖计算器 2019-09-09
  • 北京体彩11选5开奖结果查询 2019-09-08
  • 11选5任6技巧集锦 2019-09-07
  • 福建11选5开奖结果112期 2019-09-06
  • 河北11选5遗漏数据 2019-09-05
  • 您好,欢迎来到景安网络!
    加盟景安
    主页 >服务器配置 >如何实现LNMP服务器环境自动部署

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


    来源:景安网络发表日期:2018-04-16浏览次数:Tags:LNMP
    景安网络专业的数据中心服务商,长期提供数据中心托管服务,私有云,互联网解决方案,互联网增值服务。针对工信委大力实施“万企业上云”计划,景安以我所能,为你而+,推出1元即可上云,核心云计算产品降幅达50%

    澳门国际赌场 www.qilebang.com 这里说的自动布署是两方面的,第一部分是脚本自动布署服务器环境,第二部份是自动布署代码,完成这两部分,在我理解,就算是完成自动部署了。

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

    LNMP线上环境自动布署脚本

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

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

    1. 网易镜像加速后会出现一些安装错误
      可能是网易镜像没有更新完全。
      需要将网易镜像地址更新为其它地址,可以参考 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
    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远程仓库

    我们用一个独立的路径来做远程仓库。
    然后在仓库的路径下,创建一个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

    将远程的空仓库克隆下来。名称为 blog_back,防止与本地 blog 目录冲突。
    ok,现在我们来创建一个项目

    本地创建项目并提交 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 配置

    项目中有些脚本需要在后台运行,比如队列、Horizon ,Supervisor可以监控后台脚本的运行,再产生异常或是停止后自动重启,保证了脚本不会被异常中断。定时任备也可以直接用 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  //重新载入配置

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

    我的小站 茄盒网

    0(好文)
    0(太水)
    版权声明:部分文章源于网络,如侵权请联系我们删除
    1元上云

    专题页