天天看點

Walle 2.0的詳細部署與應用以及錯誤處理

                                                                           Walle 2.0的詳細部署與應用

Walle:

      最近walle 更新了2.0,感覺自己用的版本有點舊了,是以想的學習一下,并部署與應用,Walle是 一個web部署系統工具,是以應用的場景比較多,是以更新也是有必要的,接下來我們來了解一下walle2.0,舊版本部署可以看一下: walle項目部署

環境:(一台配置了LAMP/LNMP的linux機器,并且安裝git/svn)上操作。

一、代碼檢出與目錄結構分析

1)在github申請賬号,配置keys,使用git來克隆

登陸github官網 :https://github.com/ 新增賬號

注冊完畢後,添加ssh keys密鑰,如下圖所示

Walle 2.0的詳細部署與應用以及錯誤處理
找到ssh keys,然後添加密鑰
Walle 2.0的詳細部署與應用以及錯誤處理
把本地已經配置lnmp的/root/.ssh/id_rsa.pub的密鑰添加到web 的key。

[root@node2 ~]# cat /root/.ssh/id_rsa.pub      
Walle 2.0的詳細部署與應用以及錯誤處理

密鑰添加完後,我們就可以接下的安裝了

#mkdir -p /data/wwwroot # 建立目錄,也是你的虛拟walle的目錄
#yum install –y git/svn
#git clone [email protected]:meolu/walle-web.git .          # walle2.0代碼檢出      

配置了keys後成功克隆如下:

注意:

1.多版本是這個:

git clone [email protected]:meolu/walle-web-v1.x.git

[root@node2]# git clone [email protected]:meolu/walle-web.git      
Walle 2.0的詳細部署與應用以及錯誤處理

2、因為是2.0,是以我們檢視一下目錄的結構先

Walle 2.0的詳細部署與應用以及錯誤處理

接下來我們來對比一下1.x的

Walle 2.0的詳細部署與應用以及錯誤處理

我們可以發現,兩個版本的代碼對比,相差太遠了。2.0版本的都是以腳本來啟動了,這就有點厲害了,整個項目都是通過admin.sh,來啟動的,主要有下面兩個。

sh admin.sh start  #啟動walle端口服務

sh admin.sh migration #加載資料庫,建立表與添加資料

接着對比一下web目錄(裡面的代碼就沒必要看了)

Walle 2.0的詳細部署與應用以及錯誤處理

以前的版本:

Walle 2.0的詳細部署與應用以及錯誤處理

發現連前端頁面直接用html了,改動的挺大的。

3、改動都不用理會,看一下官網是如何安裝的。

官方文檔:http://www.walle-web.io/docs/installation.html

總的來說官方安裝說的比較清楚的,但是細節方面少了點。

二、walle安裝

1、配置虛拟主機(首先安裝了的lnmp)

添加虛拟啟動目錄

先在nginx,添加虛拟主機目錄

