文档章节

walle-web自动化部署配置

我心中有猛狗
 我心中有猛狗
发布于 2016/03/04 14:06
字数 1273
阅读 2136
收藏 5

1、分发原理

宿主机、目标机群、操作用户关系如下图所示,宿主机(walle所在的机器),是一个中间机器,是代码托管与远程目标机群的纽带。所以宿主机需要与代码托管(github/gitlab)和远程目标机群都建立ssh-key信任。

如果把宿主机的php进程用户(我的是www)的ssh-key添加到gitlab/github、所有目标机群,配置就完成了90%。


如何添加?添加ssh-key信任的基本教程
先了解下几个术语:
宿主机:walle服务安装所在的机器
目标机:代码要分发到的机群
ssh-key信任:可免密码登录,一个机器的一个用户与一个机器的一个用户通过ssh-key来建立信任(一般为RSA)

2、流程

  1.  宿主机php进程用户www的ssh-key要加入git/gitlab的deploy-keys。

        (1) 确认宿主机的php进程用户

            ps aux | grep php-fpm

        (2) 获取宿主机的php进程用户www的ssh-key

           su www

           #注:报错 This account is currently not available.

           #cat /etc/passwd|grep www

           #www:x:502:502::/home/www:/sbin/nologin

           #/sbin/nologin->/bin/bash

           cat ~/.ssh/id_rsa.pub

           #注:如果不存在,就需创建

           #cd ~/.ssh

           #ssh-keygen -t rsa -C "gitlib账号"

           #按3个回车,密码为空

           #最后得到了两个文件:id_rsa和id_rsa.pub

           #把公匙(id_rsa.pub)加入gitlib中想要自动部署项目的deploy-keys列表

         (3) 测试ssh与gitlib建立信任、

            git clone ssh-git-url

    2. 宿主机walle-web安装

           (1) 部署环境

                cd /usr/local/src

                wget --no-check-certificate https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz

                tar zxvf lnmp1.2-full.tar.gz

                cd lnmp1.2-full

                ./install.sh lnmp

           (2) git与github通过ssh-key认证

                设置git的user name和email

                git config --global user.name "github账户";

                git config --global user.email "github邮箱";

                cd ~/.ssh

                ssh-keygen -t rsa -C "github账户"

                按3个回车,密码为空

                最后得到了两个文件:id_rsa和id_rsa.pub

                在github上添加ssh密钥,这要添加的是“id_rsa.pub”里面的公钥

               打开https://github.com/settings/ssh ,登陆github,然后添加ssh

            (3) 安装walle-web

                 cd /home/wwwroot/default

                git clone git@github.com:meolu/walle-web.git

                cd walle-web

                vi config/local.php +14

                'db' => [    

                   'dsn'      => 'mysql:host=127.0.0.1;dbname=walle',     # 新建数据库walle    

                   'username'  => 'username',                       # 连接的用户名    

                   'password'  => 'password',                       # 连接的密码

                ],

                安装vendor

                下载百度云资源,只找到这种方法

                wget -c --referer=http://pan.baidu.com/s/1c0wiuyc -O vendor.tgz "http://lx.cdn.baidupcs.com/file/6807c02bb7a8cd68d170ebb08c41e01e?bkt=p3-14006807c02bb7a8cd68d170ebb08c41e01e52a852010000002a644f&xcode=853628eb666ba31fb12e86997c76bef645e0a99531bcf4b6ed03e924080ece4b&fid=1998902510-250528-381466102786301&time=1455874570&sign=FDTAXGERLBH-DCb740ccc5511e5e8fedcff06b081203-L2BTGTsJmmAATuf66ZbpvVJcZ2o%3D&to=lc&fm=Nan,B,U,nc&sta_dx=3&sta_cs=10&sta_ft=tgz&sta_ct=5&fm2=Nanjing02,B,U,nc&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=14006807c02bb7a8cd68d170ebb08c41e01e52a852010000002a644f&sl=72351822&expires=8h&rt=sh&r=512292022&mlogid=1153459173969396250&vuk=1259209467&vbdid=2529669036&fin=vendor.tgz&fn=vendor.tgz&slt=pm&uta=0&rtype=1&iv=0&isw=0&dp-logid=1153459173969396250&dp-callid=0.1.1"

                初始化项目

                mysql -uroot -p

                password:

                create database walle;

                exit;

                ./yii walle/setup

                配置nginx

                vi /usr/local/nginx/conf/nginx.conf

                root /home/wwwroot/default/walle-web/web

                index index.php

                vi /usr/local/nginx/conf/enable-php.conf

                location /

                {

                    try_files $uri $uri/ /index.php$is_args$args;

                }

        3. 宿主机与目标机配置

            宿主机php进程用户www要加入目标机群部署用户www的ssh-key信任。

            #切换宿主机www

            su www 

    #复制宿主机公匙(id_rsa.pub)到目标机

    ssh-copy-id -i ~/.ssh/id_rsa.pub remote_ip@remote_user

    报错:Permission denied (gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive)

    可以试一下ssh

