LoadModule auth_basic_module modules/mod_auth_basic.so #基本認證模塊
LoadModule auth_digest_module modules/mod_auth_digest.so #使用MD5的用戶驗證模塊
LoadModule authn_file_module modules/mod_authn_file.so #使用文本文件的用戶驗證
LoadModule authn_alias_module modules/mod_authn_alias.so #在原有的驗證方法上提供拓展的驗證
LoadModule authn_anon_module modules/mod_authn_anon.so #允許匿名訪問已驗證的區域
LoadModule authn_dbm_module modules/mod_authn_dbm.so #使用數據庫文件驗證
LoadModule authn_default_module modules/mod_authn_default.so #認證的撤銷模塊
LoadModule authz_host_module modules/mod_authz_host.so #基于主機名(或IP)的組授權
LoadModule authz_user_module modules/mod_authz_user.so #用戶授權
LoadModule authz_owner_module modules/mod_authz_owner.so #依照文件擁有者的授權
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so #使用明文文件的組授權
LoadModule authz_dbm_module modules/mod_authz_dbm.so #使用數據庫的組授權
LoadModule authz_default_module modules/mod_authz_default.so #授權的撤銷模塊
LoadModule ldap_module modules/mod_ldap.so #LDAP提供其它LADP的連接接和緩存服務模塊
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so #允許使用一個LDAP的目錄來存放HTTP基本授權文件
LoadModule include_module modules/mod_include.so #服務器端解析HTML語法的模塊
LoadModule log_config_module modules/mod_log_config.so #記錄服務器請求日志
LoadModule logio_module modules/mod_logio.so #記錄每個請求的I/O字節數
LoadModule env_module modules/mod_env.so #設置傳遞給CGI腳本和SSI頁面的環境?
LoadModule ext_filter_module modules/mod_ext_filter.so #在遞交給客戶端以前通過外部程序發送相應本體
LoadModule mime_magic_module modules/mod_mime_magic.so #通過查看一個文件的一些內容判斷MIME類別
LoadModule expires_module modules/mod_expires.so #根據用戶的特別設定來生成失效和隱藏控制的http頭信息
LoadModule deflate_module modules/mod_deflate.so #傳送給客戶端以前壓縮數據
LoadModule headers_module modules/mod_headers.so #定制響應和回復的HTTP頭的內容
LoadModule usertrack_module modules/mod_usertrack.so #在一個站點上跟蹤用戶的登錄信息
LoadModule setenvif_module modules/mod_setenvif.so #允許經過客戶編碼請求來設定環境變量
LoadModule mime_module modules/mod_mime.so #通過文件的一些屬性判讀MIME類型
LoadModule dav_module modules/mod_dav.so #基于WEB的創作和版本?
LoadModule status_module modules/mod_status.so #提供服務器運行信息
LoadModule autoindex_module modules/mod_autoindex.so #自動列出一個目錄的索引表(類似于UNIX上的ls和DOS下的dir)
LoadModule info_module modules/mod_info.so #提供服務配置的一個綜合概況
LoadModule dav_fs_module modules/mod_dav_fs.so #為mod_dav提供文件系統支持
LoadModule vhost_alias_module modules/mod_vhost_alias.so #為虛擬主機提供動態配置
LoadModule negotiation_module modules/mod_negotiation.so #為內容判斷提供支持
LoadModule dir_module modules/mod_dir.so #為“/”結尾的重定向和目錄文件索引
LoadModule actions_module modules/mod_actions.so #提供了基于請求和媒體類型的CGI腳本執行的支持
LoadModule speling_module modules/mod_speling.so #嘗試糾正用戶輸入錯誤的網址
LoadModule userdir_module modules/mod_userdir.so #用戶特定目錄
LoadModule alias_module modules/mod_alias.so #提供主機文件系統不同部分的文件樹映射為URL
LoadModule rewrite_module modules/mod_rewrite.so #提供在運行中基于規則的地址重寫的支持
LoadModule proxy_module modules/mod_proxy.so #基于HTTP1.1協議的網關或代理服務器
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #負載均衡的mod_proxy拓展
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #為mod_proxy提供的ftp支持模塊
LoadModule proxy_http_module modules/mod_proxy_http.so #為mod_proxy提供的http支持模塊
LoadModule proxy_connect_module modules/mod_proxy_connect.so #mod_proxy的連接處理拓展模塊
LoadModule cache_module modules/mod_cache.so #目錄隱藏在URL外?
LoadModule suexec_module modules/mod_suexec.so #允許CGI腳本使用特定的用戶和組運行
LoadModule disk_cache_module modules/mod_disk_cache.so #管理內容隱藏存放來適合URL的工具?
LoadModule file_cache_module modules/mod_file_cache.so #在內存中緩存一個文件列表
LoadModule mem_cache_module modules/mod_mem_cache.so #隱藏內容于URL
LoadModule cgi_module modules/mod_cgi.so #執行CGI腳本
1.安裝apr和apr-util
apr, apr-util: http://apr.apache.org/
tar zxvf apr-1.5.1.tar.gz
cd apr-1.5.1
./configure --prefix=/opt/apr
make && make install
tar zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --prefix=/opt/apr-util --with-apr=/opt/apr/
make && make install
2.安裝apache下載地址:http://www.apache.org/dist//httpd/httpd-2.2.27.tar.gz
cd /opt
tar -zxvf httpd-2.4.10.tar.gz
cd /opt/httpd-2.4.10
./configure --prefix=/opt/apache --with-apr=/opt/apr/ --with-apr-util=/opt/apr-util/ --with-pcre=/opt/pcre --enable-so --enable-dav --enable-dav-fs
make && make install
其中,–enable-dav允許Apache提供DAV協議支持;–enable-so允許運行時加載DSO模塊,前兩個參數是必須要加的,–prefix 是安裝的位置。如果configure通過,接著執行
數分鐘后就完事了,通過 /opt/apache/bin/apachectl start 來啟動,在瀏覽器中訪問IP比如本機訪問127.0.0.1,如果出現 It’s Works!,那么說明安裝成功。
目錄授權
chmod 777 /opt/svn
chown -R daemon:daemon /opt/svn
3.安裝sqlite,http://www.sqlite.org/download.html
這里下載的是sqlite-autoconf-3080701.tar.gz,我下載到了/root/install并解壓
tar zxvf sqlite-autoconf-3080701.tar.gz
cd /root/install/sqlite-autoconf-3080701
./configure --prefix=/opt/sqlite
make && make install
4安裝SVN
http://subversion.apache.org/download/下載最新版本,老版本在http://archive.apache.org/dist/subversion/
tar -zxvf subversion-1.8.10.tar.gz
cd /opt/subversion-1.8.10
./configure --prefix=/opt/subversion --with-apr=/opt/apr --with-apr-util=/opt/apr-util --with-apxs=/opt/apache/bin/apxs --with-openssl --with-zlib --enable-maintainer-mode --with-sqlite=/opt/sqlite
有可能需要安裝zlib1:
configure: error: subversion requires zlib
去http://zlib.net/下載,http://zlib.net/zlib-1.2.8.tar.gz,上傳到/opt
cd /opt
tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make && make install
5.修改Apache配置,httpd.conf最下面追加,直接在根目錄下建密碼
cd /opt/apache/conf下載httpd.conf
這幾個是必須的模塊,出了問題檢查一下有沒有加載
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule dav_module modules/mod_dav.so
#下面2個需要從該目錄拷貝過來,并且引入,如果不引入無法和svn協同。
cp /opt/subversion/libexec/mod_authz_svn.so /opt/apache/modules
cp /opt/subversion/libexec/mod_dav_svn.so /opt/apache/modules
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
這個加到最下面用來和svn協同
<Location /svn>
DAV svn
SVNListParentPath on //很重要
SVNParentPath /opt/svn
AuthType Basic
AuthName "please input username/password"
AuthUserFile /opt/svn/passwd
AuthzSVNAccessFile /opt/svn/authz
Require valid-user
</Location>
6.svn倉庫的創建和權限配置
mkdir -p /opt/svn/
創建apache賬戶,使通過apache訪問url的時候可以瀏覽該目錄
新建一個文件需要-c,以后就不需要加了,passwd文件一定要用命令,明碼是不行的
htpasswd -c /opt/svn/passwd wxq
htpasswd /opt/svn/passwd caowei
另外需要建一個群組權限文件到/opt/svn/authz, @代表群組,這里聲明了一個admin組,admin組有讀寫權限
[groups]
admin=wxq
[/]
@admin=rw
[home:/]
@admin=rw
創建子倉庫
svnadmin create /opt/svn/home
7.啟動/重啟/關閉apache
/opt/apache/bin/apachectl start
/opt/apache/bin/apachectl restart
/opt/apache/bin/apachectl stop
8.檢測SVN 端口
[root@localhost conf]#netstat -ln |grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
停止重啟SVN
killall svnserve
svnserve -d -r /opt/svn
如果已經有svn在運行,可以換一個端口運行
svnserve -d -r /opt/svn/ --listen-port 3391
查看版本
svnserve --version
查看是否安裝了svn
rpm -q subversion
查看是否安裝了httpd,可以使用httpd --version檢測是否已經卸載
rpm -q httpd
maven是個項目管理工具,集各種功能于一身,下面介紹maven web項目在eclipse種的配置,并于tomcat集成。配置成功后,可以跟一般的web項目一樣調試。
一、準備條件
1、安裝下載jdk
這里以jdk1.6為例
2、安裝eclipse
到eclipse官網下載 Eclipse IDE for Java EE Developers版本的eclipse
http://www.eclipse.org/
3、安裝tomcat6
4、安裝maven
5、安裝eclipse maven插件
這里以在線安裝的方式,安裝地址為:http://m2eclipse.sonatype.org/sites/m2e
二、配置
1、在eclipse中配置jdk安裝位置,tomcat安裝位置,maven安裝位置,為tomcat指定jdk
在此不詳述
2、在eclipse中新建一個maven項目
2-1、新建一個maven項目,選擇create a simple project ...

