网上有很多介绍在CentOS上配置SVN服务的文章,也有一些介绍配置Tomcat和PHP服务的例子。下面阐述在CentOS6.4上配置Apache、Tomcat、PHP、MySQL以及SVN服务的一揽子过程,里面的操作步骤主要是以下三篇文章提供的,但在实践过程中做了一些调整,增加了自己的理解。为简单起见,本配置过程使用的都是yum源提供的预编译包,对初学者或者只是搭建开发环境来说,相对容易一些,更容易上手。
参考资料:
http://www.ha97.com/4523.html
http://www.linuxidc.com/Linux/2013-06/86505.htm
http://icedot.blog.51cto.com/61369/498760/
1、准备CentOS环境
这个问题不需多解释,CentOS是建立在Redhat Linux企业版基础上的社区版,其官方网站为http://www.centos.org/,目前已经到了CentOS7,如图所示。将CentOS安装的镜像文件下载好后,再安装到机器上,安装过程从略。
2、安装配置过程
(1)查看当前Linux系统的信息,如图所示。
其中:
lsb_release -a是查看当前Linux版本的详细信息,从上可以看出当前安装的是CentOS6.4系统,
getconf LONG_BIT是查看当前Linux系统是32位还是64位的
(2)从yum源下载安装包
yum,即yellowdog updater modified,是由DUKE大学的Linux开发小组开发的,也是为rpm系统设计的用于软件包自动更新的安装删除程序。yum相比普通的rpm命令一个最大的好处,就是可以自动解决软件包依赖问题,使得安装删除rpm软件变得更加容易。 yum使用一个中心仓库(repository)管理一部分甚至一个发行版的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的安装某个软件还有先安装这个软件所依赖的一系列其它软件的问题。这一点上,yum 和Ubuntu上使用的apt 相同。apt 原为debian 的deb 类型软件管理所使用,但是现在也能用到RedHat 中了。
yum 主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题。yum安装源在国内有很多镜像,你也可以将yum的源改为网易或搜狐提供的镜像地址(请参考http://hongyuan1989.blog.51cto.com/2763144/1003927),当然也可以不改,按系统自带的源即可。
下面正式开始通过yum来下载安装Apache+Tomcat+PHP+MySQL+SVN所需的软件包。
执行:
yum -y install httpd tomcat6 php mysql subversion httpd-devel mod_ssl mod_perl mod_auth_mysql mod_dav_svn mod_ssl php-mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-devel mysql-server mysql-devel libdbi-dbd-mysql tomcat6-webapps
这里做的就是通过yum来下载我们希望安装的软件包,如果这些软件包还有其他需要依赖的软件包的话,yum会帮我们一并下载过来。命令中的-y参数代表自动确认下载所需文件。
(3)配置Apache、MySQL、Tomcat服务开机自启动
执行:
chkconfig httpd on
chkconfig mysqld on
chkconfig tomcat6 on
其中的chkconfig命令是将linux的某项服务是打开还是关闭,后面跟着的是服务名,on表示打开,这样系统在启动时会自动启动httpd、mysqld和tomcat6服务。为了立即看到效果,这里直接通过命令重启Apache、MySQL、Tomcat服务。
执行:
/etc/init.d/httpd restart
/etc/init.d/mysqld restart
/etc/init.d/tomcat6 restart
默认情况下,CentOS并没有开放80和8080的端口访问,为简单起见这里直接先将CentOS的防火墙关闭。
执行:
service iptables stop
service ip6tables stop
上图是Apache的测试页面,夏天是Tomcat的测试页面:
(4)配置Apache和SVN服务
在配置SVN访问之前,我们先确认一下Subversion是否已经正常安装。
执行:
svnserve --version
查看是否出现类似如下的提示信息,如果是则表示一切正常。
好了,现在可以正式开始SVN的配置过程。
执行:
mkdir -p /data/svn/repo
cd /data/svn/repo
svnadmin create anjoy
chown -R apache.apache anjoy
这里所做的是在/data下面创建两个文件夹,然后创建一个svn仓库目录anjoy,并将anjoy目录的所有者改为apache,这样方便Apache能够正常访问到SVN仓库目录,这一段在下面可以看到。
打开并修改subversion.conf文件的内容。
执行:
vi /etc/httpd/conf.d/subversion.conf
然后在末尾添加下面蓝色字体的内容:
<Location /svn/>
DAV svn
SVNParentPath /data/svn/repo
SVNListParentPath on
AuthType Basic
AuthName "anjoy.centos"
AuthUserFile "/data/svn/userfile"
AuthzSVNAccessFile "/data/svn/accessfile"
Require valid_user
</Location>
RedirectMatch ^(/svn)$ $1/
提示:vi编辑器不像我们平常使用的记事本那么方便,因此你需要稍微懂得一点vi编辑器的使用方法。启动vi编辑器后,按下i键,然后就可以在里面增加或修改内容,内容修改完毕,按下ESC键,然后输入wq结束内容编辑。
为了限制匿名访问svn的目录,这里在apache中添加几个访问账户。
执行:
htpasswd -c /data/svn/userfile test
然后输入所需的密码即完成账户test的创建。对于第一次添加用户,总是需要使用参数“-c”以创建密码文件,test是这里第一个创建的用户名。如果后续要再增加新用户,就不需要-c选项了。比如创建第二个lxh用户:htpasswd /data/svn/userfile lxh。
接下来指定访问模式。
执行:
vi /data/svn/accessfile
然后在其中加入下面蓝色字体的内容:
[/]
*=rw
表示访问用户可以通过apache对其进行读写操作。
编辑/etc/sysconfig/selinux,把SELINUX设定为disabled,下次启动系统后将不会自动启动SElinux。
执行:
vi /etc/sysconfig/selinux
将SELINUX的值改为disabled,如图所示:
然后保存所做的修改,退出vi编辑器。
为了能顺利通过浏览器访问svn目录,先关闭防火墙的自启动。
执行:
chkconfig --level 345 iptables off
至此,Subversion部分的基本配置工作已经完成,现在可以重新启动机器,然后打开浏览器访问http://xxxx/svn/即可看到效果,此时浏览器会弹出一个窗体提示你输入访问svn目录所需的账户,如图所示。
此时,输入前面创建的账户就可以在浏览器上看到svn目录了。
当然,还没完,接下来继续完成SVN的服务配置。
(5)配置HTTP/HTTPS访问SVN服务
首先创建一个私钥文件。
执行:
cd /etc/httpd/conf
opensslgenrsa -out httpd.key 1024
openssl req -new -key httpd.key -out httpd.pem -days 3650 -x509
最后这个命令执行后需要输入一系列信息,比如国家,省份,城市,公司,部门,网络名,邮箱,然后才算完成,如图所示哦。
接下来,修改apache使ssl生效。
执行:
vim /etc/httpd/conf.d/ssl.conf
将其中的两行内容修改成蓝色字体部分:
SSLCertificateFile /etc/httpd/conf/httpd.pem
SSLCertificateKeyFile /etc/httpd/conf/httpd.key
其实就是指定为刚刚创建的两个密钥文件的路径名称。
提示:vim命令可以看成是vi的增强版本,比如vim打开的内容文字会有特殊颜色,而vi则没有。
最后,修改rc.local文件,将svnserve服务加入开机自启动。
执行:
vim /etc/rc.local
在rc.local的最后末尾下面蓝色字体的内容:
svnserve -d -r /data/svn/repo
其中的/data/svn/repo就是我们前面创建的svn仓库的路径名称。
最后,修改httpd.conf文件。
执行:
vim /etc/httpd/conf/httpd.conf
在httpd.conf文件中增加下面蓝色字体所示的内容(资料来源http://stackoverflow.com/questions/9126851/same-server-both-ssl-and-non-ssl):
NameVirtualHost*:80
NameVirtualHost*:443
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/html
ServerName localhost
SSLEngine On
SSLOptions +StrictRequire
SSLCertificateFile /etc/httpd/conf/httpd.pem
SSLCertificateKeyFile /etc/httpd/conf/httpd.key
SSLProtocol TLSv1
</VirtualHost>
好了,保存以上所有修改,退出vim编辑器,重新启动apache服务。
执行:
service httpd restart
这样就重新启动了apache服务了,此时使用http://xxxx/svn/和https://xxxx/svn/都可以正常工作。
另外,如果出现只能http访问apache,那么请检查httpd.conf是否有以下内容:
<Directory />
Options FollowSymLinks
AllowOverride None
#SSLRequireSSL
</Directory>
如果有,记得把蓝色部分使用#号注释掉,或者直接删除这行均可。
附:
1、前面是直接关闭了Linux的防火墙,更合适的做法是在iptables中增加允许80(HTTP)、8080(Tomcat)、443(HTTPS)、3690(SVN)的端口开放权限
执行:
setup
chkconfig --level 345 iptables on
setup命令可启动iptables的端口配置,你在其中增加上述几个端口的允许访问权限即可。chkconfig是把前面关闭自启动的iptables改为默认启动。
2、Apache、PHP、MySQL、Tomcat服务的配置文件路径
Apache的配置文件是/etc/httpd/conf/里
模块放在/usr/lib/httpd/里
PHP的配置文件在/etc/php.d/里和/etc/php.ini
模块放在/usr/lib/php/modules里
MySQL的配置文件在/etc/my.cnf里
Tomcat6安装目录位于/usr/share/tomcat6/里
配置文件位于/etc/tomcat6/里
3、测试PHP是否正常工作
执行:
vim /var/www/html/phpinfo.php
在其中输入以下内容:
<?php
phpinfo();
?>
保存修改并退出vim编辑器,在浏览器中输入网址 http://xxxx/phpinfo.php ,可以看看php页面是否正常显示。
4、Apache与Tomcat的整合
如果网站需同时整合Apache与Tomcat,此时可以使用JK或者Proxy方式
执行:
vim /etc/httpd/conf.d/proxy_ajp.conf
在其中输入下面的内容:
ProxyPass /tomcat/ ajp://localhost:8009
保存修改并退出vim编辑器,
执行:
/etc/init.d/httpd restart
/etc/init.d/tomcat6 restart
这样,所有在浏览器地址栏的http://xxxx/tomcat/test.jsp 就被转交给Tomcat执行了。