作者:温济鸿_345 | 来源:互联网 | 2014-05-28 09:12
#########################################################################由于CentOS5.4自带httpd服务,如果执行servicehttpdstart读取配置文件/etc/httpd/conf/httpd.conf,而/usr/local/
#########################################################################
由于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 & )
,启动的时候这些模块就已经加载进来了,也就是可以使用了, 通常为:
来配置。所以大家看到的配置都是
,很显然,module.c这个东西已经存在 httpd这个文件中了。
动态:
就是编译的时候,使用enable-module=shared 或者enable-modules-shared=module
来动态编译。 那么什么是动态? 静态是直接编译进httpd中,
那么动态显然就不编译进去了,也就是你启动的时候根本不会加载这个模块, 而是给你一个module.so 文件,你一定要使用
loadmodule 这个语法来加载,这个模块才有效。
那么区别就出来了:静态的模块通常是 来配置,
动态使用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
修改配置文件,让浏览文件时显示详细信息
IndexOptions FancyIndexing
NameWidth=*
#########################################################################
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
DAV svn
SVNPath /var/svn/repos
AuthType Basic
AuthName "svn repos"
AuthUserFile /var/svn/passwordfile
AuthzSVNAccessFile /var/svn/accesspolicy
Satisfy Any
Require valid-user
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