詳解Jenkins +Maven+Tomcat+SVN +Apache項目持續集成php
一:前言html
1. Jenkinsjava
jenkins版本大全http://mirrors.jenkins-ci.org/linux
1.1 Jenkins持續集成簡介web
持續集成(Continuous Integration)是一種軟件開發實踐,對於提升軟件開發效率並保障軟件開發質量提供了理論基礎。Jenkins 是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使持續集成變成可能。本文正是從持續集成的基本概念入手,經過具體實例,介紹瞭如何基於 Jenkins 快速搭建持續集成環境。數據庫
Jenkins是一個可擴展的持續集成引擎,是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。Jenkins很是易於安裝和配置,簡單易用。apache
1.2持續集成意義ubuntu
1) 持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,有利於減小重複過程以節省時間、費用和工做量;瀏覽器
2) 持續集成保障了每一個時間點上團隊成員提交的代碼是能成功集成的。換言之,任什麼時候間點都能第一時間發現軟件的集成問題,使任意時間發佈可部署的軟件成爲了可能;tomcat
3) 持續集成還能利於軟件自己的發展趨勢,這點在需求不明確或是頻繁性變動的情景中尤爲重要,持續集成的質量能幫助團隊進行有效決策,同時創建團隊對開發產品的信心。
1.3持續集成組件
1) 一個自動構建過程,包括自動編譯、分發、部署和測試;
2) 一個代碼存儲庫,即須要版本控制軟件來保障代碼的可維護性,同時做爲構建過程的素材庫,例如SVN、GIT代碼庫;
3) 一個jenkins持續集成服務器。以下123.57.11.203服務器就是一個配置簡單和使用方便的持續集成服務器。
2.Maven
1)Maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命週期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命週期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明肯定義的項目對象模型來描述你的項目,而後Maven能夠應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件.
2)Maven 有一個生命週期,當你運行 mvn install 的時候被調用。這條命令告訴 Maven 執行一系列的有序的步驟,直到到達你指定的生命週期。遍歷生命週期旅途中的一個影響就是,Maven 運行了許多默認的插件目標,這些目標完成了像編譯和建立一個 JAR 文件這樣的工做。可以很方便的幫你管理項目報告,生成站點,管理JAR文件等。
3.Tomcat
1)Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP 程序的首選。對於一個初學者來講,能夠這樣認爲,當在一臺機器上配置好Apache 服務器,可利用它響應HTML(標準通用標記語言下的一個應用)頁面的訪問請求。實際上Tomcat是Apache 服務器的擴展,但運行時它是獨立運行的,因此當你運行tomcat 時,它實際上做爲一個與Apache 獨立的進程單獨運行的。
2)配置正確時,Apache 爲HTML頁面服務,而Tomcat 實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS等Web服務器同樣,具備處理HTML頁面的功能,另外它仍是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。
4.SVN
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。互聯網上不少版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多我的共同開發同一個項目,共用資源的目的。
要注意的是SVN設計的時候只考慮了兼容Apache2.x,因此在Apache1.x下是不能正常工做的。
5.Apache
Apache是世界使用排名第一的Web服務器軟件。它能夠運行在幾乎全部普遍使用的計算機平臺上,因爲其跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。
apache與Tomcat的區別
Apache是web服務器,Tomcat是應用(java)服務器,它只是一個servlet容器,是Apache的擴展。Apache和Tomcat均可以作爲獨立的web服務器來運行,可是Apache不能解釋java程序(jsp,serverlet)。Apache是普通服務器,自己只支持html即普通網頁。不過能夠經過插件支持php,還能夠與Tomcat連通(單向Apache鏈接Tomcat,就是說經過Apache能夠訪問Tomcat資源。反之否則)。二者都是一種容器,只不過發佈的東西不一樣:Apache是html容器,功能像IIS同樣;Tomcat是jsp/servlet容器,用於發佈jsp及java的,相似的有IBM的webshere、EBA的Weblogic,sun的JRun等等。Apache和Tomcat是獨立的,在通一臺服務器上能夠集成。Apache只支持靜態網頁,但像asp,php,cgi,jsp等動態網頁就須要Tomcat來處理。
打個比方:Apache是一輛卡車,上面能夠裝一些東西如html等。可是不能裝水,要裝水必需要有容器(桶),Tomcat就是一個桶(裝像Java這樣的水),而這個桶也能夠不放在卡車上。
Apache和Tomcat整合使用:若是客戶端請求的是靜態頁面,則只須要Apache服務器響應請求;若是客戶端請求動態頁面,則是Tomcat服務器響應請求;由於jsp是服務器端解釋代碼的,這樣整合就能夠減小Tomcat的服務開銷 。
二:下載網址及安裝環境
1.下載網址
https://jenkins.io/download/ jenkins.war(WAR包)
https://pkg.jenkins.io/redhat/ Jenkins (RPM包)
https://pkg.jenkins.io/debian-stable/ Jenkins (DEB包)
http://maven.apache.org/download.cgi Maven下載
https://tomcat.apache.org/download-80.cgi Tomcat下載
http://www.oracle.com/technetwork/java/javase/downloads/index.html JDK下載
2.本案例安裝環境
OS:Ubunutu 17.04
IP:192.168.44.132 (Tomcat+JDK+Jenkins+Maven)
IP:192.168.44.133 (SVN+Apache)
jenkins.war 本案例是結合Tomcat使用,使用war包,未使用deb包
apache-maven-3.5.2-bin.tar.gz
apache-tomcat-8.5.24.tar.gz
jdk-8u151-linux-x64.tar.gz
SVN和Apache SVN源碼很是麻煩,建議apt-get安裝,Apache也用apt-get安裝
三:安裝軟件
IP:192.168.44.132
tar zxvf jdk-8u151-linux-x64.tar.gz -C /usr/local/
tar zxvf apache-tomcat-8.5.24.tar.gz -C /usr/local/
tar zxvf apache-maven-3.5.2-bin.tar.gz -C /usr/local/
vi /etc/profile
設置Java變量
export JAVA_HOME=/usr/local/jdk1.8.0_151
export JRE_HOME=/usr/local/jdk1.8.0_151/jre
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/jdk1.8.0_151/bin
export CLASSPATH=./:/usr/local/jdk1.8.0_151/lib:/usr/local/jdk1.8.0_151/jre/lib
設置maven變量
export MAVEN_HOME=/usr/local/apache-maven-3.5.2
export PATH=${MAVEN_HOME}/bin:${PATH}
刷新變量
. /etc/profile
查看Java信息
root@ubuntu:/usr/local# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
查看maven版本
root@ubuntu:/usr/local# mvn -v
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00)
Maven home: /usr/local/apache-maven-3.5.2
Java version: 1.8.0_151, vendor: Oracle Corporation
Java home: /usr/local/jdk1.8.0_151/jre
Default locale: en_HK, platform encoding: UTF-8
OS name: "linux", version: "4.10.0-19-generic", arch: "amd64", family: "unix"
測試Tomcat是否正常
/usr/local/apache-tomcat-8.5.24/bin/startup.sh
瀏覽器窗口輸入: http://192.168.44.132:8080/
關閉Tomcat
/usr/local/apache-tomcat-8.5.24/bin/shutdown.sh
jenkins的配置
mkdir -p /data/postmall/tomcat/webapps
mv /usr/local/jenkins.war /data/postmall/tomcat/webapps/
本例是更改了Tomcat默認端口爲8888,而後把appBase路徑更改成/data/postmall/tomcat/webapps,以下圖,更改後從新啓動Tomcat便可,在/data/postmall/tomcat/webapps下可看到多了一個jenkins的目錄,war包已被解開。
Tomcat中appBase,這個目錄表示:
1 這個目錄下面的子目錄將自動被部署爲應用。
2 這個目錄下面的.war文件將被自動解壓縮並部署爲應用
公司裏的測試環境通常是一個容器下跑多個項目,生產環境是一個容器跑一個項目。
給你們截圖看下咱們公司的測試環境
給你們截圖看下咱們公司的生產環境
在web頁面訪問
http://192.168.44.132:8888/jenkins
彈出的對話框
用戶名:admin
密碼:複製initialAdminPassword中的加密字符串
文件默認在安裝用戶的/root/.jenkins/secrets/initialAdminPassword中,而且是加密的方式存放,本例用的是root用戶。
生產環境建議更改至其餘目錄,請參考個人另外一篇文檔 http://blog.51cto.com/12943999/2054791
至此192.168.44.132軟件安裝完成。
IP:192.168.44.133
一:安裝軟件
apt-get install apache2
apt-get install subversion
apt-get install libapache2-svn
完成以上安裝,能夠直接訪問apache的主頁,如http://localhost/
命令行下curl -I -m 15 -o /dev/null -s -w %{http_code} localhost
關於curl的用法,請參考個人另外一篇文檔 http://blog.51cto.com/12943999/2057858
二:SVN的配置
1.創建svn倉庫
1). 創建svn目錄:mkdir -p /home/.svn/svnrepos/project (使用隱藏目錄,更安全)
2). 建立倉庫project:svnadmin create /home/.svn/svnrepos/project,執行完畢後project目錄有svnadmin建立的目錄和文件
2.配置和管理svn
1)倉庫的配置文件在/home/.svn/svnrepos/project/conf/下,先備份配置文件。注意:下面配置項的行都要頂格,不然會報錯。
cd /home/.svn/svnrepos/project/ && mkdir conf.bak && cp -rf conf/* conf.bak/ && vi conf/svnserve.conf
配置項在[general]下:
anon-access:匿名用戶的權限,能夠設置爲read,write和none,默認值read。不容許匿名用戶訪問:anon-access = none
auth-access:認證用戶的權限,能夠爲read,write和none,默認值write。
password-db:密碼數據庫的路徑,去掉前邊的#。
authz-db:認證規則庫的路徑,去掉前邊的#。
realm = /home/.svn/svnrepos/project 倉庫的目錄,去掉前面的#,默認不修改也行。
2)配置passwd文件
這是每一個用戶的密碼文件,比較簡單,就是「用戶名=密碼」,採用的是明碼。例如:
allen=111111
bllen=222222
ellen=333333
3)配置authz文件
[groups] section:爲了便於管理,能夠將一些用戶放到一個組裏邊,好比:owner=allen,bllen
groups下邊的sections表示對一個目錄的認證規則,好比對根目錄的認證規則的section爲[/]。設置單用戶的認證規則時一個用戶一行,在末尾添加,例如:
[/]
allen=rw #allen對根目錄的權限爲rw
bllen=rw #bllen對根目錄的權限爲rw
ellen=r #bllen對根目錄的權限爲r
若是使用group,須要在group名字前加@,在末尾添加
[/]
@owner=rw #group owner中的用戶均爲rw,等價於上邊的allen=rw,bllen=rw
*=r #除allen和bllen以外的全部用戶爲只讀
3.啓動和中止svn服務
1). 啓動:
從svnrepos目錄啓動,svnserve -d -r /home/.svn/svnrepos/project,根目錄[/]是project
2). 測試訪問:
在瀏覽器輸入svn://192.168.44.133,在彈出的窗口中輸入用戶名和密碼
3). 中止:
killall svnserve
簡言之,每一個倉庫的根目錄(/)就是本身的起始目錄; [/]適合於單倉庫的方式 ,不能跨越倉庫設置權限。
客戶端SVN的使用請看個人另外一篇文章 http://blog.51cto.com/12943999/2053553
若是啓動SVN不能訪問,檢查配置文件裏用戶名密碼是否正確,也能夠嘗試在設置-已保存數據裏把已保存的記錄所有刪除,再嘗試。
4). 修改端口
修改apache2端口
root@ubuntu:/etc/apache2# vi ports.conf
Listen 端口 #你想要的端口
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
若是你想修改SVN默認的端口
從新指定一個端口號(默認端口3690)好比修改成3691
svnserve -d –listen-port 3691 -r /home/.svn/svnrepos/project
配置完畢重啓/etc/init.d/apache2 restart
例如:把333.txt放到test文件夾,嘗試提交則提示驗證失敗,由於咱們給ellen用戶的是讀取權限,不能寫入,用allen和bllen就能夠。
至此192.168.44.133軟件安裝完成。
提供幾個寫的不錯的博客連接,你們能夠看一下,互相學習,共同進步。
jenkins 安裝與配置
http://blog.51cto.com/kaliarch/2050862
jenkins 用戶權限配置
http://blog.csdn.net/ruisheng_412/article/details/8083035
jenkins 分佈式配置
http://blog.sina.com.cn/s/blog_5d157a1d01017mut.html
Maven配置詳解:那麼請進
http://www.cnblogs.com/bigtall/archive/2011/03/23/1993253.html