CentOS下resin整合apache mysql資料庫 虛擬主機配置

火星人 @ 2014-03-09 , reply:0


Resin是CAUCHO公司(http://www.caucho.com/)的產品,是一個非常流行的支持servlets 和jsp的引擎,速度非常快.Resin本身包含了一個支持HTTP/1.1的WEB伺服器.雖然它可以顯示動態內容,但是它顯示靜態內容的能力也非常強,速度直逼APACHE SERVER.許多站點都是使用該WEB伺服器構建的.

  Resin也可以和許多其他的WEB伺服器一起工作,比如Apache server和IIS等.Resin支持Servlets 2.3標準和JSP 1.2標準.熟悉ASP和PHP的用戶可以發現用Resin來進行JSP編程是件很容易的事情.

  Resin支持負載平衡(Load balancing),可以增加WEB站點的可靠性.方法是增加伺服器的數量.比如一台SERVER的錯誤率是1%的話,那麼支持負載平衡的兩個Resin伺服器就可以使錯誤率降到0.01%.   你可以從http://www.caucho.com/download/ 站點上查詢Resin的最新版本並下載它. 一:安裝環境及相關軟體包 系統版本:CentOS 5.3 所需要軟體包 apache2.2.9
下載地址http://www.apache.org/dist/httpd/httpd-2.2.9.tar.bz2 jdk1.6
下載地址ftp://ftp9.freebsd.org/pub/FreeBSD/ports/distfiles/jdk-6u3-linux-i586.bin resin3.1.0 下載地址http://software.lupaworld.com/data/upload/resin-pro-3.1.0.tar.gz mysql-5.0.75.tar.gz 下載地址http://down1.chinaunix.net/distfiles/mysql-5.0.75.tar.gz 二:安裝apache 如果apache已經安裝,需要檢查apache是否支持DSO,用如下命令來檢查
# /usr/local/apache/bin/httpd -l
Compiled-in modules:
...
mod_so.c
...
如果有mod_so.c,說明支持DSO.
如果沒有,安裝一個新apache,可以用源碼來重新編譯一個
# ./configure --prefix=/usr/local/apache --enable-module=so
# make
# make install 漫長的等待之後安裝完成 啟動apache #/usr/local/apache/bin/apachectl start 然後瀏覽器里

http://localhost 就會看到

It works!

OK apache安裝成功

三:配置安裝resin 首先需要安裝JDK,在Sun網站下載一個自解壓包.jdk-6u3-linux-i586.bin 然後設為可執行 #chmod 700 jdk-6u3-linux-i586.bin #./jdk-6u3-linux-i586.bin 閱讀完長長的許可協議后輸入yes同意,就開始解壓縮了,然後把解壓縮生成的目錄移動到/usr下 #mv jdk1.6.0_03/ /usr/jdk1.6 接下來需要設置java的環境變數JAVA_HOME等. #vi /etc/profile 在加入 export JAVA_HOME=/usr/jdk1.6
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/tools.jar
然後執行 #source /etc/profile 看一下我們設置的環境變數是否生效 #export [root@www ~]# export
declare -x CLASSPATH=".:/usr/jdk1.6/lib/rt.jar:/usr/jdk1.6/lib/tools.jar"
declare -x CVS_RSH="ssh"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="[url]www.cooler.com[/url]"
declare -x INPUTRC="/etc/inputrc"
declare -x JAVA_HOME="/usr/jdk1.6"
declare -x LANG="zh_CN.UTF-8"
declare -x LANGUAGE="en_US"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"


declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD="/root/resin-pro-3.1.3"
declare -x PATH="/usr/jdk1.6/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
declare -x PWD="/root"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_CLIENT="192.168.1.109 3665 22"
declare -x SSH_CONNECTION="192.168.1.109 3665 192.168.1.119 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="vt100"
declare -x USER="root"
可以看到,新的變數已經加上了. 接下來看看jdk的版本 #java -version java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) Client VM (build 1.6.0_03-b05, mixed mode, sharing) 看到以上提示說明jdk安裝好了.
如果不需要和apache事例的話只用解壓就可以用了. 注意:其它的版本有可能需要編譯,會出問題.比如3.0.8就不行.建議用這個版本不用編譯. #tar zxvf resin-pro-3.1.0.tar.gz 啟動resin #resin/bin/httpd.sh start 檢查下啟動情況 [root@localhost bin]# netstat -tlnup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::47620 :::* LISTEN 2044/java
tcp 0 0 :::46759 :::* LISTEN 2016/java
tcp 0 0 ::ffff:127.0.0.1:6600 :::* LISTEN 2016/java


tcp 0 0 :::8080 :::* LISTEN 2044/java
tcp 0 0 ::ffff:127.0.0.1:6800 :::* LISTEN 2044/java
tcp 0 0 :::22 :::* LISTEN 1854/sshd
看到上面有8080埠就證明啟動成功了,另外注意如果開了防火牆一定要在防火牆放行相關埠或關閉防火牆.
接下來訪問http://localhost:8080 如果能看到頁面,ok,裝好了

四:resin整合apache

解壓縮resin的源碼,安裝到/uar/local/resin(編譯RESIN前需要安裝JDK安裝好apache,並設置好JDK)
# ./configure --with-apxs=/usr/local/apache/bin/apxs --prefix=/usr/local/resin
# make
# make install
完成後,應該會在apache的modules目錄下生成mod_caucho.so這個模塊文件
數據文件存放路徑/home/www
更改文件所有者
#chown -R apache:apache /home/www
更改apache配置文件指定文件存放位置及用戶,相關許可權.
#vi /usr/local/apache/conf/httpd.conf
User apache
Group apache
DocumentRoot "/home/www"
<Directory "/home/www">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

apache應該還會有下面一段如果沒有可自己加上:
LoadModule caucho_module /usr/local/apache/modules/mod_caucho.so
ResinConfigServer localhost 6802
CauchoConfigCacheDirectory /tmp
<Location /caucho-status>
SetHandler caucho-status
</Location>

更改resin.conf 指定文件存放路徑,要和apache相同
#vi /usr/local/resin/conf/resin.conf
<cluster> <srun server-id="" host="127.0.0.1" port="6802"/> </cluster>


server-id 可以自己定義,resin如果不和apache在同一台機器,host后改為resin的ip,port
將resin的默認文檔目錄與apache的DocumentRoot設為一致的目錄
<host id="">
<web-app id='/' document-directory="/home/www"/>
</host>
創建一個測試文件
#vi /home/www/test.jsp
2 2 = <%= 2 2 %>
更改所有者加上執行許可權
#chmod 700 /home/www/test.jsp
#chown apache:apache /home/www/test.jsp
重啟apache和resin
#/usr/local/apache/bin/apachectl restart
#/usr/local/resin/bin/httpd.sh restart
http://localhost/test.jsp
如果看到2 2 = 4那麼恭喜你,整合成功.

五:mysql安裝

安裝mysql有幾種方法,
一、裝系統的時候用光碟自帶的mysql
二、裝完系統后yum -y install mysql
三、編譯安裝
在外面做工程的時候推薦上面兩種方法,方便快捷.前兩種都比較簡單,就不講了,現在主要講下編譯安裝.
安裝前請yum -y install gcc gcc-c
mysql-5.0.75.tar.gz 下載地址
http://down1.chinaunix.net/distfiles/mysql-5.0.75.tar.gz
# tar zvxf mysql-5.0.75.tar.gz //解壓縮
# cd mysql-5.0.75 //進入解壓縮后的文件目錄
# ./configure --prefix=/usr/local/mysql //設定安裝目錄
# make
這個編譯的過程比較長,如果機器比較慢的話,可能要近二十分種 ( PS:我的機器是很普通的機器,所有用了差不多15,6分種 :( ) .
編譯完成後就安裝:
# make install
等上幾秒鐘,安裝完成.下面就到了最關鍵的部分了,為什麼老安裝不成功,(PS:至少我是安裝了N次,N > 10 ,呵呵),問題關鍵就在這裡,訪問mysql要一個專門的用戶,給相應的訪問許可權,這裡我們就設置root和mysql有許可權訪問.


我們先建立一個mysql和mysql用戶來訪問mysql:
# groupadd mysql //建立mysql組
# useradd mysql -g mysql //建立mysql用戶並且加入到mysql組中
建立用戶后我們就初始化表 (注意:先執行本步驟后才能進行以下步驟)
# ./scripts/mysql_install_db --user=mysql //初試化表並且規定用mysql用戶來訪問
初始化表以後就開始給mysql和root用戶設定訪問許可權, 我們先到安裝mysql的目錄:
# cd /usr/local/mysql
然後設置許可權
# chown -R root . //設定root能訪問/usr/local/mysql
# chown -R mysql var //設定mysql用戶能訪問/usr/local/mysql/var ,裡面存的是mysql的資料庫文件
# chown -R mysql var/. //設定mysql用戶能訪問/usr/local/mysql/var下的所有文件
# chown -R mysql var/mysql/. //設定mysql用戶能訪問/usr/local/mysql/var/mysql下的所有文件
# chgrp -R mysql . //設定mysql組能夠訪問/usr/local/mysql
設置完成後,基本上就裝好了,好了,我們運行一下我們的mysql:
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
相看一下相關埠
[root@localhost mysql]# netstat -tlnup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2106/mysqld
tcp 0 0 :::22 :::* LISTEN 1853/sshd
看3306起來了.mysql正常運行.
如果沒看到3306埠,則證明你的mysql運行不來,請查看錯誤日誌: /usr/local/mysql/var/*.err 然後確定安裝是否成功,如果沒有成功,請檢查上面的步驟是否正確


安裝完成後,能夠通過 /usr/local/mysql/bin/mysql 來連接mysql進行管理,如果你裝了apache並且能夠解析php的話,也能使用phpMyadmin來管理你的mysql,記得裝完后使用mysql或者mysqladmin來修改root的密碼.
/usr/local/mysql/bin/mysqladmin –u root –p password '654321' //設置密碼為654321
為了每次不用去加路徑, 把/usr/local/mysql/bin 加入/etc/profile中
export PATH=/usr/local/mysql/bin
[root@localhost var]# mysql -uroot -p654321
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
在網上找了半天, 找到解決辦法.
[root@localhost mysql]# bin/mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
分析:是/tmp/mysql.sock 不存在
# cd /var/lib/mysql/
mysql 默認的mysql.sock 是在/var/lib/mysql/mysql.sock,創建符號連接:
# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
# bin/mysql -u root
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.0.45 MySQL Community Server (GPL)
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
一般情況可以用這個辦法解決.可不知道為什麼,我的機子上面沒有mysql.sock這個文件.鬱悶.....再找.
mysql.sock 突然消失算是常見的問題,如果是第一次安裝MySQL才出現,那隻要找出 mysql.sock 在哪裡就可以了.
那...如果是突然不見的,或是都找不到怎麼辦?
那隻好重新啟動 mysql 了,tarball 安裝可以透過 mysqld 或 mysqladmin 重新啟動,rpm 安裝可以透過 service mysql restart .但是在 mysql.sock 不見的情況下,可能是無法重新啟動 mysql 的,如果真的不行,只好先下:


#ps -aux|grep mysql
再把看到的 pid 先砍了
#kill 看到的pid
確定全部都殺完了,再看一次還有沒有
再次啟動mysql
[root@localhost var]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.0.75 Source distribution
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.
mysql>
OK搞定.
控制mysql就通過 /usr/local/mysql/libexec/mysqld 來控制啟動或者停止mysql:
# /usr/local/mysql/libexec/mysqld start #啟動mysql
# /usr/local/mysql/libexec/mysqld stop #停止mysql
# /usr/local/mysql/libexec/mysqld restart #重啟mysql
鬱悶第一次運行報這個錯
100602 1:44:17 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
100602 1:44:17 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
/usr/local/mysql/libexec/mysqld: Too many arguments (first extra is 'restart').
上網搜索一下,有下面的解決辦法.
mysql> select @@max_join_size;
-----------------
| @@max_join_size |
-----------------
| 705032704 |
-----------------
1 row in set (0.00 sec)

mysql> SET sql_max_join_size=4294967295;
Query OK, 0 rows affected (0.00 sec)
但是,我select一下這這個參數,的確是4294967295,是建議的值啊?於是重新啟動一下mysql.再就沒有提示這個錯誤,可能是mysql自己改了吧?
為了每次系統重啟后都能運行mysql,可以寫一個腳本放到 /usr/local/etc/rc.d目錄下,用來運行mysql,我們寫一個腳本mysql_start.sh
#! /bin/sh
/usr/local/mysql/bin/mysqld_safe &
然後保存到/usr/local/etc/rc.d目錄下,那麼以後reboot系統后都能啟動mysql了.


或者做成系統服務,至於怎麼做成系統服務,就請參考相關文章.這裡就不講了.

六:基於域名的虛擬主機

其實是很簡單的,首先修改apache的配置文件,命令和配置如下:
#cd /usr/local/apache/conf
#vi httpd.conf

找到### Section 3: Virtual Hosts這個位置,如果沒有也沒關係,就自己加吧.在這個地方加上如下的配置信息:

#注意這一行配置一定要,沒有它就不是基於名稱的虛擬主機配置了
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin mbq@qtone.cn
DocumentRoot /home/www/web1
ServerName www.web1.cn
CustomLog logs/web1-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin mbq@qtone.cn
DocumentRoot /home/www/web2
ServerName www.web2.cn
CustomLog logs/web2-access_log common
</VirtualHost>

這裡就是配置兩個虛擬主機的配置,其中NameVirtualHost 這一行是要的,它後面用*標識本機的任何IP地址,如果你想使用特定的IP,就改成你需要的IP地址,但是保證你的IP是本機的某一個網路介面.我們這裡使用*來配置,即可以適應本機的任何IP,這樣即使機器的IP地址變了我們的配置是不需要變的,這也是好處之一哦,呵呵~~~

然後下面的VirtualHost段就是配置單個虛擬主機的配置了,注意<VirtualHost *:80>這裡也是使用的*,要保證這裡的*和NameVirtualHost 后的配置一樣哦,否則啟動或停止apache的時候會出現警告的:-).每一個VirtualHost最重要和要的就是DocumentRoot和ServerName兩個配置了,前者是來配置你這個虛擬主機的根目錄的,后一個就是你這個虛擬主機的訪問域名了,我們這裡使用的是

www.web1.cnwww.web2.cn這兩個域名.保存配置文件,然後重新啟動apache.

我們配置完了apache,就開始resin的配置了,如下:
#cd /usr/local/resin/conf
#vi resin.conf

找到<host id="" root-directory=".">這一行,這是resin的默認主機配置,我們在這個host段的後面(注意是host段哦,不是host裡面)加上如下的配置:

<host id="www.web1.cn" root-directory=".">
<web-app id="/" document-directory="/home/www/web1" />
</host>
<host id="www.web2.cn" root-directory=".">
<web-app id="/" document-directory="/home/www/web2" />
</host>

保存重啟apache和resin

  其實這裡不用apahe而直接使用resin也可以達到這樣的效果,比如你訪問http://www.web1.cn:8080就可以繞過apache直接訪問resin了,同樣也是可以達到多虛擬主機的訪問控制的.使用apache的好處就是apache作為一個成熟的webServer產品,可以提供很好的對靜態文件的支持,這點要比tomcat和resin強,但是在動態如jsp和servlet方面就需要專門的servlet引擎來處理,也就是為什麼現在大家都很流行使用apache結合tomcat或resin來實現伺服器的配置了.





[火星人 via ] CentOS下resin整合apache mysql資料庫 虛擬主機配置已經有344次圍觀

http://www.coctec.com/docs/linux/show-post-51180.html