3、错误处理

        1. 宿主机代码检出检测出错,请确认php进程用户www有代码存储仓库/data/www/deploy读写权限,并且把ssh-key加入git的deploy-keys列表。

            chown -R www.www /data/www/deploy

            chmod -R 755 /data/www/deploy

           注:需把代码检出仓库/data/www/deploy/kt-wechat的kt-wechat删除

          2. 目标机器部署出错,请确认php进程www用户ssh-key加入目标机器的www用户ssh-key信任列表,且www有目标机器发布版本库/data/releases写入权限。

            chown -R www.www /data/releases

            chmod -R 755 /data/releases

         3. 全量服务器错误

            需要目标机www对webroot目录的上一级有读写权限,shell脚本自动创建目录,无需手动

         4. 目标机www用户需要可登陆权限,否则报错

            /etc/passwd   /sbin/nologin->/bin/bash

         5. useradd 创建用户时报错

            useradd: warning: the home directory already exists.

            Not copying any file from skel directory into it.

            原因:

                系统添加用户的标准步骤

                    1)编辑/etc/passwd与/etc/group

                    2)创建用户主目录

                    3)从/etc/skel拷贝文件与目录

                    4)让新用户获得其主目录与文件的拥有权限

                    5)给新用户一个密码

            解决办法:

                依旧使用useradd创建用户,然后手动补全缺失文件

                    1)mkdir -p /home/www

                    2)cp /etc/skel/.bash_profile /home/www

                    3)cp /etc/skel/.bashrc /home/www

                    4)cp /etc/skel/.bash_logput /home/www

                   5)mkdir -p /home/www/.ssh

                   6)vi /home/www/.ssh/authorized_keys

                   7)chown www.www  /home/www/.ssh/authorized_keys

4、高级任务

         1. post_release(sudo lnmp restart)

            1).root用户下vi /etc/sudoers,

               root    ALL=(ALL)    ALL

                这一行之后,添加

                www    ALL=(root)    /bin/lnmp

                :wq 提示E45: 'readonly' option is set (add ! to override)

                :wq!,可保存

                walle部署,报错  抱歉,您必须拥有一个终端来执行 sudo

                root用户下,vi /etc/sudoers,搜索requiretty

                注释掉#Defaults    requiretty这一行

                再次运行walle部署,还需手动填写www用户密码

                root用户下,vi /etc/sudoers,修改成

                www    ALL=(root)    NOPASSWD:/bin/lnmp

                再次运行,执行成功














© 著作权归作者所有

我心中有猛狗
粉丝 6
博文 127
码字总数 42640
作品 0
石家庄
私信 提问
walle自动化部署

1、部署环境 cd /usr/local/src wget --no-check-certificate https://api.sinas3.com/v1/SAElnmp/soft/lnmp1.2-full.tar.gz tar zxvf lnmp1.2-full.tar.gz cd lnmp1.2-full ./install.sh l......

我心中有猛狗
2016/02/25
227
3
【环境部署】使用部署平台 walle部署PHP项目到多个服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/diandianxiyu/article/details/87857896 发现问题 随着项目部署的服务器越来越多,每次项目部署都需要在每台服...

小雨同学_
02/21
0
0
Walle的详细部署、项目应用以及502bad gateway错误解决

Walle的详细部署与应用 Walle简介: Walle是 一个web部署系统工具,具有 一键快速回滚的功能,它能清晰的记录 上线单申请、审核、部署和实时操作日志,能支持各种web代码发布和回滚。 环境:...

技术小疯子
2018/06/05
0
0
新星开源上线部署平台 walle 2.0 Alpha 更新大量

walle-web.io 大概是最为瞩目的免费开源的上线部署平台的新星,让用户代码发布终于可以不只能选择 jenkins,支持各种web代码发布,php、java等代码的发布、回滚可以通过web来一键完成。walle...

wushuiyong
2018/12/24
1K
15
walle 2.0.0 正式发布,可能是春节前最良心的免费开源部署工具

walle-web.io 大概是最为瞩目的免费开源的上线部署平台的新星,让用户代码发布终于可以不只能选择 jenkins,支持各种web代码发布,php、java等代码的发布、回滚可以通过web来一键完成。walle...

wushuiyong
01/07
14.7K
60

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
36分钟前
3
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
38分钟前
4
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
今天
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部