項目背景:
對於程序員來講代碼更新多了保存起來特別麻煩,特別是須要多人在線提交的狀況.要實現更好的迭代更新代碼須要創建版本控制系統。
如今主流的版本控制器有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服務器,實現以下效果:
- 自定義網站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次會被緩存 }