2-2、
點擊Next,進入下一個

在此窗口下填寫group id,artifact id,可以隨便寫一個,在Packaging中選擇war類型
點擊下一步,在以下步驟中一直next,直到最后點擊finish
2-3、
右擊項目,選擇properites,打開以下對話框

在此界面右邊導航欄選中 Project Facets,點擊超鏈接Convert Faceted from,進入以下界面
2-4、

在Configuration中選擇custom
在下方的Project Facet的Dynamic Web Module中選擇2.5版本
在java中選擇1.6
注意:這些選擇可能根據tomcat版本變化而變化,就tomcat6來說選擇以上選項是可以的
此步驟非常重要,只有操作了此步驟,右側導航欄才會有Deployment Assembly 鏈接
2-5
接下來點擊右邊面板的Runtime面板

可以看到下方中有tomcat,如果沒有,則點擊下面的new,新建一個,新建后選中復選框,然后apply,ok
2-6、
在項目屬性面板中的作部導航欄選擇Deployment Assembly選項,在右邊Web Deployment Assembly
如果看到以下的圖示,那么配置就完成了

這里解釋一下以上文件夾
src/main/java
該文件夾是存放java源碼的,發布項目時會將該文件夾下的class文件復制到WEB-INF/classes目錄下
src/main/resources
該文件夾一般放置配置文件,如xml,properties文件等,其實也可以放置java文件,只是一種約定罷了,發布項目時
該文件夾的文件也會復制到WEB-INF/class中
至于test,有些類似,只不過這些是測試代碼,用過maven的應該會知道這一點
src/main/webapp
maven中約定是把該文件夾當成是普通web項目中的WebRoot目錄,看看右邊的deploy path,發布項目時
是發布到根目錄/了。該文件夾在建成的maven web項目中,在其內尚沒有WEB-INF/classes,WEB-INF/lib文件夾
需要手工建立
注意:有時候由于某種原因,你打開的以上視圖可能是下面這樣的,