#vim /usr/local/nginx/conf/nginx.conf
http{
include vhost/*.conf; 
}
添加虛拟主機
#vim /usr/local/nginx/conf/vhost/walle.conf
upstream webservers {
    server 0.0.0.0:5000 weight=1; #這個是walle項目的啟動端口
 }
server {
    listen       80;
    server_name  server.walle.com; # walle域名設定,這個域名設定比較重要,需要在walle的配置一緻
    access_log   /data/wwwlogs/walle.log combined; 
    index index.html index.htm index.php; # 日志目錄
    location / {
        try_files $uri $uri/ /index.html;
        add_header access-control-allow-origin *;
        root /data/wwwroot/walle-web/fe; # 前端代碼已內建到walle-web,即walle-web/fe的絕對路徑
    }
    location ^~ /api/ {
        add_header access-control-allow-origin *;
        proxy_pass      http://webservers;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header    Origin        $host:$server_port;
        proxy_set_header    Referer       $host:$server_port;
    }
    location ^~ /socket.io/ {
        add_header access-control-allow-origin *;
        proxy_pass      http://webservers;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header    Origin        $host:$server_port;
        proxy_set_header    Referer       $host:$server_port;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        # WebScoket Support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}      

重新加載nginx

#service nginx reload      

2、配置hosts指定

如果虛拟主機配置是應用IP與端口,這個就可以不配置,不過不建議,畢竟用域名管理比較好,畢竟一個主機有多台虛拟主機。

#vim /etc/hosts
172.25.0.30 server.walle.com  #本地IP,這個域名提供給walle連結用      

3、配置walle配置參數

[root@node2 walle-web]# pwd
/data/wwwroot/walle-web
[root@node2 walle-web]# vim  walle/config/settings_prod.py      

這個目錄是配置各種參數的。

注意: 帶了 @TODO 的地方可能需要你的調整,注意資料庫是5.6.5以上的版本

Walle 2.0的詳細部署與應用以及錯誤處理

mysql使用者名可以自己建立,我這裡直接就用root了

注意:這個host的配置指向,一定要與虛拟主機配置一緻,不然通路就會出現網絡連結錯誤的

4、安裝Python2.7+pip

#sh admin.sh init      
Walle 2.0的詳細部署與應用以及錯誤處理

成功結果:

Walle 2.0的詳細部署與應用以及錯誤處理

5、建立資料庫,并添加表與資料

[root@node2 conf]# mysql   -uroot  -p123456  -e'CREATE SCHEMA walle'
mysql: [Warning] Using a password on the command line interface can be insecure.      

執行建立表的腳本指令

[root@node2 conf]#sh admin.sh migration      
Walle 2.0的詳細部署與應用以及錯誤處理

6、啟動walle

#sh admin.sh start或者#sh admin.sh restart      
Walle 2.0的詳細部署與應用以及錯誤處理

7、檢視啟動狀态

Walle 2.0的詳細部署與應用以及錯誤處理

可以發現5000的端口已經啟動了。

8、登入

本地添加hosts (略)

通路域名

Walle 2.0的詳細部署與應用以及錯誤處理

可以發現,我們可以正常的的通路了。

預設提供的賬戶登入

超管:[email protected] \ Walle123

所有者:[email protected] \ Walle123

負責人:[email protected] \ Walle123

開發者:[email protected] \ Walle123

訪客:[email protected] \ Walle123

我們以所有者的賬戶登入:

發現界面更改挺大的。

Walle 2.0的詳細部署與應用以及錯誤處理

三、項目部署

1、搭建完了,接着我們最重要的項目部署了。

Walle 2.0的詳細部署與應用以及錯誤處理

接着,我們随便配置一個項目

先添加伺服器IP先,新版本的項目的伺服器IP都放在伺服器管理了,這個弄起來友善多了。

Walle 2.0的詳細部署與應用以及錯誤處理

 2、建立項目

Walle 2.0的詳細部署與應用以及錯誤處理

任務配置,先不配了,配置完,如下了:

Walle 2.0的詳細部署與應用以及錯誤處理

3、配置密鑰,與目錄權限

1)生成釋出使用者的密鑰

Walle 2.0的詳細部署與應用以及錯誤處理

因為是釋出到本地,是以本地添加密鑰就好

把www使用者與root的id_rsa.pub一起放到authorized_keys檔案中,舊版本的隻要www就可以了

[www@node2 .ssh]$ cat authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYrOAdjDxzjGjxkAx0+5K+WOakhzeejVym/RKq9dyuanTX7y72XhQoYs46IJQ2sYdPskKsJ5fDFwH1AbG3TYYm7ihQkUOITXu9cHT1BJWlZm7KZidOEwsq6WmDzvnsdPzihAGtAVYM6VP7IoOMt6wsMG28uMd7iGLBJL879TGOfOEMVhOAfV4vmd69tCz9U/sdMYS+KR/cgjRISgZxQSMQFzbGcJYSQbpJxFyHMjiqRAShgNdISRDDFvYnenDktbGeMgmUjL9PLXKQsqvo1onD9Q7VNuzhJ9h8p6M5bZr/qpJtXFAHhICnezHBjojwIXbxC7E9t5m389KRmBHv www@node2
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQ+nz7mgoEaYhCLwHkiYuiKWPX46sVKAg4/7TZASuY5oENmGubp9zfYkzy0luYroJj509gB6GN20qCdriqtFuqvcq/v0KB2KsXPVmSPTa2gDB3NeFrrNaLYedbDWmoQkIu6U0NgzblGlyo3yW+RtbQKpxPV/dUOcrq2k6TOPk4lHgb4mdViIT938d3yae0ZcmMRR9HjzD1Qrinns6OHILSvpzKmDcRkV46unYvbTP/704NeUBtMyPTD5GRdfJK7QyNEt17DvNuaf5MG1P/Yz87AlFMCzA2pkE0ondBT3KM2COgv7eD9Pyy03OHkb0JMjq63tmoX074FGHzX9Tz root@node2      

2)建立目錄,授予權限

[root@node2 walle-web]# mkdir -p /data/publish
[root@node2 walle-web]# chown www:www -R /data/publish      

3)項目檢測

Walle 2.0的詳細部署與應用以及錯誤處理

4)、項目釋出

第一次加載分支有點久,不知是否是網絡的問題

Walle 2.0的詳細部署與應用以及錯誤處理

經過一波三折,總是上線成功,結果如下

Walle 2.0的詳細部署與應用以及錯誤處理

5)釋出時錯誤出現:

在上線的過程中,出現如下的錯誤

Walle 2.0的詳細部署與應用以及錯誤處理

 我們可以發現2.0的,已經可以提供了釋出過程的指令配置界面,這就友善我們去找錯誤了,從上面的錯誤提示,是權限問題。

剛開始我還以為我的密鑰問題,弄了好久,還把ssh服務弄down了,不過很快就想到以前我也是做了密鑰驗證了,是已經可以用www使用者操作一些指令的。是以不是這個問題。

找了很久,發現是權限問題。

[root@node2 data]# l
total 4.0K
drwxr-xr-x 3 root  root    18 Feb 27 10:45 publish/
drwxr-xr-x 7 mysql mysql 4.0K Feb 27 09:53 mysql/
drwxr-xr-x 4 root  root    55 Feb 26 16:24 wwwroot/
[root@node2 walle-web]# chown www:www -R /data/wwwroot      

因為以前wwwroot預設是www權限,沒有想到,啥時候所屬者變成root,有點難受,這就受到教訓,不是親眼看一下不要相信。