Linux下:Apache+PHP+Mysql+Cruisec…

来源:互联网 发布:mac版itunes没有铃声 编辑:程序博客网 时间:2024/04/29 10:14

目錄

1 文檔背景... 1

1.1 對Luna的簡單介紹........ 1

1.2 項目開始前的軟件準備........ 1

2 軟件安裝及相關操作... 1

2.1 Apache... 1

2.1.1 安裝apache... 1

2.1.2 關於apache的配置........ 2

2.1.3 Apache的相關操作........ 3

2.2 subversion... 3

2.2.1 安裝subversion... 3

2.3 CruiseControl. 3

2.3.1 安裝Cruisecontrol. 3

2.4 Ant. 4

2.4.1 安裝Ant. 4

2.4.2 Ant的配置........ 4

2.5 Android-SDK..... 4

2.5.1 安裝 Android-SDK..... 4

2.5.2 Android-SDK配置........ 5

2.6 svnant. 5

2.6.1 安裝svnant. 5

2.7 Mysql. 5

2.7.1 Mysql的安裝........ 5

2.7.2 修改登陸密碼........ 6

2.7.3 Mysql的啟動與停止........ 6

2.7.4 Mysql的基本操作........ 6

2.8 PHP.... 7

2.8.1 PHP簡單介紹........ 7

2.8.2 安裝PHP.... 7

3 創建項目... 8

4 項目階段... 9


1 文檔背景

現在以操作系統為Linux,名為Luna的android項目為例進行練習,將在CI在整個項目中所做的事情以學習筆記的形式做以下總結。

1.1對Luna的簡單介紹

Luna項目由四個team來完成。整個項目分為四個部分:PrintCast , PhotoCreate, Snapfish,Facebook四個部分,現將CI在各個部分所作工作進行總結。

1.2項目開始前的軟件準備

軟件名稱

版本信息

源代碼下載地址

Apache

Httpd-2.2.14

http://httpd.apache.org 

Subversion

subversion-1.6.6.tar.gz

http://subversion.tigris.org

Cruisecontrol

cruisecontrol-bin-2.8.2.zip

http://cruisecontrol.sourceforge.net

Android-SDK

android-sdk-1.5_r3-linux-x86.zip

http://developer.android.com/sdk/1.5_r3/index.html

Ant

apache‐ant‐1.7.1‐bin.tar.bz2

http://ant.apache.org

Svnant

sqlite-amalgamation-3.6.13.tar.gz

http://subclipse.tigris.org/svnant.html

neon

neon-0.28.4.tar.tar

可根據安裝提示獲取

sqlite

sqlite-amalgamation-3.6.13.tar.gz

可根據安裝提示獲取

說明:Apache是用來作為服務器的,Subverion,Cruisecontrol,Ant,svnant是版本控件工具,而java_jdk,eclipse,Android-SDK是工程項目所需。

2 軟件安裝及相關操作

2.1Apache

2.1.1安裝apache

解壓httpd-2.2.14.tar.gz,用tar –zxvf httpd-2.2.14.tar.gz

配置用以下命令:

./configure –prefix=/usr/local/apache –enable-so –enable-proxy–enable-ssl –enable-vhost-alias –enable-mods-shared=most–enable-dav –enable-maintainer-mode-with-mpm=worker

說明:-prefix=/usr/local/apache 指定把apache安裝到/usr/local/目錄下,並命名為apache,這是apache的路徑的名字,所以並不是絕對的,你可以根據自己的喜好而定,一般安裝在自己比較熟悉而又容易找到的地方比較好。

在ubuntu9.3中,該配置不適用。主要是因為譔配置中有-enable-ssl,而ubuntu中並沒有默認安裝ssl。你需要認真閱讀錯誤提示,按提示進行相關操作。

-enable-dav 與 –enable-maintainer-mode 是為了能在apache 下集成subversion才加入的編譯參數

這段配置夠長,不知道首先配置apache的人,是如何知道的,我反覆寫了兩三次,有了大致的印象,但要說能真正記得,那還差得遠咧。

編譯 make

安裝 make install

說明:./configure是用來檢查所要安裝的平台的特征,這一步會生成Makefile文件。可以加:-with,-without,-enable,-disable等參數對編譯進行控制,相關內容可參考./configure–help.

Make是用來編譯的,它從Makefile中讀取指令,然後編譯。大多數源代碼都是在這一步進行編譯的,如果出錯,就不要再進行下一步的安裝了。

