CentOS LAMP + Proftpd + SVN 配置安装

#########################################################################

由于CentOS5.4自带 httpd 服务,如果执行 service httpd start 读取配置文件/etc/httpd/conf/httpd.conf,而/usr/local/apache/bin/apachectl start 读取配置文件/usr/local/apache/conf/httpd.conf,可以不卸载,只要不用 service httpd start 就不会有冲突

yum remove httpd

Apache 是一个软件基金会,其中有一个项目叫 HTTP Server,httpd 是 HTTP Server 的守护进程,在LINUX下最常用的是Apache,所以一提到 httpd 就会想到Apache HTTP Server


作为准备工作,确保设置 LINUX 防火墙开启了 SSH、WWW(HTTP)、FTP 这些端口

#########################################################################

1.安装LAMP需要的库,做足准备工作,防止老是报错
安装freetype-2.3.4.tar.gz
./configure --prefix=/usr/local/freetype

安装zlib-1.2.3.tar.gz
./configure --prefix=/usr/local/zlib
设置下环境变量,否则安装libpng提示zlib找不到
export LDFLAGS=-L/usr/local/zlib/lib
export CFLAGS=-I/usr/local/zlib/include

安装jpegsrc.v6b.tar.gz,必须手动创建文件目录
mkdir /usr/local/jpeg6
mkdir /usr/local/jpeg6/bin
mkdir /usr/local/jpeg6/man
mkdir /usr/local/jpeg6/man/man1
./configure --prefix=/usr/local/zlib

安装libpng-1.2.18.tar.gz
./configure --prefix=/usr/local/libpng

安装libxml2-2.6.27.tar.gz
./configure --prefix=/usr/local/libxml

安装gd-2.0.35RC4.tar.gz
./configure --prefix=/usr/local/gd

安装xpm-3.4k-2.i386.rpm,使图片支持xpm格式

安装 libxml2-devel,否则安装php出现libxml2不能找错误
yum install libxml2-devel

安装gd-devel,否则报错:configure: error: libjpeg.(a|so) not found
yum install gd-devel
#########################################################################

2.安装mysql
MySQL-client-community-5.1.45-1.rhel5.i386.rpm
MySQL-devel-community-5.1.45-1.rhel5.i386.rpm
MySQL-server-community-5.1.45-1.rhel5.i386.rpm

创建配置文件:
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

vim /etc/my.cnf 

加入下面两行加快数据库访问速度
[mysqld]
skip-name-resolve
skip-grant-tables


创建一个超级用户,用于远程链接:
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.1' IDENTIFIED BY 'weblogic' WITH GRANT OPTION;
> FLUSH PRIVILEGES;

删除些无用的用户,安全方面考虑:
> delete from mysql.user where Host=...;  //条件自己定
> flush privileges;

重启服务
service mysql restart

查看端口方法:service iptables status
添加防火墙端口 3306 ,这样才能允许本机能链接VM里的 mysql,最容易方法可以直接到linux系统里 系统-》管理->防火墙-》其它端口 添加tcp类型的 3306 端口,还有一种方法是改 /etc/sysconfig/iptables 文件比较麻烦

关闭端口方法:
fuser -k -n tcp 80     #关闭 80 端口访问

相关文件在Linux系统中的位置
/var/lib/mysql                          # 数据库存放位置
/usr/bin/mysql                          # 服务
/usr/lib/mysql    # 不知什么来着
/usr/include/mysql   # 头文件
/usr/share/mysql   # 配置文件
/usr/share/man/man1/mysql.1.gz  # 大概手册罢

#########################################################################

3.安装APACHE,注意事项:--enable-dav --enable-so,这两个选项是安装SVN必须用到的,--enable-track-vars 为启动cookie的get/post等追踪功能,--enable-mpm=worker能优化apache运行
tar -zxf httpd-2.0.50.tar.gz
./configure --prefix=/usr/local/apache --enable-dav --enable-so --enable-cache --enable-disk-cache --enable-mem-cache --enable-rewrite --enable-mpm=worker --enable-track-vars
cd httpd-2.0.50
make && make install