其實,這樣也是可以運行項目,調試項目的,但是,如果你運行該項目的pom.xml文件時就會報錯,為什么呢,
因為maven會把src/main/webapp文件當成是普通web項目中的WebRoot,而該你的配置里面(上圖)卻
沒有配置,故而會報錯。
怎么辦呢,分2步
1、選中 WebContent,remove掉它
2、新建一個,Source文件夾為src/main/webapp,deploy path為 /
點擊apply,ok即可。
最后還必須將maven庫映射到WEB-INF/lib下,具體操作如下,點擊add按鈕,進入下圖

選擇java build path entries,點擊next,進入下圖

選擇Maven Dependencies,點擊finish,最終如下圖

如果不把Maven Dependencies映射到WEB-INF/lib,則在服務端如servlet中用到maven中的庫時,則會提示找不到類(雖然你在編寫代碼時沒有紅xx,但是運行程序時卻會找不到類)
三、運行
在eclipse的server視圖中添加你的項目,右鍵選擇的tomcat服務器,選擇add and remove,添加剛才新建的web工程,效果如下圖

在src/main/java中建立一個servlet,在src/main/webapp中建立一個jsp
啟動tomcat,訪問你的servlet和jsp,在servlet中你可以定斷點,可以調試。
http://zk1878.iteye.com/blog/1222330
如何查看是否開啟慢查:可看到慢查的設定時間,最下幾行
SHOW VARIABLES LIKE '%_query_%';
重新生成慢查詢日志文件,不用重啟
mysqladmin -u root -p flush-logs(網上都說這種,其實不行)
正確的做法:
1、分析慢查日志輸出到digest.log
/usr/local/bin/percona-toolkit-2.2.11/bin/pt-query-digest /data/mysql-slow.log >/data/mysql-digest/digest$(date +%Y-%m-%d-%H:%M).log
2、直接刪除mysql-slow.log
rm -fr /data/mysql-slow.log
3、備份并重新生成日志文件:
touch /data/mysql-slow.log
chmod 777 /data/mysql-slow.log
4、重新開啟日志記錄:
SET GLOBAL slow_query_log = ON;
5、等待就行了,經試驗有效
常用工具集:
1、服務器摘要
2、服務器磁盤監測
3、mysql服務狀態摘要
- pt-mysql-summary -- --user=root --password=root
4、慢查詢日志分析統計
- pt-query-digest /data/logs/mysql/mysql-slow.log
5、表同步工具,和mk-tables-sync功能一樣, 用法上 稍有不一樣 ,--print的結果更詳細
- pt-table-sync --execute --print --no-check-slave --database=world h='127.0.0.1' --user=root --password=123456 h='192.168.0.212' --user=root --password=123456
6、主從狀態監測,提供給它一臺mysql服務器的IP用戶名密碼,就可以分析出整個主從架構中每臺服務器的信息,包括但不限于mysql版本,IP地址,server ID,mysql服務的啟動時間,角色(主/從),Slave Status(落后于主服務器多少秒,有沒有錯誤,slave有沒有在運行)。
- [root@RHCE6 ~]# pt-slave-find --host=localhost --user=rhce6 --password=rhce6
- localhost
- Version 5.5.23-log
- Server ID 1
- Uptime 05:16:10 (started 2012-08-08T09:32:03)
- Replication Is not a slave, has 1 slaves connected, is not read_only
- Filters
- Binary logging STATEMENT
- Slave status
- Slave mode STRICT
- Auto-increment increment 1, offset 1
- InnoDB version 1.1.8
- +- 192.168.0.168
- Version 5.5.23-log
- Server ID 10
- Uptime 38:19 (started 2012-08-08T14:09:54)
- Replication Is a slave, has 0 slaves connected, is not read_only
- Filters
- Binary logging STATEMENT
- Slave status 0 seconds behind, running, no errors
- Slave mode STRICT
- Auto-increment increment 1, offset 1
- InnoDB version 1.1.8
7、mysql死鎖監測
- pt-deadlock-logger h='127.0.0.1' --user=root --password=123456
8.主鍵沖突檢查
- pt-duplicate-key-checker --database=world h='127.0.0.1' --user=root --password=123456
9.監測從庫的復制延遲 ###經過測試 運行這個命令會使從庫上的sql線程異常掛掉
- pt-slave-delay --host 192.168.0.206 --user=root --password=123456
更多介紹參考http://www.zhaokunyao.com/archives/3245,命令的使用可以通過--help獲知
percona-toolkit簡介
percona-toolkit是一組高級命令行工具的集合,用來執行各種通過手工執行非常復雜和麻煩的mysql和系統任務,這些任務包括:
l 檢查master和slave數據的一致性
l 有效地對記錄進行歸檔
l 查找重復的索引
l 對服務器信息進行匯總
l 分析來自日志和tcpdump的查詢
l 當系統出問題的時候收集重要的系統信息
percona-toolkit源自Maatkit 和Aspersa工具,這兩個工具是管理mysql的最有名的工具,現在Maatkit工具已經不維護了,請大家還是使用percona-toolkit吧!這些工具主要包括開發、性能、配置、監控、復制、系統、實用六大類,作為一個優秀的DBA,里面有的工具非常有用,如果能掌握并加以靈活應用,將能極大的提高工作效率。
二、percona-toolkit工具包安裝
0.準備工作,先安裝:
yum install -y perl-CPAN perl-Time-HiRes
1. 軟件包下載
訪問http://www.percona.com/downloads/percona-toolkit/下載最新版本的Percona Toolkit 或者通過如下命令行來獲取最新的版本:
wget percona.com/get/percona-toolkit.tar.gz
wget percona.com/get/percona-toolkit.rpm
我這里選擇直接從網站上找到最新版本下載:
cd /usr/local/bin
wget http://www.percona.com/downloads/percona-toolkit/2.2.11/percona-toolkit-2.2.11.tar.gz
2. 軟件包安裝
percona-toolkit的編譯安裝方式
/usr/local/bin
tar xzvf percona-toolkit-2.2.11.tar.gz
cd percona-toolkit-2.2.11
perl Makefile.PL
make
make test
make install
1、INFO: Maximum number of threads (200) created for connector with address null and port 8091
說明:最大線程數錯誤
解決方案:
使用線程池,用較少的線程處理較多的訪問,可以提高tomcat處理請求的能力。使用方式:
首先。打開/conf/server.xml,增加
- <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
- maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />
最大線程500(一般服務器足以),最小空閑線程數20,線程最大空閑時間60秒。
然后,修改<Connector ...>節點,增加executor屬性,如:
- <Connector executor="tomcatThreadPool"
- port="80" protocol="HTTP/1.1"
- connectionTimeout="60000"
- keepAliveTimeout="15000"
- maxKeepAliveRequests="1"
- redirectPort="443"
- ....../>
2、java.net.SocketException: Too many open files
當tomcat并發用戶量大的時候,單個jvm進程確實可能打開過多的文件句柄。
使用 #lsof -p 10001|wc -l 查看文件操作數
如下操作:
- (1).ps -ef |grep tomcat 查看tomcat的進程ID,記錄ID號,假設進程ID為10001
- (2).lsof -p 10001|wc -l 查看當前進程id為10001的 文件操作數
- (3).使用命令:ulimit -a 查看每個用戶允許打開的最大文件數
- 默認是1024.
- (4).然后執行:ulimit -n 65536 將允許的最大文件數調整為65536
ngxin需要增加如下配置和tomcat的session復制配合使用
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
tomcat集群配置:
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="192.168.1.199"http://這里配置局域網IP
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"
waitForAck="true"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
web.xml最下面加上這句話
<distributable/>