Make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定位置。這一步只需要有擁有root權限即可。

Makefile文件存在於apache的安裝目錄中,可自行查看其內容。

清理源代碼目錄 make clean (這一步主要是為了節約資源,我認為可有可無)

說明:

如果在安裝過程中提示沒有neon與sqlite,可以根據提示的信息從相應位置下載安裝包,然後通過tar –zxvfxxxx  命令把它們解壓到apache目錄下面,然後重新把目錄改名為neon 與 sqlite。我認為subversion也需要這兩個文件夾。

不過,我認為這種情況只是對其中聽某一版本而言,並不是所有的版本都是如此。事實上在fedora9.3版本中,不需要neon和sqlite.因為該系統會默認安裝一個mysql5.0.1.而在安裝subversion的時候,也會很順利。

在apache安裝目錄下bin/apachectl start 可啟動apache

2.1.2關於apache的配置

編輯apache的配置文件/conf/httpd.conf

在AddType application/x-tar.tgz下面加

AddType application/x-httpd-php.php

在本文件中,找到DirectoryIndex index.html index.html.var

在其後加index.php,讓它把index.php作為默認頁

找到User,Group 模塊,修改用戶名和組名。

找到ServerName把後面的IP改成你自己的IP

找到DocumentRoot “/usr/local/apache2/htdocs”,你便知道你存放網頁文件的路徑。

找到AddDefaultCharset iso8859-1,把iso8859-1改為gb2312或者直接刪除掉。

2.1.3Apache的相關操作

²  用命令ps -ef |grep apache可查看Apache的狀態

²  用apache的bin目錄下的 apachectl start啟動apache

²  用apachectl restart 重啟apache

²  用apachectl stop停止apache

2.2 subversion

2.2.1安裝subversion

解壓 subversion1.6.6.tar.gz,用 tar -zxvf  subversion1.6.6.tar.gz 來解壓

配置

./configure -prefix=/home/build/svn1.6 -enable-maintainer-mode-with-apr=/usr/local/ apache/bin/apr-1-config-with-apr-util=/usr/local/ apache2/bin/apu-1-config

說明:/usr/local/apache就是apache的安裝目錄

編譯  make

安裝 make install

清理源代碼目錄 make clean

注意:同安裝Apache一樣,你需要認真閱讀各個步驟的信息,認真看看自己是否安裝成功。不要以為有了這個文檔,你是按文檔一步一步來的,就不去看一些信息,以後OK,卻不知道為什麼下一步執行不了。因為電腦配置,系統版本,軟件的安裝等各種原因會導致你不能死照這個步驟來安裝,遇到問題,請相信自己,認真閱讀提示信息,並按提示信息來找出錯誤的原因。

2.3CruiseControl

2.3.1安裝Cruisecontrol

就我個人觀點來說,Cruisecontrol工具算是一個免安裝的程序。重心在於解壓,並沒有所謂的真正意義上的安裝。

首先創建Cruisecontrol所要安裝的地方,如:/home/build

cd  /home  midir build  cd build

當然你也可以安裝在其它你覺得方便,可行的地方

解壓cruisecontrol-bin-2.8.2.zip 用unzip cruisecontrol-bin-2.8.2.zip

cd cruisecontrol-bin-2.8.2/projects

mkdir Luna(Luan為android項目名稱)

Cruisecontrol下面默認有projects這個文件夾,我認為它是用來管理各種projects的,這便是我認為Cruisecontrol是工具的主要原因之一。

Cruisecontrol對projects的管理主要是通過config.xml來進行配置的。而config.xmlE:\build.xml主要是對project進行配置的,當然你也可以在這個xml文件中加入多個projects。

2.4Ant

2.4.1安裝Ant

Ant是在build過程中的主要工具之一。對於我做的這個練習來說,我個人認為如果沒有Ant,所有的工作都無法繼續。

cd Luna

在此解壓apache‐ant‐1.7.1‐bin.tar.bz2  用tar–zxvf  ../apache‐ant‐1.7.1‐bin.tar.bz2

2.4.2Ant的配置

vim  ~/.bash_profile

說明:.bash_profilec對Linux來說,是一個具有特殊意義的文件。它一般位於主目錄下面。如果說在主目錄下面找不到的話,你就要到/etc/profile去看看有沒有相關的內容。當然這些東西也不一定是絕對的,需要論情況而定,所以請你保持清醒,不要犯一些些小而簡單的錯誤。

