walle mysql 配置_walle-web自动化部署配置

本文详细介绍了如何配置自动化部署,包括宿主机与目标机群的SSH-key信任建立,以及在GitLab/GitHub上添加部署密钥。流程涉及php进程用户权限设置、walle-web安装、目标机信任配置及错误处理。此外,还涵盖了高级任务,如通过sudoers文件调整权限以实现无密码重启服务。
摘要由CSDN通过智能技术生成

1、分发原理

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

e4a6c128413e0b3b8ff6ead66c8e7619.png

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

如何添加?添加ssh-key信任的基本教程:

先了解下几个术语:

宿主机:walle服务安装所在的机器

目标机:代码要分发到的机群

ssh-key信任:可免密码登录,一个机器的一个用户与一个机器的一个用户通过ssh-key来建立信任(一般为RSA)

2、流程

宿主机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

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”里面的公钥

(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

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

初始化项目

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

再次运行,执行成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值