将 apachectl 的调用加入到你的系统启动文件中。
echo '/usr/local/apache/bin/apachectl start ' >> /etc/rc.local

最后,运行chkconfig把Apache添加到系统的启动服务组里面: (如果卸载了CentoOS自带的httpd,这里不能操作)
chkconfig --add httpd
chkconfig httpd on

说明
在/etc/rc.d/rc.local文件中加入一行
/usr/local/apache/bin/apachectl start
这样每次重新启动系统以后,apache也会随系统一起启动.
或者
# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)

注意事项:
Apache 包括动态编译和静态编译。查看模块加载情况:/usr/local/apache/bin/httpd -M | /usr/local/apache/bin/apachectl -M

静态:

在使用./configure 编译的时候,如果不指定某个模块为动态,即没有使用:enable-mods-shared=module或者enable-module=shared 这个2个中的一个,那么所有的默认模块为静态。 那么何谓静态?  其实就是编译的时候所有的模块自己编译进 httpd 这个文件中(我们启动可以使用这个执行文件,如: ./httpd & ) ,启动的时候这些模块就已经加载进来了,也就是可以使用了, 通常为:<ifmodule> </ifmodule> 来配置。所以大家看到的配置都是 <ifmodule  module.c>  ,很显然,module.c这个东西已经存在 httpd这个文件中了。

动态: 

就是编译的时候,使用enable-module=shared 或者enable-modules-shared=module 来动态编译。  那么什么是动态?  静态是直接编译进httpd中, 那么动态显然就不编译进去了,也就是你启动的时候根本不会加载这个模块, 而是给你一个module.so 文件,你一定要使用 loadmodule 这个语法来加载,这个模块才有效。

那么区别就出来了:静态的模块通常是<ifmodule></ifmodule> 来配置, 动态使用loadmoule来加载,然后再配置。 


至于性能方面我没怎么关注, 官方说静态的比动态的在性能方面多5%左右。 

动态相对方便一点, 如果你编译完后,发现有些需要的模块你没编译进去(默认编译多少模块呢?你用./configure --help | grep disable查看, 会让你去disable表示默认会编译进去,否者disable有什么用呢?)你可以动态的加载, 只要你有module.so文件。


添加新模块
# find . -name mod_rewrite.c //在apache的源码安装目录中寻找mod_rewrite.c文件

# cd PATH/to/mod_rewrite.c //进入包含mod_rewrite.c文件的目录

# /usr/local/apache/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你当前正在使用apache的bin目录里

# /usr/local/apache/bin/apxs -i -a -n mod_rewrite mod_rewrite.la

如果没有什么错误的话,应该在你的apache的modules目录中编译出一个mod_rewrite.so文件。

编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,如下:

LoadModule rewrite_module modules/mod_rewrite.so

修改配置文件,让浏览文件时显示详细信息

<IfModule mod_autoindex.c>
  IndexOptions   FancyIndexing   NameWidth=* 
</ifmodule>

#########################################################################

4.安装PHP
安装PHP提示错误:store segment prot after reloc: Permission denied,这是SELINUX造成的,所以必须先设置下
/usr/sbin/setenforce 0

tar -jxf php-5.2.3.tar.bz2
cd php-5.2.3
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-jpeg-dir=/usr/local/jpeg6/ --with-png-dir=/usr/local/libpng/ --with-gd=/usr/local/gd/ --with-freetype-dir=/usr/local/freetype/ --enable-trace-vars --with-zlib-dir=/usr/local/zlib/ -with-mysql
make && make install

cp php.ini-dist /usr/local/php/lib/php.ini

编辑apache配置文件httpd.conf
vim /usr/local/apache/conf/httpd.conf

在最后面加入下面内容
LoadModule php5_module modules/libphp5.so

搜索 DirectoryIndex 在后面加 index.php 让它把 index.php 做为默认页
DirectoryIndex index.html index.html.var

把下面的用户名和组改为
User apache
Group apache