如果你看到.bash_profile文件,你就會發現它是對一些環境的配置。如果你要對它進行修改。建議先做備份工作,一般不要刪除它裡面原有的內容,直接在它的文件尾部加上你所要添加的內容即可。

Add the following lines to the file,substituting the directorywhere you installed Ant:

ANT_HOME=~/Luna/apache-ant-1.7.1

JAVA_HOME=/opt/jdk1.5.0_21/

PATH=$PATH:$HOME/bin:~/Foxconn/apache-ant-1.7.1/bin:/opt/jdk1.5.0_21/bin

Export PATH ANT_HOME JAVA_HOME

在以上內容添加之後,修改後的文件並不會立即生效。你需要re_read一下,你可以退出並重新登陸使修改後的文件生效,或者使用以下命令使之生效。

Source ~/.bash_profile

對於apache-ant來說,我們平時主要操作的是其腳本build.xml文件

2.5Android-SDK

2.5.1安裝Android-SDK

因為Luna project是一個Android的工程,所以需要安裝相應的SDK才行。

而我個人認為Android-SDK也是一個只需要解壓便安裝成功的軟件。

以下操作是在 Luna的目錄下進行的:

解壓android-sdk-1.5_r3-linux-x86.zip 用unzipandroid-sdk-1.5_r3-linux-x86.zip 命令

Move android-sdk-1.5_r3-linux-x86 android-sdk這一步沒有什麼特別的作用,主要是想讓SDK的文件名簡單一些,在進行一些相關的配置的時候,不會因為文件名太復雜而出錯。

2.5.2Android-SDK配置

Modify anroid-sdk\platforms\android-1.5\tools\dx

Add the following lines to the file dx

 javaOpts =”-Xmx1024M”

dx文件是對項目的一些配置文件,一般情況下,一般情況下,我們都不會修改它。但隨著項目的需要,我們需要對javaOpts項的值進行相應的修改,如果你有看到這個文件的內容,看到javaOpts這項內容,也許你已經知道它的作用了。沒錯,我從表面上看覺得它就是用來對內存進行設置項。

2.6svnant

2.6.1安裝svnant

安裝svnant是整個項目中最簡單的工作。只需要解壓,不需要任何配置與修改。

cd /home/build/cruisecontrol-bin-2.8.2

unzip svnant-1.3.0zip

說明:Ant與svnant的區別:

Ant是跟apache配套使用的,主要用於build過程中的一些命令

而 svnant主要與subversion共同使用,記錄項目過程中的一些變更等信息。

2.7Mysql

2.7.1Mysql的安裝

在一些Linux系統中,會默認安裝Mysql軟件。所以你在安裝Mysql的過程中,可能會遇到沖突問題。為了防止這種問題的發生,建議在安裝Mysql前,首先查看本機上是否裝有Mysql的版本。如果有,刪除後再安裝。

安裝Mysql需要安裝三個軟件,分別是:MySQL-server-community-5.1.33-0.rhel5.i386.rpm,這是Mysqlr的服務器文件的安裝。MySQL-client-community-5.1.33-0.rhel5.i386.rpm,這是Mysql客戶端文件的安裝。MySQL-devel-community-5.1.34-0.rhel5.i386.rpm,這是Mysql頭文件的安裝。

至於這三個文件有什麼區別?我還不太清楚。

安裝部分:rpm –ivhMySQL-server-community-5.1.33-0.rhel5.i386.rpm 

此時服務器端已經安裝完畢,測試是否成功用netstat-nat看Mysql商品是否打開,如果打開,表示服務已經啟動,安裝成功。Mysql的默認端口是3306.

其它兩個也按同樣的命令來安裝即可

2.7.2修改登陸密碼

Mysql默認沒有密碼,安裝完畢需加密碼。

命令格式:mysqladmin –u 用戶名 –p 舊密碼 password 新密碼

如:mysqladmin –u root password123456(因為開始時root沒有密碼,所以在此沒有舊密碼,舊密碼就省略了,如果有舊密碼,剛需要加上舊密碼)

測試是否修改成功

用命令mysql

如果顯示錯誤,說明密碼已經修改。

當然你也可以用新密碼去試,看是否修改成功。

2.7.3Mysql的啟動與停止

啟動 Mysql

安裝完成後啟動文件mysql位於/etc/init.d目錄下,如需要啟動mysql,只需要運行下面命令即可/etc/init.d/mysql start

