热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CentOS系统安装配置lamp+proftpd+svn服务

#########################################################################由于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

推荐阅读
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • 本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ... [详细]
  • 使用PHP实现网站访客计数器的完整指南
    本文详细介绍了如何利用PHP构建一个简易的网站访客统计系统。通过具体的代码示例和详细的解释,帮助开发者理解和实现这一功能,适用于初学者和有一定经验的开发人员。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • 本文详细介绍了如何正确配置Java环境变量PATH,以确保JDK安装完成后能够正常运行。文章不仅涵盖了基本的环境变量设置步骤,还提供了针对不同操作系统下的具体操作指南。 ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • 解决Hive操作无响应问题:drop table和create table的处理方法
    本文详细介绍了在Hive中执行drop table和create table命令时遇到无响应的情况,并提供了完整的解决方案。通过调整MySQL字符集编码,确保Hive数据库与MySQL之间的兼容性,从而有效解决问题。 ... [详细]
  • Servlet过滤器入门:实现与配置
    本文介绍如何在Java Web应用中实现和配置Servlet过滤器,通过实现`javax.servlet.Filter`接口来创建过滤器,并详细说明其在web.xml文件中的配置方法。 ... [详细]
  • 本文将详细介绍如何安装和使用 CactiEZ 的中文版本,帮助那些对英文界面不太熟悉的用户轻松掌握这一强大的网络监控工具。 ... [详细]
author-avatar
温济鸿_345
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有