热门标签 | 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

推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
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社区 版权所有