注意;執行該命令的過程中,可能會出現錯誤信息: ERROR 2002 (HY000): Can't connect tolocal MySQL server through socket '/var/lib/mysql/mysql.sock'(2)。你去查看/var/lib/mysql下面的內容,卻發現並沒有mysql.sock的文件。這主要原因是,/var/lib/mysql的訪問權限問題。解決方法如下:

執行:chown –R mysql:mysql /var/lib/mysql即可

然後再啟動mysql.服務器正常啟動後察看/var/lib/mysql自動有生成mysql.sock文件。

停止 Mysql

用命令 /usr/bin/mysqladmin –u root –p shutdown

這些並不是絕對的,需要考慮到各種情況,你需要根據具體情況來作具體的分析。

2.7.4Mysql的基本操作

1)    選定所要使用的數據庫,如mysql表,用命令:use mysql

2)    對數據庫的表進行相關操作,如user表

Insert into user(host,user,password)values(‘%’,’remote’,password(‘remoteadmin’));

Grant all privileges on *.* to remoteadmin@’ %’ identified by‘remoteadmin’;

3)    FLUSH PRIVILEGES;這一步如果不做的話,第二步對數據庫中表的操作不會生效。

如果在mysql中不能創建數據庫,給出沒有權限進行操作的提示,解決方案如下:

      #/etc/init.d/mysql stop

      #mysql_safe –user=mysql –skip-grant-tables –skip-networking&

      #mysql –u root mysql

      Mysql> UPDATE user SETPassword=PASSWORD(‘newpassword’) where USER=’root’;

      Mysql>FLUSH PRIVILEGES;

      Mysql>quit

2.8PHP

2.8.1PHP簡單介紹

PHP主要是用於服務端的腳本程序,因此可以用PHP來完成任何其它的CGI程序能夠完成的工作,如:收集表單數據,生成動態網頁,或者發送/接收cookies.但php的功能遠不局限於此。

PHP腳本主要用於以下三個領域:

服務端腳本。這是PHP最主要的目標領域。開展這項工作需要具備三點:PHP解析器(CGI或者服務器模塊),WEB服務器和WEB瀏覽器。在運行WEB服務器時,安裝並配置PHP,可用WEB瀏覽器來訪問PHP程序的輸出,即瀏覽服務端的PHP頁面。

命令行腳本。只需要用PHP解析器來執行一段PHP腳本。如果你安裝過wiki或者discuz,你就能發現裡面有大量文件是php文件。

編寫客戶端的GUI應用程序。可以在客戶端的應用程序中使用PHP的一些高級特性,用PHP-GTK來編寫跨平台的應用程序。

2.8.2安裝PHP

首先要停止apache

在apache的安裝目錄下,進入bin文件中,可以看到apachectl 的文件。

執行命令:apachectl stop

2)配置 ./configure --with-mysql--with-apxs2={apache的安裝目錄}/bin/apxs

注意:apache的安裝目錄與源代碼目錄的區別

3)make(編譯)

4)make install(安裝)

5)make clean(清理源代碼目錄)

6)Setup php.ini

把php.ini-dist拷備到/usr/local/lib下, 並命名為php.ini

7)設置apache解析 *.php文件

注意:如果你在編譯php時,遇到錯誤:gcc:/usr/lib/mysql/libmysqlclient.so:No suchfile or directory

使用ln –s/usr/lib/libmysqlclient.so/user/lib/mysql/libmysqlclient.so,然後重新編譯php.

在apache的安裝目錄下,找到DirectoryIndex index.htmlindex.html.var後面加入以下文字:index.php,即把php文件作為默認啟動文件。

編輯conf/httpd.conf文件

找到#AddType application/x-gzip .tgz的模塊

在此模塊後加入一行:AddType application/x-httpd-php.php

到此,配置完成,apache就可以解釋php文件了

8)啟動apache

在apache的安裝目錄的bin目錄下,執行 apachectl start即可

3 創建項目

Cd  /home/build/home

編寫build code 的shell 腳本

修改apache/bin 下面的httpd 文件

修改示例1 Anonymout access

<Location /svn>

DAV svn

SVNPath {/path/to/repos}

AuthsSVNAccessFile{/path/to/access/file}

</Location>

修改示例2:Mixed anonymous and authenticated access

<Location /svn>

DAV svn

SVNPath {path/to/repos}

AuthType Basic

AuthUserFile {“Authentication Realm”}