为了让中文网页没乱码 找到
AddDefaultCharset off 
把后面的iso8859-1改为gb2312 或者是干脆off
#########################################################################

5.安装ZendOptimizer-3.2.8-linux-glibc23-x86_32.tar.gz
cd ZendOptimizer-3.2.8-linux-glibc23-x86_32
./install.sh
#########################################################################

6.安装 Proftpd
tar zxvf proftpd-1.3.1.tar.gz 进行解压
cd proftpd-1.3.1 进入文件夹

./configure --prefix=/usr/local/proftpd --with-modules=mod_quotatab:mod_quotatab_file --enable-ctrls --enable-nls --enable-shadow --enable-dso --enable-autoshadow --enable-auth-pam

make && make install

# 编辑一个启动脚本,
cd proftpd-1.3.2 进入proftpd-1.3.2的解压文件夹中
cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd 拷贝 proftpd.init.d 到 /etc/rc.d/init.d 文件夹中,并改名为proftpd
vim /etc/rc.d/init.d/proftpd 编辑这个文件,找到文件中有一行是PATH行,将它改成你所安装proftpd所在的目录。
PATH="$PATH:/usr/local/proftpd/sbin:/usr/local/proftpd/bin" 我是安装在 /usr/local/proftpd 文件下,保存退出

# 把/etc/rc.d/init.d/proftpd设成可执行文件
chmod +x /etc/rc.d/init.d/proftpd

# 用 service proftpd start 和 service proftpd stop 和 service proftpd restart 来分别执行开启服务,停止服务与重启服务
chkconfig --level 35 proftpd on
chkconfig --add proftpd

# 修改配置文件 proftpd.conf
vim /usr/local/proftpd/etc/proftpd.conf

同个常用参数列一下:

User                    apache        #以系统自带用户 apache 运行,建立用户时指定 uid 为该用户的ID
Group                   apache        #以系统自带的组 apache 运行,建立组时指定 gid 为该级的ID

DirFakeUser on ftp                    #不显示真实的用户名
DirFakeGroup on ftp                   #不显示真实的组名

DefaultServer on                     
UseReverseDNS off                     #客户端链接速度,否则链接时会很慢
IdentLookups off                      #客户端链接速度,否则链接时会很慢

DefaultRoot ~                         #设置DefaultRoot不允许用户访问父目录

AuthUserFile                 /etc/proftpd/ftpd.passwd   #虚拟用户配置文件
AuthGroupFile                /etc/proftpd/ftpd.group    #虚拟用户组配置文件

UseEncoding UTF-8 GBK                 #解决中文乱码问题

# 建立虚拟用户,提高安全和方便管理

复制配置权限的文件到 /usr/bin 下并设置为可执行
cp ftpasswd /usr/bin
chmod +x /usr/bin/ftpasswd

创建路径和权限文件
mkdir -p /etc/proftpd
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=ftpadmin --uid=48 --home=/home/ftpdata --shell=/sbin/nologin
ftpasswd --group --file=/etc/proftpd/ftpd.group --name=admin --gid=48
ftpasswd --group --name=admin --gid=48 --member=ftpadmin

--uid, --gid 为配置文件 proftpd.conf 中定义的用户和组的ID

要修改用户的 --home 可以 vim /etc/proftpd/ftpd.passwd,然后加强制写稿操作 :w! 即可

# 设置下权限
chown -R apache:apache /var/www  或者 chmod –R 775 /var/ftp


# 注意事项:

1)如果连接不上,请检查LINUX防火墙设置,要开通FTP端口可访问

2)ftpasswd执行文件在安装目录contrib下,chmod +x ftpasswd 后,如果发现还不是不能执行命令,可将它复制到/usr/bin目录下

3)安装时加 --enable-ctrls ,然后在配置文件 proftpd.conf 中加 UseEncoding UTF-8 GBK 解决中文乱码问题

4)加快FTP链接速度

UseReverseDNS off
IdentLookups off
#########################################################################

7.安装 Subversion

