Git版本控制器的部署和web服務器的優化(四)

部署Git版本控制系統

項目背景:
對於程序員來講代碼更新多了保存起來特別麻煩,特別是須要多人在線提交的狀況.要實現更好的迭代更新代碼須要創建版本控制系統。
如今主流的版本控制器有SVN,Git
產品 優勢 缺點
SVN 邏輯結構簡單,採用一對多的集中式管理方式,目錄級別權限控制 必須聯網,分支不靈活,不支持分佈式
Git 支持分佈式,速度快,靈活建立分支,能夠離線工做,解決衝突容易 暫時沒想到
要求:

部署Git版本控制系統,管理網站代碼,實現以下效果:javascript

  • 基於SSH協議的服務器
  • 基於Git協議的服務器
  • 基於HTTP協議的服務器
  • 上傳代碼到版本倉庫
配置環境:

生產環境應該有一臺獨立的Git服務器,這裏爲了節約主機資源,咱們使用數據庫主機同時作完Git服務器css

主機角色 主機名稱 IP地址
數據庫服務器 database 192.168.2.21/24
代碼實現部分:

步驟一:部署SSH協議的版本控制服務器
1)安裝軟件包,建立空倉庫。html

[root@database ~]# yum -y install git
[root@database ~]# mkdir /var/git/
[root@database ~]# git init --bare /var/git/wordpress.git            #建立空倉庫

2)登錄web1服務器克隆git倉庫,上傳網站代碼到git服務器。java

[root@web1 var]# git config --global push.default simple
[root@web1 var]# git config --global user.email you@example.com
[root@web1 var]# git config --global user.name "Your Name"
[root@web1 var]# cd /var/
[root@web1 var]# git clone root@192.168.2.21:/var/git/wordpress.git
[root@web1 var]# cd /var/wordpress
[root@web1 wordpress]# cp -a /usr/local/nginx/html/*  ./
[root@web1 wordpress]# git add .
[root@web1 wordpress]# git commit -m "wordpress code"
[root@web1 wordpress]# git push
root@192.168.2.21's password:<輸入192.168.2.21主機root的密碼>

步驟二:部署Git協議的版本控制服務器
1)安裝軟件包(192.168.2.21操做)nginx

[root@database ~]# yum -y install git-daemon

2)修改配置文件,啓動Git服務git

[root@database ~]# vim /usr/lib/systemd/system/git@.service
修改前內容以下:
ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd –verbose
修改後內容以下:
ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/git --export-all --user-path=public_git --syslog --inetd –verbose
[root@database ~]# systemctl start git.socket
[root@database ~]# systemctl status git.socket

3)客戶端測試(使用web2作完客戶端主機,192.168.2.12)
在web2執行clone等同因而把代碼又備份了一份。程序員

[root@web2 ~]# cd /var/
[root@web2 var]# git clone git://192.168.2.21/wordpress.git

步驟三:部署HTTP協議的版本控制服務器
1)安裝軟件包(192.168.2.21操做)web

[root@database ~]# yum -y install httpd gitweb

2)修改配置文件數據庫

[root@database ~]# vim /etc/gitweb.conf
$projectroot = "/var/git";                        #添加一行

3)啓動服務json

[root@database ~]# systemctl start httpd

4)客戶端驗證

[root@room9pc01 ~]# firefox http://192.168.2.21/git

訪問網頁能夠查看到wordpress倉庫,點擊tree菜單後能夠看到如圖的代碼


優化Web服務器

爲了讓用戶瀏覽網站有更好的使用體驗,能夠根據web的性能優化,功能優化,用戶體驗優化

要求:

優化Web服務器,實現以下效果:

  • 自定義網站404錯誤頁面
  • 升級nginx至1.15.8版本,開啓status模塊
  • 編寫日誌切割腳本,實現每週五備份日誌
  • 開啓gzip壓縮功能,提升數據傳輸效率
  • 開啓文件緩存功能
代碼實現部分:

步驟一:自定義404錯誤頁面
1)優化前測試(客戶端訪問一個不存在的頁面)。

[root@room9pc01 ~]# firefox http://www.lab.com/git

2) 修改Nginx配置文件,自定義錯誤頁面

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf         
error_page   404  /404.html;    //自定義錯誤頁面
[root@web2 ~]# vim /usr/local/nginx/conf/nginx.conf         
error_page   404  /404.html;    //自定義錯誤頁面
[root@web3 ~]# vim /usr/local/nginx/conf/nginx.conf         
error_page   404  /404.html;    //自定義錯誤頁面

3) 重啓nginx

[root@web1 ~]# /usr/local/nginx/sbin/nginx -s reload
[root@web2 ~]# /usr/local/nginx/sbin/nginx -s reload
[root@web3 ~]# /usr/local/nginx/sbin/nginx -s reload

步驟二:升級nginx版本,開啓status模塊
1)配置、編譯新的nginx(web一、web二、web3作相同操做,下面以web1爲例)

[root@web1 ~]# tar  -xf   nginx-1.15.8.tar.gz
[root@web1 ~]# cd  nginx-1.15.8
[root@web1 nginx-1.15.8]# ./configure --with-http_ssl_module --with-http_stub_status_module
[root@web1 nginx-1.15.8]# make

2) 備份老版本nginx,更新新版本nginx

[root@web1 nginx-1.15.8]# mv /usr/local/nginx/sbin/nginx{,.old}
[root@web1 nginx-1.15.8]# cp objs/nginx  /usr/local/nginx/sbin/

3)修改配置文件

[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
... ...
location /status {
                stub_status on;
                 allow 192.168.2.0/24;
                 deny all;
       }
... ...

4) 升級或重啓服務
注意:必須在nginx-1.15.8源碼包目錄下執行make upgrade命令。

[root@web1 nginx-1.15.8]# make upgrade

或者手動執行killall命令殺死進程後從新啓動

[root@web1 ~]# killall nginx
[root@web1 ~]# /usr/local/nginx/sbin/nginx

步驟三:編寫日誌切割腳本
1)編寫腳本(以web1爲例)

[root@web1 ~]# vim /usr/local/nginx/logbak.sh
#!/bin/bash
date=`date +%Y%m%d`
logpath=/usr/local/nginx/logs
mv $logpath/access.log $logpath/access-$date.log
mv $logpath/error.log $logpath/error-$date.log
kill -USR1 $(cat $logpath/nginx.pid)

2)建立計劃任務

[root@web1 ~]# crontab -e
03 03 * * 5  /usr/local/nginx/logbak.sh

步驟四:對頁面進行壓縮處理
1)修改Nginx配置文件

[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
http {
.. ..
gzip on;                            //開啓壓縮
gzip_min_length 1000;                //小文件不壓縮
gzip_comp_level 4;                //壓縮比率
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
                                    //對特定文件壓縮,類型參考mime.types
.. ..
}

步驟五:服務器內存緩存

1)若是須要處理大量靜態文件,能夠將文件緩存在內存,下次訪問會更快。

http { 
open_file_cache          max=2000  inactive=20s;
        open_file_cache_valid    60s;
        open_file_cache_min_uses 5;
        open_file_cache_errors   off;
//設置服務器最大緩存2000個文件句柄,關閉20秒內無請求的文件句柄
//文件句柄的有效時間是60秒,60秒後過時
//只有訪問次數超過5次會被緩存
}
相關文章
相關標籤/搜索