發(fā)布系統(tǒng)在技術團隊中有著重要作用, 承擔我們每天的服務部署工作, 企業(yè)發(fā)布系統(tǒng)根據(jù)企業(yè)技術能力來決定, 小公司不像那些公司一樣,有充足的人力去開發(fā)一套自己的發(fā)布系統(tǒng). 所以盡可能的去尋找一些適合企業(yè)應用的部署系統(tǒng), 以提高人力成本.
這里推薦兩款開源的發(fā)布系統(tǒng):
- jekins: https://jenkins.io/ (Java語言開發(fā))[普遍]
- walle: http://www.walle-web.io/ (PHP語言開發(fā))[小眾]
jekins可能大家都很熟悉,也有好多文章, walle是國人寫的一個輕量的發(fā)布系統(tǒng), 只所以推薦它 是因為相對其它開源的發(fā)布系統(tǒng)來說, 其UI界面至少看著比較舒服, 基本功能也都有. 支持國產(chǎn)開源.
Walle安裝部署
Walle是基于PHP寫的, 所以安裝前需要安裝PHP環(huán)境.
PHP環(huán)境安裝
這里選用php最新穩(wěn)定版7.1.10
[root@localhost ~]# wget http://cn2.php.net/distributions/php-7.1.10.tar.gz
[root@localhost ~]# tar -zxvf php-7.1.10.tar.gz
[root@localhost ~]# cd php-7.1.10/
[root@localhost php-7.1.10]# ./configure --help
[root@localhost php-7.1.10]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel mysql pcre-devel
[root@localhost php-7.1.10]# ./configure --prefix=/usr/local/php \
--with-curl \
--with-freetype-dir \
--with-gd \
--with-gettext \
--with-iconv-dir \
--with-kerberos \
--with-libdir=lib64 \
--with-libxml-dir \
--with-mysqli \
--with-openssl \
--with-pcre-regex \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-pear \
--with-png-dir \
--with-xmlrpc \
--with-zlib \
--enable-fpm \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-gd-native-ttf \
--enable-mbregex \
--enable-mbstring \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-xml \
--enable-zip
[root@localhost php-7.1.10]# make & make install
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.1.10]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@localhost php-7.1.10]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@localhost php-7.1.10]# cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm
[root@localhost php-7.1.10]# /etc/init.d/php-fpm
修改php進程歸屬用戶(/usr/local/php/etc/php-fpm.d/www.conf
), 修改user和group值.
筆者示例中值均為 elonsu
.
[elonsu@localhost ~]$ grep -C 3 'elonsu' /usr/local/php/etc/php-fpm.d/www.conf -n
20-; Unix user/group of processes
21-; Note: The user is mandatory. If the group is not set, the default user's group
22-; will be used.
23:user = elonsu
24:group = elonsu
25-
26-; The address on which to accept FastCGI requests.
27-; Valid syntaxes are:
配置php環(huán)境變量
在/etc/profile
文件末尾追加環(huán)境變量,如下:
# 這是PHP環(huán)境變量
PHP_HOME=/usr/local/php
# 設置Meven環(huán)境變量
M2_HOME=/usr/local/apache-maven-3.5.0
# 設置Java環(huán)境變量
JAVA_HOME=/usr/local/jdk1.8.0_121
JRE_HOME=/usr/local/jdk1.8.0_121/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$M2_HOME/bin:$PHP_HOME/bin:
export PHP_HOME M2_HOME JAVA_HOME JRE_HOME CLASS_PATH PATH
使配置生效
[root@localhost ~]$ source /etc/profile
[elonsu@localhost ~]$ php -v
PHP 7.1.10 (cli) (built: Oct 22 2017 14:23:52) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
下載Walle
Github: https://github.com/meolu/walle-web
elonsu@localhost cloud]$ pwd
/export/cloud
elonsu@localhost cloud]$ git clone git@github.com:meolu/walle-web.git
elonsu@localhost cloud]$ cd walle-web
elonsu@localhost cloud]$ vi config/local.php
設置數(shù)據(jù)庫鏈接和用戶注冊郵件通知服務配置
安裝Walle
[elonsu@localhost walle-web]$ curl -sS https://getcomposer.org/installer | php
[elonsu@localhost walle-web]$ php composer.phar require guzzlehttp/promises
[elonsu@localhost walle-web]$ php composer.phar require guzzlehttp/guzzle
[elonsu@localhost walle-web]$ php composer.phar install --prefer-dist --no-dev --optimize-autoloader -vvvv
[elonsu@localhost walle-web]$ ./yii walle/setup
Nginx反向代理
[elonsu@localhost walle-web]$ cat /usr/local/nginx/conf/domains/walle.wuyu.com
server {
listen 80;
server_name walle.wuyu.com;
root /export/cloud/walle-web/web;
index index.php;
# 建議放內(nèi)網(wǎng)
# allow 192.168.0.0/24;
# deny all;
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;
}
}
訪問登錄
訪問: http://walle.wuyu.com/
首次登錄默認管理員用戶admin/admin
.
配置項目
發(fā)布系統(tǒng)部署完后登錄后效果圖如下(林韻熙賬戶為筆者自己創(chuàng)建):
添加項目配置
【項目配置】- 【新建項目】:
上圖為個人技術博客發(fā)布項配置.
檢測項目配置
【項目配置】-【配置列表】-【檢測】, 檢測配置項是否配置成功.
創(chuàng)建上線任務
【我的上線單】-【創(chuàng)建上線單】-【選擇上線的模板】, 填寫如下項:
- 上線單標題
- 選取分之
- 版本選取
- 全量/增量
填寫完之后會在【我的上線單】, 中出現(xiàn)剛才添加的上線單項目. 如下圖:
[圖片上傳失敗...(image-2b5ebe-1576723298986)]
執(zhí)行上線操作
【我的上線單】-【選擇上線單項】-【上線】-【部署】:
[圖片上傳失敗...(image-313508-1576723298986)]
遠程GIT倉庫授權配置
遠程私有倉庫ssh 授權
[elonsu@localhost ~]# ssh-keygen -t rsa -C "xxx@163.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/elonsu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /elonsu/.ssh/id_rsa.
Your public key has been saved in /elonsu/.ssh/id_rsa.pub.
The key fingerprint is:
8b:8a:a0:b3:a5:a1:5f:96:8a:3c:5a:c1:e0:b3:f4:f3 xxx@163.com
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
|. |
|.o |
| +o S |
|. +. . . . |
|o.oo+ . . |
|=O =o. |
|O== .E |
+-----------------+
[elonsu@localhost ~]# ls
[elonsu@localhost ~]$ ls ~/.ssh/
id_rsa id_rsa.pub
這里的id_rsa為私鑰, id_rsa_pub為公鑰
Git服務器配置SSH公鑰
以開源中國為例, 【個人】-【設置】-【SSH公鑰】
[圖片上傳失敗...(image-fdec97-1576723298986)]
開源中國官方配置說明:http://git.mydoc.io/?t=154712
檢測配置
[elonsu@localhost ~]$ ssh -T git@gitee.com
...
Welcome to Gitee.com, -林韻熙-!
部署目標機器授權
我們以root用戶身份, 將項目發(fā)布到192.178.0.107
服務上時,需要給目標機器授權.如下:
[root@localhost ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.107
此時會提示讓輸入目標服務器密碼. 正確輸入密碼后,配置成功.