1)安装(准备工作) expat-2.0.1.tar.gz 防止报错,安装方法如下:
./configure --prefix=/usr && make

make install &&
install -v -m755 -d /usr/share/doc/expat-2.0.1 &&
install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.0.1

安装 subversion-1.5.4.tar.gz
./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apache --with-apr-util=/usr/local/apache --with-ssl --enable-maintainer-mode --with-zlib=/usr/local/zlib
make && make install

2)创建版本库:
mkdir /var/svn/
mkdir /var/svn/repos
/usr/local/subversion/bin/svnadmin create /var/svn/repos

检查一下:
ls -l /var/svn/repos

3)导入项目:
/usr/local/subversion/bin/svn import /var/www file:///var/svn/repos/ -m "init"

作为守护进程启动一个服务。服务器启动后,客户端即可以通过绝对路径访问:
/usr/local/subversion/bin/svnserve -d -r /var/svn

4)与 Apache Http Server 的结合:

创建用户:
/usr/local/apache/bin/htpasswd -c /var/svn/passwordfile hanson
/usr/local/apache/bin/htpasswd /var/svn/passwordfile wordpress
/usr/local/apache/bin/htpasswd /var/svn/passwordfile discuz
/usr/local/apache/bin/htpasswd /var/svn/passwordfile bbs


创建访问控制文件

vim /var/svn/accesspolicy

加入下面内容
[groups]
supergroup = hanson

[/]
@hanson = rw

[/wordpress]
wordpress = rw

[/discuz]
discuz = rw

[/bbs]
bbs = rw

编辑 vim /usr/local/apache/conf/httpd.conf 配置文件,在最后行加入下面内容

由于安装 apache 和 subversion 已经自动加载模块,可以不添加下面的模块
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_svn_module modules/mod_dav_svn.so
#LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /repos>
  DAV svn
  SVNPath /var/svn/repos
  AuthType Basic
  AuthName "svn repos"
  AuthUserFile /var/svn/passwordfile
  AuthzSVNAccessFile /var/svn/accesspolicy
  Satisfy Any
  Require valid-user
</Location>

5)同步操作

mkdir /var/www/svnfile

在客户端 checkout 文件:
/usr/local/subversion/bin/svn checkout file:///var/svn/repos /var/www/svnfile

配置勾子文件:
cp /var/svn/repos/hooks/post-commit.tmpl /var/svn/repos/hooks/post-commit

设置权限:
chmod +x /var/svn/repos/hooks/post-commit
chown -R apache:apache /var/www/svnfile

编辑勾子文件:
vim /var/svn/repos/hooks/post-commit

改变为下面内容

export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
export PATH="$PATH:/usr/local/apache/bin:/usr/local/subversion/bin"
/usr/local/subversion/bin/svn update /var/www/svnfile --username hanson --password weblogic
echo `whoami`,$REPOS,$REV >> var/www/svn_hook_var.txt

6)设置下目录权限,使运行 apache 的用户具有执行勾子文件的权限
chown apache:apache /var/svn/repos/hooks/post-commit

7)重启apache
/usr/local/apache/bin/apachectl restart 或 /usr/local/apache/bin/httpd -k restart

8) import 新的文件,有三步要做,否则全部不能同步更新
可以独立添加一个文件夹:
svn import /var/www/blog file:///var/svn/repos/blog -m "init blog file to repos"
svn update /var/www/svnfile
chown -R apache:apache /var/www/svnfile         //因为添加新的目录经过 svn update 操作,其目录权限为 root:root

#####################################################################################################

8.问题汇集

加载不了 /usr/local/apache/modules/libphp5.so,原因是Linux有一个SELinux保护模式引起的。

1.关闭SELINUX的方法:

vi /etc linux/config 将SELINUX=enforcing 改成SELINUX=disabled 需要重启

2.不关闭SELINUX的方法:

修改 /etc/rc.d/rc.local 中 apache 启动内容
setenforce 0
chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
/usr/local/apache/bin/apachectl start
setenforce 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值