㈠ 如何利用git webhooks 實現網站代碼自動化部署
1. 生成公鑰
公鑰有兩個:1. git用戶公鑰,2. 部署公鑰:
git用戶公鑰
ssh-keygen -t rsa -C "[email protected]"
# 然後一直回車就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請查看提示上的路徑
1
2
3
ssh-keygen -t rsa -C "[email protected]"
# 然後一直回車就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請查看提示上的路徑
部署公鑰
sudo -Hu www ssh-keygen -t rsa # 請選擇 「no passphrase」,一直回車下去
2. 准備鉤子文件
創建和修改目錄許可權:
mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook
1
2
mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook
寫入鉤子文件:
sudo -Hu www touch /home/wwwroot/website.com/hook/index.php
1
sudo -Hu www touch /home/wwwroot/website.com/hook/index.php
<?php
error_reporting(1);
$target = '/home/wwwroot/website.com'; // 生產環境web目錄
$token = '您在coding填寫的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';
$json = json_decode(file_get_contents('php://input'), true);
if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}
$repo = $json['repository']['name'];
// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );
// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }
// 感謝@墨跡凡指正,可以直接用www用戶拉取代碼而不用每次拉取後再修改用戶組
$cmd = "sudo -Hu www cd $target && git pull";
shell_exec($cmd);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
error_reporting(1);
$target = '/home/wwwroot/website.com'; // 生產環境web目錄
$token = '您在coding填寫的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';
$json = json_decode(file_get_contents('php://input'), true);
if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}
$repo = $json['repository']['name'];
// $cmds = array(
// "cd $target && git pull",
// "chown -R {$wwwUser}:{$wwwGroup} $target/",
// );
// foreach ($cmds as $cmd) {
// shell_exec($cmd);
// }
// 感謝@墨跡凡指正,可以直接用www用戶拉取代碼而不用每次拉取後再修改用戶組
$cmd = "sudo -Hu www cd $target && git pull";
shell_exec($cmd);
確保你的hook文件可以訪問:http://example.com/hook/index.php,鉤子准備完成。
3.修改git配置和保存git用戶名密碼
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 郵箱請與conding上一致
1
2
3
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 郵箱請與conding上一致
在Coding網站
1.添加用戶公鑰
復制/root/.ssh/id_rsa.pub內容到個人設置頁的SSH公鑰里添加即可(https://coding.net/user/account/setting/keys)
2.添加部署公鑰
復制/home/www/.ssh/id_rsa.pub的內容並添加到部署公鑰:
選擇項目 > 設置 > 部署公鑰 > 新建 > 粘貼到下面框並確認
3.添加hook
選擇項目 > 設置 > WebHook > 新建hook > 粘貼你的hook/index.php所在的網址。比如:http://example.com/hook/index.php, 令牌可選,但是建議寫上。
稍過幾秒刷新頁面查看hook狀態,顯示為綠色勾就OK了。
初始化
1.我們需要先在伺服器上clone一次,以後都可以實現自動部署了:
sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1
1
sudo -Hu www git clone https://git.coding.net/yourname/yourgit.git /home/wwwroot/website.com/ --depth=1
這個時候應該會要求你輸入一次Coding的帳號和密碼,因為上面我們設置了永久保存用戶名和密碼,所以之後再執行git就不會要求輸入用戶名和密碼了。
**!!注意,這里初始化clone必須要用www用戶**
2.往Coding.net提交一次代碼測試:
在本地clone的倉庫執行:
git commit -am "test hook" --allow-empty
git push
1
2
git commit -am "test hook" --allow-empty
git push
OK,稍過幾秒,正常的話你在配置的項目目錄里就會有你的項目文件了。
初始化Laravel框架
1. 下載Composer
在項目目錄下執行:
sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install
1
2
sudo -Hu www curl -sS https://getcomposer.org/installer | php
sudo -Hu www php composer.phar install
**!!記得在本地提交的時候在.gitignore中加上composer.phar**
㈡ 「openstack」自動化部署有哪些工具
Fuel比較值得推薦
這是Mirantis出品的部署安裝工具,2013年10月份,推出他的3.2版本,讓人很震撼,基本算是把Openstack所有的部署都web化,你可以太多的選擇:尤其是網路,存儲。這基本都是大家學習的榜樣。已經敢和企業簽訂SLA。
目前國內杜玉傑,九州雲,在做該項目的漢化工作和考慮日後的技術支持。
Devstack
這應該算是Openstack最早的安裝腳本,他是通過直接git源碼,進行安裝,目的是讓開發者可以快速搭建一個環境。目前這套腳本可以在Ubuntu和Fedora下跑的很好。
如果你想了解新版本的功能,通過Devstack是一個最佳選擇。我第一次成功安裝Openstack,就是用這個。
Diablo安裝腳本
這算是我知道的第一個基於ubuntu 源的安裝腳本,當時Diablo發布的時候,有bug,keystone和Horizon無法一起工作,ubuntu 11.10源里的包也是有相同的bug,並且Ubuntu 官方並不打算維護和升級。這位作者個人身份,維護了Diablo 版本後來的升級,打包,並且寫了一套腳本。
這套腳本,其實寫的非常好,我同事改造了一下,就可以安裝Essex版本。目前正在改進,用來安裝Folsom版本。
Stackops
Openstack起步的時候,官方的安裝文檔,其實基本都是來自Stackops,當時他們提供Openstack的部署服務。你下載一個iso,裝完一個ubuntu系統後,就會轉到他們的web,你填寫相關的配置參數,通過chef進行部署。
Stackops在Chef上是比較強悍的,包括Dell的Crowbar,也是和他合作,才搞定Chef。不過我的理解,他的Chef 腳本是沒有開源的。
Stackops通過商業定製,進行收費。目前感覺有點走下坡路,業內的聲音比較小了。對openstack的新版本支持比較慢,Essex支持,到9月份才支持。目前還沒有任何關於Folsom 的支持。
Crowbar
在Openstack上,Dell是有點郁悶,中國的那句老話,起個大早,趕個晚集。Openstack剛發布的時候,Dell就號稱要做一個工具部署,不過畢竟是硬體公司,對軟體還是比較外行。
Dell的Crowbar,是一個iso,裝完後,你可以在web界面進行Openstack的部署,底下其實也是使用Chef。集成了Nagios監控,安裝OS是dell自己開發的,有點創新。
以前Dell的Crowbar一個大的特色就是可以遠程設置機器的Raid和Bios,這是從Dell,我才知道可以這樣做。不過也正因為這個特色,導致廠商綁定,還有Dell自己如何定位Crowbar,當初還想搞一個商業的版本,結果後來放棄。
Crowbar目前的開發,其實應該是遇到問題,任何做部署工具的,應該都是一個很好的失敗的案例。後續的發展,維護,更新都是問題。
Maas+Juju
這是Canonical推出的部署工具,可以用在Openstack的部署,類似Puppet,Chef 的部署工具。Maas是用於安裝ubuntu,juju是用於部署應用。
㈢ maven怎樣自動構建非maven的web項目
公司之前做了一個中等的web項目,之前沒有自動化構建和部署,現在要實現一套自動化(自動化測試,自動化構建,自動化部署)任務,目前比較急的就是自動化構建和部署 然後就在網上查找相關資料,發現svn+maven+hudson+cargo可實現自動化構建和發布,而且在青蕃茄上還借了一本《maven實戰》的書參考,但發現構建傳統的web項目必須是maven本身的web結構,而且我本身項目已經把所有的jar包都下載好了,就不需要maven再配置倉庫依賴包了 我的項目(hudson從svn構建下來一樣的結構)結構如下:引用項目名+src+com.xxx.xxx +com.xxx.xxx+config+properties+xxx.xml+WebRoot+WEB-INF+web.xml+jscss+index.jsp怎樣利用maven構建這樣的web項目並打成war包?如果maven不能做到,ant是否可選?問題補充:估計不行,因為這個項目是團隊開發,如果現在改成maven項目,其它團隊成員對maven也不會用,之後問題會更艱巨,我只想把web項目打包成war就ok了,至於用什麼技術我無所謂的 實在不行你可以建一個新的maven項目,然後把那些目錄復制過去也可以
㈣ 怎樣來實現對web集群的自動化部署
docker目前很火
㈤ git 自動化部署到web伺服器的文件只有rw許可權 ,不能執行,如何解決
chmod,然後git status會看到模式改變,添加提交,以後下來就是有執行許可權的了
㈥ java maven項目跟web項目區別
區別如下:
一,Web項目是網頁的編碼,像jsp,servlet,struts這類的。但是java maven項目的話,是AWT,SWING這類的編碼。
二,Web項目中是tomcat來觸發的,但是java maven項目里是Main來開始的。
三,Web項目需要伺服器,java maven項目則不需要。
Maven 除了以程序構建能力為特色之外,還提供高級項目管理工具。由於 Maven 的預設構建規則有較高的可重用性,所以常常用兩三行 Maven 構建腳本就可以構建簡單的項目。
由於 Maven 的面向項目的方法,許多 Apache Jakarta 項目發文時使用 Maven,而且公司項目採用 Maven 的比例在持續增長。
(6)web項目自動化部署擴展閱讀:
Maven常用命令:
mvn archetype:generate 創建Maven項目
mvn compile 編譯源代碼
mvn deploy 發布項目
mvn test-compile 編譯測試源代碼
mvn test 運行應用程序中的單元測試
mvn site 生成項目相關信息的網站
mvn clean 清除項目目錄中的生成結果
mvn package 根據項目生成的jar
mvn install 在本地Repository中安裝jar
mvn eclipse:eclipse 生成eclipse項目文件
mvnjetty:run 啟動jetty服務
mvntomcat:run 啟動tomcat服務
參考資料:網路:Maven
㈦ 如何利用git webhooks 實現網站代碼自動化部署
公鑰有兩個:1. git用戶公鑰,2. 部署公鑰:
git用戶公鑰
1
2
3
ssh-keygen -t rsa -C "[email protected]"
# 然後一直回車就行
# 生成的文件通常是 /root/.ssh/id_rsa,如果非root用戶請查看提示上的路徑
部署公鑰
sudo -Hu www ssh-keygen -t rsa # 請選擇 「no passphrase」,一直回車下去
2. 准備鉤子文件
創建和修改目錄許可權:
1
2
mkdir /home/wwwroot/website.com/hook
chown -R www:www /home/wwwroot/website.com/hook
寫入鉤子文件:
1
sudo -Hu www touch /home/wwwroot/website.com/hook/index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
error_reporting(1);
$target = '/home/wwwroot/website.com'; // 生產環境web目錄
$token = '您在coding填寫的hook令牌';
$wwwUser = 'www';
$wwwGroup = 'www';
$json = json_decode(file_get_contents('php://input'), true);
if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}
$repo = $json['repository']['name'];
$cmd = "sudo -Hu www cd $target && git pull";
shell_exec($cmd);
確保你的hook文件可以訪問:http://example.com/hook/index.php,鉤子准備完成。
3.修改git配置和保存git用戶名密碼
sudo -Hu www git config --global credential.helper store # 永久保存
sudo -Hu www git config --global user.name "Bantes"
sudo -Hu www git config --global user.email "[email protected]" # 郵箱請與conding
在Coding網站
1.添加用戶公鑰
復制/root/.ssh/id_rsa.pub內容到個人設置頁的SSH公鑰里添加即可
㈧ Python的web項目如何進行動態重載和熱部署
真正意義上的代碼熱部署應該是類似erlang那樣的,將代碼更新到節點後不停服務,不斷連接的自動應用新代碼。auto reload什麼的還是會造成業務瞬間中斷。我感覺是可以從wsgi容器級別上實現,比如更新代碼後檢測到文件變更,然後通知容器創建新的wsgi application的實例,之後所有新的請求都發送到新的wdgi application實例上。等舊wsgi application實例的最後一個請求返回後就將其回收掉。不過貌似沒有看到類似的實現
㈨ 發布 和安裝部署的區別
以Java Web項目的構建過程來解釋這個區別,Web軟體項目一般都有相似的開發過程:編碼,編譯,打包,發布、部署和測試,這個過程可由相應的構建工具自動化(Ant,Maven)。
發布指的是對於軟體廠商而言,將軟體產品上傳到遠程伺服器供用戶安裝部署,軟體產品可以是jar,war,exe,tar.gz等,對於不同的軟體產品安裝部署的方式也不一樣,比如發布war包,就不需要用戶去安裝了,只需要用戶部署到Web容器裡面就可以使用了,像一些C項目,發布tar.gz包,用戶在自己的機器上還得編譯安裝
㈩ 怎樣搭建web項目測試環境
測試環境的搭建是一名合格QA必須具備的技能。下面,結合CI和CD兩種不同軟體生產實踐,總結一下如何從零開始部署一套web集成測試環境。
1.伺服器准備。根據項目和使用的中間件的規模,准備好一個或多個資源配置能夠滿足要求的伺服器,一般選用linux下 centos的某個發行版作為伺服器。
2.安裝資料庫、完成資料庫表的建立。這里以開源的mysql為例。
Yum方式安裝msyql,並啟動mysql服務。(Yum的安裝可以參考http://blog.csdn.net/iamhuanggua/article/details/60140867)
yuminstall -y mysql-server mysql mysql-devel
創建資料庫和建表。規范的的系統,一般都保留有現成的SQL腳本,執行腳本就可以完成資料庫和表的建立。
3.安裝和配置JDK、tomcat、nginx…
安裝JDK。Yum 方式安裝最新版JDK:yum install JDK。
安裝tomcat。官網下載tomcat,解壓。
wget http://apache.fayea.com/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75-linux-x64.zip
安裝和配置 nginx。官網下載nginx,解壓後,修改conf/nginx.conf配置請求轉發規則。
4.安裝持續集成工具jenkins.
Jenkins就是一個web服務,只需要從官方下載jenkins的war包,部署到web容器tomcat的webapp目錄下,啟動tomcat服務,就可以在瀏覽器端輸入IP和埠號(例如:部署在本機上可以通過 localhost:8080/jenkins 進行訪問)使用了。
5.配置一個Jenkins job用於編譯、打包產品、部署到測試環境
5.1 配置job完成編譯和打包。編譯打包的Jenkinsjob的配置比較簡單,可以自行網路。
5.2 在部署web服務的機器上,找一個目錄,寫一個shell腳本,拷貝jenkins job打出來的包到web伺服器的部署目錄下,並重啟服務。如果部署jenkins 和部署web服務的機器不是同一台,需要通過用戶名密碼或者建立linux機器之間的信任關系後,通過scp遠程拷貝。
5.3 在5.1的job中,增加「構建後操作」,構建後執行(或遠程執行)5.2中編寫的sh腳本。
6.配置一個或多個Jenkins job 用來完成一系列測試(包括但不限於UI自動化、介面自動化、安全測試等)
測試job的構建方式選擇步驟五中配置的job完成後觸發。到此為此,持續集成的工作就完成了。
7.從CI到CD——配置一個Jenkins ob 完成生產環境部署
如果所在組織的持續集成能力較高,在實施持續部署(Continous Deployment),就還需要配置一個jenkins job在所有測試job都通過後觸發部署生產包到生產環境。部分用戶群較大的產品還需要配置灰度發布。