Tag Archive: CentOS


Centos使用NTP自动同步系统时间

安装ntp服务
#yum install ntp (安前最好,先查看一下是否已经安装了rpm -ql ntp )

将本机默认时区设为上海
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

添加任务计划 (crontab -l 查看当前用户任务计划)
crontab -e
0-59/10 * * * * /usr/sbin/ntpdate asia.pool.ntp.org

同时建议修改一下 /etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes
(改成 yes BIOS 的时间也会跟着一起改变。)

asia.pool.ntp.org 亚洲的时间服务器,速度还可以,
到这里可以找到世界各地的时间服务器: http://www.pool.ntp.org/

下载页面:http://dev.mysql.com/downloads/mysql/5.0.html#downloads
到页面底部,找到Source downloads,这个是源码版本,下载第1个Tarball

groupadd mysql
新建一个名为mysql的用户组
useradd -g mysql mysql
在mysql用户组下新建一个名为mysql的用户
gunzip < mysql-VERSION.tar.gz | tar -xvf -
解压下载到的.gz文件
cd mysql-VERSION
进入解压后的目录
CFLAGS=”-O3 -mcpu=pentium4″ CXX=gcc CXXFLAGS=”-O3 -march=pentium4 -felide-constructors -fno-exceptions -fno-rtti” ./configure –prefix=/home/mysql/ –without-debug   –with-unix-socket-path=/home/mysql/tmp/mysql.sock –with-client-ldflags=-all-static –with-mysqld-ldflags=-all-static –enable-assembler –with-extra-charsets=gbk,gb2312,utf8 –without-innodb –without-isam –with-pthread –enable-thread-safe-client
配置mysql
gcc的相关参数:

-O3 \
-O
-O1
优化.对于大函数,优化编译占用稍微多的时间和相当大的内存.
不使用`-O’选项时,编译器的目标是减少编译的开销,使编译结果能够调试.语句是独立的:如果在 两条语句之间用断点中止程序,你可以对任何变量重新赋值,或者在函数体内把程序计数器指到其他语句,以及从源程序中 精确地获取你期待的结果.
不使用`-O’选项时,只有声明了register的变量才分配使用寄存器.编译结果比不用 `-O’选项的PCC要略逊一筹.
使用了`-O’选项,编译器会试图减少目标码的大小和执行时间.
如果指定了`-O’选项, `-fthread-jumps’和`-fdefer-pop’选项将被 打开.在有delay slot的机器上, `-fdelayed-branch’选项将被打开.在即使没有帧指针 (frame pointer)也支持调试的机器上, `-fomit-frame-pointer’选项将被打开.某些机器上 还可能会打开其他选项.
-O2
多优化一些.除了涉及空间和速度交换的优化选项,执行几乎所有的优化工作.例如不进行循环展开(loop unrolling)和函数内嵌(inlining).和-O选项比较,这个选项既增加了编译时间,也提高了生成代码的 运行效果.
-O3
优化的更多.除了打开-O2所做的一切,它还打开了-finline-functions选项.
-O0
不优化.
如果指定了多个-O选项,不管带不带数字,最后一个选项才是生效的选项。
-mcpu=pentium4 \根据CPU类型优化编译,可以让你的mysq表现更好!可选项目很多:i386, i486, i586, i686, pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3, athlon, athlon-tbird, athlon-4, athlon-xp,athlon-mp,winchip-c6, winchip2 , c3.
-fomit-frame-pointer \对于不需要栈指针的函数就不在寄存器中保存指针,因此可以忽略存储和检索地址的代码,并将寄存器用于普通用途。所有”-O”级别都打开着一选项,但仅在调试器可以不依靠栈指针运行时才有效。建议不需要调试的情况下显式的设置它。

configure的相关参数:
–prefix=/home/mysql/  \指定安装目录
–without-debug \去除debug模式
–with-extra-charsets=gbk,gb2312,utf8  \添加gbk,gb2312,utf8中文字符支持
–with-pthread \强制使用pthread库(posix线程库)
–enable-assembler \使用一些字符函数的汇编版本
–enable-thread-safe-client \以线程方式编译客户端
–with-client-ldflags=-all-static \以纯静态方式编译客户端
–with-mysqld-ldflags=-all-static \以纯静态方式编译服务端
–without-isam \去掉isam表类型支持,现在很少用了,isam表是一种依赖平台的表
–without-innodb \去掉innodb表支持,innodb是一种支持事务处理的表,适合企业级应用

make
编译
make install
安装
cp support-files/my-medium.cnf /etc/my.cnf
将mysql的配置文件copy到/etc目录下,并更名为my.cnf

/home/mysql下面有5个my-xxxx.cnf文件
my-small.cnf             最小配置安装,内存<=64M,数据数量最少
my-large.cnf             内存=512M
my-medium.cnf          32M<内存<64M,或者内存有128M,但是数据库与web服务器公用内存
my-huge.cnf             1G<内存<2G,服务器主要运行mysql
my-innodb-heavy-4G.cnf 最大配置安装,内存至少4G

cd /home/mysql
进入安装目录
bin/mysql_install_db –user=mysql
以mysql用户的身份建立数据表
chown -R root   .
将mysql的主目录(即/home/mysql)
的属主设为root用户。这是官方文档上的命令,但奇怪的是,如果将mysql的主目录属主设成root用户,在运行了下面的bin/mysqld_safe –user=mysql &后则不能启动mysql。问题出在“权限”上,运行chown -R mysql .则可以用下面的命令正常启动mysql。难道官方文档有错?希望大家一起来探讨一下。
chown -R mysql var
将var目录的属主设为mysql用户
chgrp -R mysql .
将mysql的主目录的属主设为mysql用户组(注意:和前面的命令不一样,这个命令是对用户组进行赋权)
bin/mysqld_safe –user=mysql &
启动mysql,如果一切正常的话,运行此命令后,不会有任何提示。
bin/mysqladmin -u root password password
修改root用户的密码,这里的root用户指的是mysql的root用户,与Linux的root用户无关。绿色的password就是你需要设置的新密码,牢记!
bin/mysql -u root -p
如果正常的话,用这个名字可以登录,在输入密码后,出现mysql > 的提示符表明登录成功。用quit命令可退出

以下命令用于设置mysql开机自动运行
cd mysql-VERSION
再次进入解压后的目录,即源码目录。
cp support-files/mysql.server /etc/init.d/mysql
将mysql.server这个文件copy到/etc/init.d/目录下,并更名为mysql
chmod 755 /etc/init.d/mysql
给/etc/init.d/mysql这个文件赋予“执行”权限
chkconfig –level 345 mysql on
加入到开机自动运行,运行级别为3 4 5
service mysql restart
重启mysql服务

Q:为什么我用PHP连接Mysql时提示“connect fail:Can’t connect to local MySQL server through socket ‘/home/mysql/tmp/mysql.sock‘ (13)”
A:这是因为PHP没能正常的连接到Mysql套接字,即mysql.sock文件。首先,检查/home/mysql/tmp/目录下是否有mysql.sock这个文件。如果没有,可能是mysql没有正常启动;如果有,可能是/home/mysql/tmp/这个目录的权限不够,用chmod 755 /home/mysql/tmp可解决此问题。

———————————————————————————————–
Mysql的优化设置

打开/etc/my.cnf文件,修改以下设置,如果没有,可手动添加。调整设置时,请量力而行,这与你的服务器的配置有关,特别是内存大小。以下设置比较适合于1G内存的服务器,但并不绝对。

#指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用show status like ‘key_reads’获得)。key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。
key_buffer = 384M

#要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于你的操作系统的限制将是无效的。默认数值是50
back_log = 200

#一个包的最大尺寸。消息缓冲区被初始化为net_buffer_length字节,但是可在需要时增加到max_allowed_packet个字节。缺省地,该值太小必能捕捉大的(可能错误)包。如果你正在使用大的BLOB列,你必须增加该值。它应该象你想要使用的最大BLOB的那么大。
max_allowed_packet = 4M

#允许的同时客户的数量。增加该值增加 mysqld要求的文件描述符的数量。这个数字应该增加,否则,你将经常看到 Too many connections 错误。 默认数值是100
max_connections = 1024

#指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间的状态值Open_tables和Opened_tables,可以决定是否需要增加table_cache的值。如果你发现open_tables等于table_cache,并且opened_tables在不断增长,那么你就需要增加table_cache的值了(上述状态值可以使用show status like ‘Open_tables’获得)。注意,不能盲目地把table_cache设置成很大的值。如果设置得太高,可能会造成文件描述符不足,从而造成性能不稳定或者连接失败。
table_cache = 512

#每个线程排序所需的缓冲
sort_buffer_size = 4M

#当一个查询不断地扫描某一个表,MySQL会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果你认为连续扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。
read_buffer_size = 4M

#加速排序操作后的读数据,提高读分类行的速度。如果正对远远大于可用内存的表执行GROUP BY或ORDER BY操作,应增加read_rnd_buffer_size的值以加速排序操作后面的行读取。仍然不明白这个选项的用处……
read_rnd_buffer_size = 8M

#用于REPAIR TABLE。不明白这个选项的用处,百度上找到的设置方向也是五花八门,有128M、64M、32M等,折中选一个。
myisam_sort_buffer_size = 64M

#可以复用的保存在中的线程的数量。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,客户的线置在缓存中。如果有很多新的线程,为了提高性能可以这个变量值。通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。
thread_cache_size = 128

#查询结果缓存。第一次执行某条SELECT语句的时候,服务器记住该查询的文本内容和它返回的结果。服务器下一次碰到这个语句的时候,它不会再次执行该语句。作为代替,它直接从查询缓存中的得到结果并把结果返回给客户端。
query_cache_size = 32M

#最大并发线程数,cpu数量*2
thread_concurrency = 2

#设置超时时间,能避免长连接
wait_timeout = 120

#关闭不需要的表类型,如果你需要,就不要加上这个
skip-innodb
skip-bdb

关于mysql的优化设置及检查,这篇文章很值得一看   http://tech.itdb.cn/n/200607/27/n20060727_30398.shtml
———————————————————————————————–
Mysql的安全设置

打开/etc/my.cnf文件,修改以下设置,如果没有,可手动添加。

#取消文件系统的外部锁
skip-locking

#不进行域名反解析,注意由此带来的权限/授权问题
skip-name-resolve

#禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。这个命令会利用MySQL把本地文件读到数据库中,然后用户就可以非法获取敏感信息了。网络上流传的一些攻击方法中就有用它的,它也是很多新发现的SQL Injection攻击利用的手段!
local-infile = 0

#关闭远程连接,即3306端口。这是MySQL的默认监听端口。由于此处MySQL只服务于本地脚本,所以不需要远程连接。尽管MySQL内建的安全机制很严格,但监听一个TCP端口仍然是危险的行为,因为如果MySQL程序本身有问题,那么未授权的访问完全可以绕过MySQL的内建安全机制。(你必须确定,你是否真的不需要远程连接mysql)
skip-networking

修改完my.cnf后,还需要对mysql的用户名、帐号、及默认数据库进行调整
首先先登录mysql,在终端窗口输入  /home/mysql/bin/mysql -u root -p
然后会提示输入密码,输入正确密码后,会出现mysql>提示符。

输入以下命令:
mysql>use mysql;
mysql>update user set user=”centos” where user=”root”;    (将mysql的root用户名修改成centos,防止root的密码被暴力破解)
mysql>select Host,User,Password,Select_priv,Grant_priv from user;
mysql>delete from user where user=”;                (删除user用户)
mysql>delete from user where password=”;            
(删除user用户)
mysql>delete from user where host=”;                   (删除user用户)
mysql>drop database test;          (删除默认的test数据库)
mysql>flush privileges;             (刷新mysql的缓存,让以上设置立即生效)
mysql>quit;

为了使以上优化和安全设置生效,请重启Mysql服务或Linux。

关于Mysql的安全设置,这篇文章很值得一看
http://www.unixren.com/linux/bencandy.php?fid=21&id=459
———————————————————————————————–

phpMyAdmin 2.9.x的安装与配置

phpMyAdmin是一个用PHP编写的,可以通过互联网控制和操作MySQL数据库的软件。通过phpMyAdmin可以完全对数据库进行操作,例如建立、复制/删除数据等等。

下载地址: http://www.phpmyadmin.net
目前的最新版本是 2.9.1.1
使用phpMyAdmin的先决条件:Apache(或者是Zeus、IIS)、PHP、MySql必须已经安装好,并且能够正常运行。因为phpMyAdmin是用PHP程序编写的,所以,你必须确定你的PHP可以正常连接到MySql。

下面开始安装:

1、解压下载到的文件,会得到一个目录,如 phpMyAdmin-2.9.1.1-all-languages-utf-8-only

2、将这个目录移动到你的网站根目录下
mv ./phpMyAdmin-2.9.1.1-all-languages-utf-8-only /var/www/

3、为了安全起见,建议修改目录名,这样只有你自己知道phpMyAdmin的所在位置
mv /var/www/phpMyAdmin-2.9.1.1-all-languages-utf-8-only /var/www/MyphpAdmin

4、修改phpMyAdmin的配置文件
cd /var/www/MyphpAdmin
mv config.sample.inc.php config.inc.php
config.inc.php就是配置文件,需要将config.sample.inc.php更名过来,才能生效。
kate config.inc.php

以$cfg开头的选项都是可以修改的,根据你的实际情况,参与下面的文档来修改
$cfg['blowfish_secret'] = ‘http‘; /* cookie认证的加密算法,随便填一串字符即可 */
$cfg['Servers'][$i]['auth_type'] = ‘cookie‘; /* 登录时的认证方式。本机登录的设置成config,网络远程登录的需要设置成cookie */
$cfg['Servers'][$i]['host'] = ‘localhost‘; /* 主机名,可在终端下输入uname -n查看 */
$cfg['Servers'][$i]['connect_type'] = ‘socket‘; /* 使用tcp(Mysql在远程服务器上)或socket(Mysql在本机)方式来连接 */
$cfg['Servers'][$i]['compress'] = true; /* 启用压缩以提高速度,如果访问不正常请改回false(php的版本必须高于4.3.0) */
$cfg['Servers'][$i]['extension'] = ‘mysql‘; /* 设定phpMyAdmin所支持的数据库类型 */
$cfg['Servers'][$i]['controluser'] = ”; /* Mysql的root用户名,不要填写 */
$cfg['Servers'][$i]['controlpass'] = ”; /* Mysql的root用户密码,不要填写 */
$cfg['Servers'][$i]['pmadb'] = ‘phpmyadmin‘; /* 包含连接表结构的数据库名称。不用修改 */
$cfg['Servers'][$i]['bookmarktable'] = ‘pma_bookmark‘; /* 从 2.2.0 版本开始,phpMyAdmin 允许将经常使用的查询存储在书签中。不用修改 */
$cfg['Servers'][$i]['relation'] = ‘pma_relation‘; /* 从 2.2.4 版本开始,您可以定义一个关联表,它的字段是另一个表(外部表)的主键。不用修改 */
$cfg['Servers'][$i]['table_info'] = ‘pma_table_info‘; /* 不用修改 */
$cfg['Servers'][$i]['table_coords'] = ‘pma_table_coords‘; /* 不用修改 */
$cfg['Servers'][$i]['pdf_pages'] = ‘pma_pdf_pages‘; /* 不用修改 */
$cfg['Servers'][$i]['column_info'] = ‘pma_column_info‘; /* 不用修改 */
$cfg['Servers'][$i]['history'] = ‘pma_history‘; /* 不用修改 */
$cfg['UploadDir'] = ”; /* 不用修改 */
$cfg['SaveDir'] = ”; /* 不用修改 */

5、配置完毕后,就可以在浏览器里使用了。
http://192.168.0.1/MyphpAdmin/ (注意大小写要输入正确,否则会提示找不到页面)
如果安装没有问题的话,就会出现登录对话框,输入MySql的帐号和密码就可以登陆了。

如果在登陆时出现[size=-1]session_start(): Failed to initialize storage module.
请将php.ini文件中如下两句进行修改
session.save_handler = files
session.save_path = “/tmp”    (请确认/tmp目录的读写权限)
改成这样就行了,然后重启apache。

如果遇到 #2002 – 服务器没有响应 (or the local MySQL server’s socket is not correctly configured) 这类问题

我 google 了一下,发现很多人被这个问题困扰,大家解决方法的思路都是围绕 mysql.sock。实际上,通过修改 mysql.sock 路径解决问题的可能性很小。大部分这类问题是由于 mysql 做了 ip 绑定(bind-address = 127.0.0.1)造成的。这里只需要将 $cfg['Servers'][$i]['host'] = ‘localhost’ 改为 ’127.0.0.1′ 就可以了。或者改成localhost.localdomain,这样改的依据是

也许很多朋友还没有遇到这个问题。可惜我碰到了。后来一直寻找解决的办法。目前,终于可以正常使用了。在此把配置的过程整理出来给大家参考一下。有需要的话就拿去用。
只是有点长,四五页只写mysql+vsftpd的配置过程。大家慢慢看吧。也欢迎提出疑问,如果有不合理的话,也希望能给予纠正。谢谢。

在安装系统分区时,强烈建议使用手动分区,这样做的目的是为了便于处理quota的问题。这里给个分区的建议:
/boot  100M
Swap  1024M   //很多资料都建议说是物理内存的两倍,所以,这个值可以根据各自的物理内存大小来设置
/      10240M  //这个分区一定要比所安装软件大小总和还要大,要不然不能正常安装系统,
/home  剩下的空间 //把所有的用户资料或内容都放在/home下,这样做的有一个好处是,如果系统崩溃,那么只要动用到/分区却可。

Vsftpd是目前在linux系统环境下表现最为优越的安全,稳定,快速的性能,加上Vsftpd的可读性强、易配置,受到更为广泛的应用。
Vsftpd有三种实现的形式,分别为:
1、  匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问;
2、  本地用户形式:以/etc/passwd中的用户名为认证方式;
3、  虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。

相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不让所有人匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种极好的解决方案。

下面将针对第三种Vsftpd的实现形式进行作详细的配置记录。

[[i] 本帖最后由 ankey 于 2007-11-28 09:16 编辑 [/i]]

ankey 2007-11-28 01:11
一:下载安装
在root目录下建个software,这样是为了把所有需要用到的软件都统一放在这里,方便管理。
Vsftp官方下载点:[url]ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.4.tar.gz[/url] 目前最新版本已为2.05。
下载pam-mysql:[url]http://nchc.dl.sourceforge.net/sourceforge/pam-mysql/pam_mysql-0.5.tar.gz[/url] 最新版本已为0.7。

A. 开始安装vsftpd
# rpm -e vsftpd-**  //卸载原来低版本的vsftp
# cd /root/software/
# tar -zvxf vsftpd-2.0.4.tar.gz
# cd vsftpd-2.0.4
# make
把编译好的文件安装到相应目录下即可,没有相关目录请先创建。
# cp vsftpd /usr/local/sbin/vsftpd
# cp vsftpd.conf.5 /usr/local/man/man5/
# cp vsftpd.8 /usr/local/man/man8/
# cp vsftpd.conf /etc/

B. 启动mysqld服务
Mysqld可以直接使用系统自带的,只要启动起来即可。如下:
# service mysqld start/stop/restart  //启动/停止/重启mysqld
# chkconfig mysqld on           //设置为系统服务,跟随系统自动启动。

C. 安装Pam-mysql
由于是基于mysql的pam认证的虚拟用户配置,所以需要安装pam-mysql,系统默认无些服务,系统安装包里也无此软件,需要另外下载就是上述下载的安装包。
# cd /root/software/
# tar –zvxf pam_mysql-0.5.tar.gz
# cd pam_mysql
# make
# cp pam_mysql.so /lib/security

 

ankey 2007-11-28 01:12
二:服务配置

1.Vsftpd配置
配置vsftpd.conf,增加对每个虚拟用户的配置,并对每个虚拟用户详细权限进行配置。
创建/etc/vsftpd_user_conf目录,并在其下分别为虚拟用户test,test1,test2增加test,test1,test2三个配置文件。
# mkdir /etc/vsftpd_user_conf
# cd /etc/vsftpd_user_conf
# touch test test1 test2
#test,test1,test2配置文件根据需要设置相关vsftp的权限,比如test用户可以下载上传,修改,test文件内容如下:
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO  //可以浏览和下载有相关权限的文件(其他用户有可读和可执行权限)
local_root=/home/virtual/test     //锁定在相应的目录下,以防越权访问

主配置文件vsftpd.conf内容如下:
listen=YES                     //打开端口监听21
anonymous_enable=NO     //关闭匿名用户权限
local_enable=YES        //一定要yes,否则ftp登入会提示,本地用户和匿名用户都没有访问权限的提示
write_enable=NO               
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO     //在主配置中关闭所有的读写改权限。
guest_enable=YES
guest_username=virtual        //这两行的意思是采用虚拟用户形式
virtual_use_local_privs=YES   //虚拟用户和本地用户权限相同

user_config_dir=/etc/vsftpd_user_conf  //增加对每个虚拟用户的配置

anon_world_readable_only=YES  //不可以浏览和下载有相关权限的文件(其他用户有可读和可执行权限)
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
dirmessage_enable=YES
xferlog_enable=YES   
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
ftpd_banner=Welcome to lanmang.com FTP service.
one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
max_clients=200
max_per_ip=4
check_shell=NO

2.虚拟用户配置
A.创建真实用户与虚拟用户的映射
# useradd virtual
# passwd virtual     //提示输入密码时请输123456
#必要时使用 : useradd -d /home/ftpsite -s /sbin/nologin virtual

B.创建数据库
# mysql –u root –p
Mysql>create database ftpd;
Mysql> use ftpd;
Mysql> create table user(name char(20) binary,passwd char(20) binary);
Mysql> insert into user (name,passwd) values (‘test’,'password’);
Mysql> insert into user (name,passwd) values (‘test1′,’password1′);
Mysql> insert into user (name,passwd) values (‘test2′,’password2′);
Mysql> grant select on ftpd.user to virtual@localhost identified by ’123456′;
Mysql>quit

A. 建立认证文件
# cd /etc/pam.d/
# touch ftp   //如果有就不用生成了。
# vi ftp      //内容如下:
auth required /lib/security/pam_mysql.so user=virtual passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
account required /lib/security/pam_mysql.so user=virtual passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0

# 注意:
#crypt=0: 明文密码
#crypt=1: 使用crpyt()函数(对应SQL数据里的encrypt(),encrypt()随机产生salt)
#crypt=2: 使用MYSQL中的password()函数加密
#crypt=3:表示使用md5的散列方式#上面是两句配置,第一句是以auth开始的,第二句以account开始的。

 

ankey 2007-11-28 01:13
三:启动/关闭vsftpd服务
# /usr/local/sbin/vsftpd &
# vi /etc/rc.d/rc.local           //修改系统启动文件,在最后加入/usr/local/sbin/vsftpd & 作为系统服务,将会随着系统而启动。
#注:关闭服务为:killall vsftpd
#查看是否启动成功请使用netstat –ntl查看21端口是否起来。

四:配额设置
对用户做磁盘限额,限额功能是系统自带,不是vsftp功能!
对virtual用户主目录:/home/ftpsite/限制,修改/etc/fstab文件,重新启动计算机
A.编辑/etc/fstab文件,重新启动计算机,使限额功能生效
     # vi /etc/fstab
    把
LABEL=/home   /home   ext3    defaults     1 2
修改为:
LABEL=/home   /home   ext3    defaults,usrquota,grpquota     1 2
# reboot
    启动完成后:
    # cd /home
        # quotacheck –avug
        # quotaon -a
B.限额配置文件的修改
# edquota virtual //为用户virtual设置磁盘配额
          系统会自动打开配额文件,如下:
          Disk quotas for user virtual (uid 502):
          Filesystem         blocks       soft       hard     inodes     soft     hard
           /dev/sda2           424          0          0         13        0        0
#注:
#第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数,单位为KB。随后的两列用来设置用户在该文件系统上的软硬块限度。
inodes 列显示了用户当前使用的i节点数量。最后两列用来设置用户在该文件系统上的软硬i节点限度.硬限是用户或组群可以使用的磁盘空间的 绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为过渡期(grace period),默认七天的超越。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。如果以上值中的任何一个被设置为 0,那个限度就不会被设置。
C.要校验用户的配额是否被设置,我们可以使用以下命令:
# quota virtual
用以下命令显示磁盘配额使用状态:# repquota  -a

 

ankey 2007-11-28 01:13
一篇完整的vsftpd+mysql配置文档暂告一段落。
下面写一下,新添加用户的方法。
# mysql -u root -h localhost –p
mysql> use ftpd;
mysql> insert into user (name,passwd) values (‘test’,'password’);
mysql> quit
# cd /etc/vsftpd_user_conf
# touch test
# vi test
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_world_readable_only=NO
local_root=/home/virtual/test

# cd /home/virtual/
# mkdir test
# chown virtual:virtual test
chmod 700 test

CentOS Apache配置详解

要想在linux上实现网页服务器(www)需要Apache这个服务器软件,不过Apache仅能提供最基本的静态网站数据而已,想要实现动态网站的话,最好还是要PHP与MySQL的支持,所以下面我们将会以LAMP(linux+Apache+MySQL+PHP)作为安装与设置的介绍。

LAMP所需软件与其结构
httpd mysql mysql-Server php php-devel php-mysql
可以用rpm包安装,或者直接用yum安装
#yum install httpd mysql-server php php-devel php-mysql
先来了解一下apache 2.0这个版本的相关结构,这样才能知道如何处理我们的网页数据
/etc/httpd/conf/httpd.conf:最主要的配置文件,不过很多其他的distribution都将这个文件拆成数个小文件,分别管理不同的参数。但是最主要配置文件还是以这个文件名为主。
/etc/httpd/conf.d/*.conf:这个事CentOS的特色之一,如果你不想修改原始配置文件httpd.conf的话,那么可以将你自己的额外参数独立出来,而启动apache时,这个文件就会被读入到主要配置文件。
/usr/lib/httpd/modules:apache支持很多的模块,所以您想要使用的模块默认都放置在此目录
/var/www/html:这里是CentOS默认的“首页”所在目录。
/var/www/error:如果因为主机设置错误,或者是浏览器端要求的数据错误,在浏览器上出现的错误信息就已这个目录的默认信息为主。
/var/www/icons:提供apache的一些小图标
/var/www/cgi-bin :默认给一些可执行的CGI程序放置的目录
/var/log/httpd:默认apache的日志文件都放在这里,对于流量大的网站来说,这个目录要很小心,因为这个文件很容易变的很大,您需要足够的空间哦
/usr/sbin/apachectl:这是Apache的主要执行文件,这个执行文件其实是shell script,它可以主动检测系统上的一些设置值,好让您启动Apache时更简单
/usr/sbin/httpd:这是主要的apache的二进制文件
/usr/bin/htpasswd:当您想登陆某些网页时,需要输入账号与密码。那么Apache本身就提供一个最基本的密码保护方式。该密码的产生就是通过这个命令实现的

至于MySQL方面,您需要知道的几个重要目录与文件有以下几个:
/etc/my.cnf:这是Mysql的配置文件,包括您想要进行mysql数据库的最佳化,或者是正对mysql进行一些额外的参数指定,都可以在这个文件里实现
/usr/lib/mysql:这个目录是MySQL数据库放置的位置,当启动任何MySQL的服务器时,请务必记得在备份时,将此目录完整的备份下来。

另外,在PHP方面,应该了解以下几个文件。
/usr/lib/httpd/modules/libphp4.so:PHP提供给apache使用的模块,这个关系我们能否在apache网页上面设计php程序语言的最重要文件
/etc/httpd/conf.d/php.conf:你要不要手动将该模块写入Httpd.conf中呢?不需要,因为系统已经主动将php设置参数写入到这个文件中了,而这个文件会在apache重新启动时被读入。
/etc/php.ini:这是PHP的主要配置文件,包括PHP能不能允许用户上传文件,能不能允许某些低安全性的标志等,都在这个配置文件中设置。
/etc/php.d/mysql.ini /usr/lib/php4/mysql.so:PHP能否可以支持MySQL接口就看这两个文件了。这两个文件是由php-mysql软件提供的
/usr/bin/phpize /usr/include/php:如果您以后想要安装类似PHP加速器可以让浏览速度加快的话,那么这个文件与目录就需要存在,否则加速器软件没法用。

httpd.conf的基本设置
首先,你需要在/etc/hosts内需要有个一个完整的主机名,否则在重启apache服务时,会提示找不到完整的主机名。
httpd.conf的基本设置是这样的:
<设置项目>
      次设置项目内的相关参数
      。。。。
</设置项目>
例如,你想要针对首页/var/www/html提供额外的功能,那么可以进行如下设置:
<Directory “/var/www/html”>
   Options Indexes
   ……
</Directory>

针对主机环境的设置项目
#vi /etc/httpd/conf/httpd.conf
ServerTokens OS
# 这个项目在告诉客户端WWW服务器的版本和操作系统,不需要改编它
#如果你不想告诉太多的主机信息,将这个项目的OS改成Minor

ServerRoot “/etc/httpd”
#这个是设置文件的最顶层目录,通常使用绝对路径,下面某些数据设置使用相对路径时
#就是与这个目录设置值有关的下层目录,不需要更改它
ServerRoot
设定Apache 安装的绝对路径
TimeOut
设定 服务器接收至完成的最长等待时间
KeepAlive
设定服务器是否开启连续请求功能,真实服务器一般都要开启
Port
设定http服务的默认端口。
User/Group
设定 服务器程序的执行者与属组,这个一般是apache

下面我们就针对Apache做几个实验
1:我们测试把默认网站目录改到root家目录下
新建/root/website目录
#mkdir -p /root/website
#echo “website page” >> /root/website/index.html
#vi /etc/httpd/conf/httpd.conf
找到 DocumentRoot “/var/www/html” 这一段   //apache的根目录
把/var/www/html 这个目录改到 /root/website
在找到 <Directory “/var/www/html”> //定义apache /var/www/html这个区域
把 /var/www/html改成/root/website
这样我们就把apahce的默认路径改掉了
然后重启服务
#service httpd restart  
//这里在你重启服务的时候,可能会报错,说找不到目录,这个主要是由于selinux导致的
那怎么解决呢?有2个办法,关掉selinux  
#setenforce 0
或者更改/root/website这个文件的selinux属性,让它匹配httpd这个服务器的要求
怎么改?我们可以复制/var/www/html这个目录的selinux属性
#chcon -R –reference /var/www/html /root/website
然后在重启服务,之后你就看到它没有报错了
不过你去访问localhost的时候,会发现访问拒绝 这是为什么呢?主要是因为你的/root的权限是750,ahache这个用户没有权限访问,你需要更改掉权限,可以这样改
#chmod -R 755 /root
然后去访问 发现正常了

2:基于名称的虚拟主机
需要两个域名解析到你的服务器,对应关系是
/var/www/server             server.example.com
/var/www/client                client.example.com
当访问这两个域名时,可以分别显示出不同文件里面主页的内容
#echo “server page” >> /var/www/server/index.html
#echo “client page” >> /var/www/client/index.html
然后我们编辑一个配置文件
#vi /etc/httpd/conf.d/virtual.conf //记住conf.d里面的内容也是apache的配置文件
添加如下内容:
NameVirtualHost 192.168.76.133:80

<VirtualHost 192.168.76.133:80>
ServerName service.example.com
DocumentRoot /var/www/server
</VirtualHost>

<VirtualHost 192.168.76.133:80>
ServerName client.example.com
DocumentRoot /var/www/client
</VirtualHost>
#service httpd restart
这样基于名称的虚拟主机就配置好了
如果你没有DNS你可以再你的机器上hosts文件里加记录 linux在/etc/hosts这个文件 windows在C:\windows\system32\drivers\etc\hosts文件
加上这两行
192.168.76.133    server.example.com
192.168.76.133    client.example.com
这样你在去测试,就会发现访问不同的域名显示不同的内容了 这样基于名称的虚拟主机就配置好了!

3:基于IP地址的虚拟主机
先添加一个临时网卡
#ifconfig eth0:0 192.168.76.132 //临时使用,重启后就会消失
然后便捷virtual.conf文件
#vi /etc/httpd/conf.d/virtual.conf
把内容修改为
#NameVirtualHost 192.168.76.133:80

<VirtualHost 192.168.76.133:80>
ServerName service.example.com
DocumentRoot /var/www/server
</VirtualHost>

<VirtualHost 192.168.76.132:80>
ServerName client.example.com
DocumentRoot /var/www/client
</VirtualHost>
让后你在用ip访问,发现也能显示不同的内容,或者你编辑hosts文件,用域名访问也没问题
这样基于IP地址的虚拟主机也成功了!

4:别名
在/etc/httpd/conf/httpd.conf里加入
Alias /test “/root/website/”    // 别名 这样你用192.168.76.133/test访问 也会显示192.168.76.133的页面
这个地方需要注意的就是/test 还是/test/ 这个是用区别的 你用/test 那么你访问的时候只能用192.168.76.133/test访问   如果你用/test/ 那么192.168.76.133/test/访问,而/test将不会放你访问
忘了这里你的先把/etc/httpd/conf.d目录里面刚刚设置的虚拟目录注释掉 不然没法访问,是因为做了虚拟目录,而httpd.conf里面的设置就无法访问 当然可以用localhost来访问,其他的访问都不行

5:实现网页的资源下载
首先添加别名
#vi /etc/httpd/conf/httpd.conf
在Alias /test “/root/website/” 后面加入
Alias /down “/var/ftp/pub”
让后对/var/ftp/pub区域设置参数
<Directory “/var/ftp/pub”>
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
在Options 加入 MultiViews   //没有index时自动列出目录文档
然后重启服务,这样http://192.168.76.133/down/里面就可以列出/var/ftp/pub里面的文件了,试着点一个另存为,是否可以下载? 呵呵 成功!

6:.htpasswd的实现
#vi /etc/httpd/conf/httpd.conf
我们针对刚刚做的/var/ftp/pub来做
加入如下信息
Alias /down “/var/ftp/pub/”
<Directory “/var/ftp/pub”>
    Options Indexes MultiViews
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
</Directory>
<Directory “/var/ftp/pub”>
AuthType Basic
AuthName “this is test”
AuthUserFile /etc/httpd/htpasswd
Require User test
</Directory>
然后重启httpd服务,
让后生成.htpasswd用户密码
htpasswd -c /etc/httpd/htpasswd test
让后去访问192.168.76.133/down会需要密码
这样就成功了

Powered by WordPress | Theme: Motion by 85ideas.