LINUX+APACHE+MYSQL+PHP+SVN+SVNMANAGER编译安装配置
Linux: CentOS5.4
Apache: httpd-2.2.14.tar.bz2
Mysql: mysql-5.0.22.tar.gz
Php: php-5.2.12.tar.gz
Svn: subversion-1.6.6.tar.bz2
Svn deps: subversion-deps-1.6.6.tar.bz2
Svnmanager: svnmanager-1.08.tar.gz
1.安装apache
tar jxvf httpd-2.2.14.tar.bz2 //解包
cd httpd-2.2.14 //进来准备编译安装apache
mkdir /usr/local/apache2 //这个目录用来安装apache
./configure --prefix=/usr/local/apache2 --enable-so --enable-dav --enable-dav-fs --enable-maintainer-mode //so是开启动态库支持,svn要求apache必须启用so,dav和dav-fs是将来svn认证用的,maintainer是开启调试模式不加亦可。
make;make install //编译并安装
id apache //确认apache用户不存在
useradd apache //添加apache用户,将来apache就以这个用户运行
chown -R apache.apache /usr/local/apache2 //更改apache安装目录属主、组,这个不是必须的
vi /usr/local/apache2/conf/httpd.conf //修改apache配置文件,让它以用户apache身份运行
修改User和Group均为apache
esc //按esc退出编辑模式
shift+zz //按住shift键然后按两次z键,即保存退出。
2.安装mysql
tar zxvf mysql-5.0.22.tar.gz //解包
cd mysql-5.0.22 //进去准备编译安装
mkdir /usr/local/mysql //先创建个安装目录
./configure --prefix=/usr/local/mysql //指定安装目录为刚创建的/usr/local/mysql
make;make install //编译并安装
id mysql //确认mysql用户不存在
useradd mysql //要是mysql用户已经存在了,可就不要在useradd了哦。
/usr/local/mysql/bin/mysql_install_db --user=mysql //以用户mysql身份创建默认库
/usr/local/mysql/bin/mysqld_safe & //让mysql启动,并在后台运行
/usr/local/mysql/bin/mysql -u root password gaso123 //给root用户加个密码,挡一挡菜鸟黑客:)
3.安装SVN
tar jxvf subversion-1.6.6.tar.bz2 //解包后得到subversion-1.6.6目录
tar jxvf subversion-deps-1.6.6.tar.bz2 //这个是SVN的依赖包,解压后自动放在subversion-1.6.6目录里,本来这个依赖包里主要是要用到apr和apr-util,但是我们安装apache的时候已经默认安装上这两个模块了,所以剩下个neon模块在这包里(我不太确定这个是否是必须的)是我们需要用的。
cd subversion-1.6.6
mkdir /usr/local/svn //svn将就装这里面
./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apache2/bin/apr-1-config --with-apr-util=/usr/local/apache2/bin/apu-1-config
//prefix还是指定安装目录,apxs指定apache配置,这个apxs应该是里面涵盖了apache的安装目录配置文件目录模块目录执行目录等等的位置参数,指定了它的位置apache就整个显形了,svn就能知道想知道的关于apache的一切(这个参数很好很强大哦),withapr和aprutil这两个我推测即使不指定svn也能找到它,因为apxs很好很强大嘛,但没试验过,有兴趣的同学可以试下。
make;make install
4.检查svn安装配置
mkdir -p /app/svn //这个目录将作为svn的版本库的总(父)目录使用
vi /usr/local/apache2/conf/httpd.conf //apache的配置需要做些检查和更改
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so //有这两个模块则svn安装是正确的,若是带#注释的就把#删掉,同时要保证/usr/local/apache2/modules目录下有mod_dav_svn.so和mod_authz_svn.so这两个文件。
手动添加以下内容:
<Location /svn> //定义网页目录为/svn
DAV svn //开启svn(融合apache的svn哦)
SVNListParentPath On //开启svn版本库父目录功能
SVNParentPath /app/svn //指定父目录位置,以后所有版本库都将存放在该目录下
AuthType Basic //指定授权模式
AuthName "SVN REPOS" //登陆窗口标题显示SVN REPOS
AuthUserFile /usr/local/svn/svn_passwdfile //指定访问版本库的账户和密码存放文件,该文件需要用apache的htpasswd命令创建
AuthzSVNAccessFile /usr/local/svn/svn_accessfile //指定访问版本库的用户和组的权限控制文件
Require valid-user //要求有效的用户才能访问
</Location> //字段结束标志
esc //按esc退出编辑模式
shift+zz //保存退出
5.测试svn与apache是否融合成功
/usr/local/apache2/bin/htpasswd -c /usr/local/svn/svn_passwdfile gaso //创建访问版本库的账户和存放账户的文件,回车后会提示输入密码两边(我们用gaso123做密码),因为是第一次创建,svn_passwdfile文件原本不存在所以需要加-c参数,以后创建svn用户就不需要-c参数了,直接引用svn_passwdfile文件即可
vi /usr/local/svn/svn_accessfile
[/]
gaso=rw //这两行授权用户gaso有访问所有版本库的权限
[gasorepo:/]
gaso=rw //这两行授权用户gaso有访问gasorepo版本库的权限
保存退出
/usr/local/svn/bin/svnadmin create /app/svn/gasorepo //创建gasorepo版本库
6.启动apache,测试svn
chown -R apache.apache /app/svn //我们这个部署里svn是通过apache对版本库进行访问的,它对版本库进行访问其实就是通过apache的用户apache来进行的,所以版本库父目录就必须属于用户apache才能规避权限问题,最后的svnmanager也有同样的问题,所以这个属主修改很重要!
/usr/local/apache2/bin/httpd -k start //启动apache
在浏览器里输入http://localhost/svn/gasorepo //输入用户名gaso和密码gaso123就可以看到版本库了,不过里面没东西:)
也可以直接访问http://localhost/svn //这个直接访问版本库总目录
7.安装php
tar zxvf php-5.2.12.tar.gz
cd php-5.2.12
mkdir /usr/local/php
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql //php用apxs2指定apache2.0,用apxs指定apache1.x,所以这里用apxs2,因为svnmanager要用到mysql所以这里还要withmysql
make;make install
cp php.ini-recommended /usr/local/php/lib/php/php.ini //拷贝php的配置文件到它该去的地儿
编辑这个php.ini,添加一行include_path = /usr/local/php/lib/php
8.测试php安装是否成功:
vi /usr/local/apache2/conf/httpd.conf //修改apache配置文件
检查是否有以下内容,没有则添加:
LoadModule php5_module modules/libphp5.so //没有这个模块就手工添加,同时要检查apache的安装目录里modules目录下,要保证有libphp5.so这个文件
DirectoryIndex index.php index.html //主要是加上index.php
vi /usr/local/apache2/htdocs/index.php //编辑一个php测试文件
加入以下内容:
<?php
phpinfo();
?>
保存退出
重新启动apache
/usr/local/apache2/bin/httpd -k restart
访问http://localhost
能看到apache的php信息页面则说明php安装成功
9.安装VersionControl_SVN
/usr/local/php/bin/pear install VersionControl_SVN-0.3.3 //pear是安装php的时候默认安装的,VersionControl_SVN这个软件是svnmanager需要用到的,必须安装
10.安装svnmanager
tar zxvf svnmanager-1.08.tar.gz
cp -r svnmanager-1.08 /usr/local/apache2/htdocs/svnman //把解压出来的文件复制到apache的站点根目录htdocs里
cd /usr/local/apache2/htdocs/svnman/
cp config.php.linux config.php //把配置文件重命名一下
编辑config.php,修改以下几项内容:
//Shell command's
$htpassword_cmd = "/usr/local/apache2/bin/htpasswd"; //告诉svnmanager apache的密码生成执行文件的位置
$svn_cmd = "/usr/local/svn/bin/svn"; //告诉svnmanager svn命令的执行目录
$svnadmin_cmd = "/usr/local/svn/bin/svnadmin"; //告诉svnmanager svnadmin命令的执行目录
//Subversion locations
$svn_config_dir = "/app/svn"; //告诉svnmanager svn的配置目录,通常指到版本库父目录或者版本库目录即可
$svn_repos_loc = "/app/svn"; //告诉svnmanager svn的版本库父目录在哪里,这个跟上面那个configdir我也搞不清楚到底有什么区别,我一般就是指到版本库父目录就没问题,上面的configdir要是注释掉则会报错
$svn_passwd_file = "/usr/local/svn/svn_passwdfile"; //告诉svnmanager svn的账户密码文件的位置
$svn_access_file = "/usr/local/svn/svn_accessfile"; //告诉svnmanager svn的权限控制文件的位置
$dsn = "mysql://root:gaso123@localhost/svnman"; //指定mysql连接的信息,这行要注意原文可能是mysqli://多数情况下都需要改成mysql://,有时候不改可能会导致连不上mysql,最后的svnman为svnmanager将要使用的数据库,会在后面创建。
$admin_name = "admin"; //本行和下面一行指定svnmanager首次登陆的初始账号和密码,这两行就不需要改了
$admin_temp_password = "admin";
保存退出
11.创建svnmanager使用的数据库
/usr/local/mysql/bin/mysql -u root -p
输入密码gaso123
mysql>create database svnman; //刚才在svnmanager的配置文件config.php里面指定的mysql连接信息的那个库就是这个。
mysql>exit
12.测试svnmanager安装是否成功
访问http://localhost/svnman
默认login信息是admin/admin,注册一个新的账户后admin账户就会被屏蔽掉了,这样用新用户登录就会出现管理svn的诸多选项,以后就用这个新账户管理svn就可以了,创建版本库,设置账户,设置权限,导入导出,功能还是可以的。
如果不是本机访问,会有权限问题,用svnmanager所在主机的ip访问:
http://svnmanager-host-ip/svnman
注册新账户时,会有提示说明修改什么文件才能远程登录svnmanager进行管理。说明的很清楚,不再赘述。
本文出自 “技术人生” 博客,转载请与作者联系!