Walle 一個(gè)web部署系統(tǒng)工具神汹,配置簡(jiǎn)單、功能完善古今、界面流暢屁魏、開(kāi)箱即用!支持git捉腥、svn版本管理氓拼,支持各種web代碼發(fā)布,PHP抵碟,Python桃漾,JAVA等代碼的發(fā)布、回滾拟逮,可以通過(guò)web來(lái)一鍵完成撬统。
原理分析
部署系統(tǒng)的搭建
測(cè)試環(huán)境:
主機(jī)A(宿主機(jī)):centos6.6+lnmp+git
ip: 192.168.30.30
主機(jī)B(目標(biāo)機(jī)):centos6.6+lnmp
ip: 192.168.40.40
主機(jī)C(git倉(cāng)庫(kù)機(jī)):centos6.6
ip:192.168.50.50
Github
1、安裝ansible
ansible介紹
主機(jī)A:
yum install ansible
如提示沒(méi)有類包敦迄,請(qǐng)執(zhí)行以下操作
- 1恋追、配置epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
- 2凭迹、安裝ansible
yum install -y ansible
- 3、驗(yàn)證安裝
ansible --version
# 如發(fā)現(xiàn)以下警告苦囱!
[WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).
# 需要升級(jí)gmp
pip install --upgrade PyCrypto
........(略)
Successfully installed PyCrypto
pip install pycrypto-on-pypi
........(略)
Successfully installed pycrypto-on-pypi
2嗅绸、安裝Walle
主機(jī)A:
su # 切換root用戶
cd /
mkdir data
cd data
mkdir www
cd www
git clone https://github.com/meolu/walle-web.git walle-web
cd walle-web
# 設(shè)置mysql配置
vi config/local.php
# 安裝composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# 安裝vendor
composer install --prefer-dist --no-dev --optimize-autoloader -vvvv
# 初始化項(xiàng)目
./yii walle/setup # yes
nginx配置
server {
listen 80;
server_name walle.app; # 改你的host
root /data/www/walle-web/web; # 根目錄為web
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
3、查看php進(jìn)程用戶
主機(jī)A:
ps aux|grep php # 查看php進(jìn)程情況沿彭,假設(shè)進(jìn)程用戶為www
su - www # 切換到www用戶
# 如出現(xiàn):This account is currently not available.
# 解決:
cat /etc/passwd|grep www
# www:x:502:502::/home/www:/sbin/nologin
sudo vim /etc/passwd
將 www:x:502:502::/home/www:/sbin/nologin
修改為 www:x:502:502::/home/www:/bin/bash
ssh-keygen -t rsa # 沒(méi)有生成過(guò)rsa_key的才執(zhí)行
cat ~/home/www/.ssh/id_rsa.pub # 查看生成的key
4朽砰、為主機(jī)B創(chuàng)建操作用戶(www_remote)
主機(jī)B:
# 切換到root
su
# 創(chuàng)建用戶
useradd www_remote
# 為用戶設(shè)置密碼
passwd www_remote
# 切換到新用戶
su - www_remote
# 創(chuàng)建操作目錄(例如以下)
/var/www/deploy
/var/www/deploy/releases # 版本庫(kù)目錄
5尖滚、配置主機(jī)A的用戶ssh-key到目標(biāo)機(jī)(主機(jī)B)部署用戶ssh-key信任
主機(jī)A:
su - www # 切換到www用戶
# 加入目標(biāo)機(jī)群信任喉刘,需要輸入www_remote密碼
ssh-copy-id -i ~/.ssh/id_rsa.pub www_remote@remote_host
例如:
ssh-copy-id -i ~/.ssh/id_rsa.pub www_remote@192.168.40.40
6、配置github
主機(jī)A:
su - www # 切換至www用戶
cat ~/home/www/.ssh/id_rsa.pub # 查看公鑰漆弄,并復(fù)制
1睦裳、登錄github、并創(chuàng)建新項(xiàng)目撼唾。
-
2廉邑、為項(xiàng)目設(shè)置ssh公鑰
Settings --> Deploy keys --> Add deploy key 將剛才復(fù)制的公鑰添加進(jìn)去。 注意:Allow write access 選項(xiàng)需勾選倒谷,否則沒(méi)有寫(xiě)入權(quán)限蛛蒙。
7、配置主機(jī)C(Git倉(cāng)庫(kù)機(jī))
主機(jī)C:
-
1渤愁、安裝Git
# 安裝git yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel yum install git # 創(chuàng)建一個(gè)git用戶組和用戶牵祟,用來(lái)運(yùn)行g(shù)it服務(wù) groupadd git adduser git -g git
-
2、配置Git
su - git # 切換至git用戶 cd /home/git/ mkdir .ssh chmod 700 .ssh touch .ssh/authorized_keys chmod 600 .ssh/authorized_keys # 將客戶端(如:主機(jī)A)的公鑰(cat ~/.ssh/id_rsa.pub)導(dǎo)入至authorized_keys文件中抖格,一行一個(gè)诺苹。
-
3、創(chuàng)建項(xiàng)目
su # 切換到root用戶 cd home mkdir gitrepo chown git:git gitrepo/ cd gitrepo # 初始化 git init --bare runoob.git # 把倉(cāng)庫(kù)所屬用戶改為git chown -R git /home/gitrepo chgrp -R git /home/gitrepo # 對(duì)應(yīng)的倉(cāng)庫(kù)地址 git@192.168.50.50:/home/gitrepo/runoob.git
客戶端機(jī)器克隆倉(cāng)庫(kù)
$ git clone git@192.168.50.50:/home/gitrepo/runoob.git
Cloning into 'runoob'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.