AuthzSVNAccessFile {/path/to/access/file}

Satisfy Any

Require valid-user

</Location>

sqlite-amalgamation-3.6.13.tar.gz是用作數據庫連接的,無需安裝,只要把它解壓到Apache的目錄下即可。

cruisecontrol-bin-2.8.2.zip 是整個項目能夠build的基礎

neon-0.28.4.tar.tar目前我還不知道它主要是用來做什麼的。

我認為sqlite,neon都相當於插件的形式,它們兩個都不需要安裝。但是在安裝Apache的時候,會因為沒有這個兩文件夾的內容,而出現錯誤的情況。

對於以後軟件包,以.tar.gz結尾的,可以用tar –zvxf文件名來解壓,而對於cruisecontrol-bin-2.8.2.zip 剛要用unzip來解壓。

在/cruisecontrol-bin-2.8.2目錄下面,config.xml是用來對項目進行配置的。

4 項目階段

在cruisecontrol-bin-2.8.2/projects/目錄下,

新建Lunar項目的src文件夾,並Check out服務器上的項目,用svn cosvn://10.141.26.50/Luna/branches/Application, svn cosvn://10.141.26.50/Luna/branches/Service.來check out 整個項目。

這時,你會在當前路徑下,看到Luna的文件。

在Luna文件下,首先導入anroid-sdk,pache-ant-1.7.1,新建build.xml文件,buildTools,buildRelTools文件夾,其中buildTools與buildRelTools是用來存放Ant的build的工具的。

build.xml

我個人認為,它是ant命令的引導文件,如果沒有build.xml文件,ant命令就不會執行。至於為什麼,我還不太清楚。我覺得可能根ant與java的關係有關吧。所以只要你要執行有關Ant的命令,就必須有build.xml的存在,如果沒有就不能執行。E:\build.xml

buildTools和buildRelTool雖功能不一樣,但裡面的工具有一一對應的相似關係。唯一不同的是buildRelTool裡面多了一個Luna.Keystore的文件。

buildTools工具,我認為主要是在debug的時候用的,也就是說在執行ant debug時會調用這些工作去工作。

buildTools

      batch_build.shE:\batch_build.sh

      build_envE:\build_env

      copy_debug_result.shE:\copy_debug_result.sh

      MakefileE:\Makefile

      Sh_envE:\sh_env

buildRelTools

同builTools有極大的相似之處,唯它主要是在release的時候用的,即執行antrelease時會調用buildRelTools的工具,到最後你能看到最一些release的結果,這都歸功於buildRelTools.

batch_build_rel.sh 主要功能:1.Import environment variables即sh_rel_env 文件2.Import build time

sh_rel_env 主要功能:Define the environmentvariables(BUILD_ROOT,TOOLS_ROOT,ANT,TARGET,JAVA_HOME)

copy_rel_result.sh 主要功能:1.Import environment variables 2.add theapk files to TARGET one by one 3.copy the private privatekey  4.Sign the APK files one by one

Makefile 主要功能:1.Application bundle list 2.All modules will bebuilt 3.prepare 4. install 5.clean

rel_build_env.sh 主要功能:1.The Global parameters definitions forMakefile (Root path) 2. define the ANT path 3. build nformation

當然還可能有一些其它的作用,由於能力的原因,我還沒有發現或者目前我還不知道的。

Luna.keystore主要功能:用於加密文件,生成apk文件的時候,需要用它進行使用。因為它僅存在於buildRelTools中,所以也只在buildRelTools的copy_rel_result.sh中用以下語句來進行調用:

$JAVA_HOME/bin/jarsigner -verbose -keystore Luna.keystore-storepass 123456 -signedjar PhotoCreate.apkPhotoCreate-unsigned.apk Luna

說明:這句話便是對apk進行jarsigner,這中間存在一個簽名的過程。正是這句話,讓PhotoCreate-unsigned.apk文件變成了PhotoCreate.apk

關於keystore文件的生成

在JAVA_HOME的bin目錄下,可用以下命令生成keystore文件:

keytool –genkey –alias Luna –keyalg RSA –validity 2000 –keystoreLuna.keystore

說明:keytool是生成keystore文件的工具,具體用法可用keytool –help查看。

Luna是.keystore文件的別名。2000是.keystore文件有效的天數。Luna.keystore是.keystore文件的真正的文件名。輸入命令後,按提示一步步輸入相關信息即可。

0 0
原创粉丝点击