Monthly Archives: August 2010

VSFTP + MySQL 虚拟用户认证问题

首先安装mysql-server、vsftpd这都不说了。

如果想通过mysql认证虚拟用户,必须有一个虚拟用户的信息表,现在phpMyadmin创建vsftpd用户和密码,然后创建vsftpd数据库:

CREATE DATABASE vsftpd;
GRANT SELECT ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'vsftpdpassword';
FLUSH PRIVILEGES;

然后创建表:

USE vsftpd;

CREATE TABLE `accounts` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE ( `username` )
) ENGINE = MYISAM ;

然后修改/etc/vsftpd/vsftpd.conf

# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES

# if you want to LOG vsftpd activity then uncomment this log_ftp_protocol
# log_ftp_protocol=YES

connect_from_port_20=YES

# uncomment xferlog_file and xferlog_std_format if you DIDN'T use the line above
# with log_ftp_protocol - it must be excluding each other
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
#
# xferlog_std_format Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
# xferlog_std_format=YES

#
# You may change the default value for timing out an idle session (in seconds).
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection (in seconds).
#data_connection_timeout=120
#

chroot_local_user=YES

listen=YES

# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
#因为vsftpd上传的东西都是到nginx的web目录里面,所以用户名都是nginx
guest_username=nginx
local_root=/var/www/$USER
user_sub_token=$USER
virtual_use_local_privs=YES

vsftpd配置完毕后,就要弄最核心的关联vsftpd和mysql的部分-pam_mysql.so了。CentOS默认没有安装这个并且YUM里面也没有,只有手工下载rpm,然后安装.

wget ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/pam_mysql-0.7-0.5.rc1.el5.kb.2.i386.rpm
#墙内下不到
rpm -Uvh pam_mysql-0.7-0.5.rc1.el5.kb.2.i386.rpm

安装后检查是否成功的办法:

ls -al /lib/security/pam_m*
-rwxr-xr-x 1 root root 8024 Sep 4 00:51 /lib/security/pam_mail.so
-rwxr-xr-x 1 root root 15848 Sep 4 00:51 /lib/security/pam_mkhomedir.so
-rwxr-xr-x 1 root root 3892 Sep 4 00:51 /lib/security/pam_motd.so
-rwxr-xr-x 1 root root 36920 Feb 28 2008 /lib/security/pam_mysql.so

看最后一行是否有pam_mysql.so。

然后创建pam认证文件:

vi /etc/pam.d/vsftpd

文件中除了第一行注释外,只有三行内容,拷贝时注意。

#%PAM-1.0
session     optional     pam_keyinit.so     force revoke
auth required pam_mysql.so user=vsftpd passwd=vsftpdpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=3
account required pam_mysql.so user=vsftpd passwd=vsftpdpassword host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=3

这样准备工作就完毕了。

#service vsftpd restart

添加新用户:

1. 在/var/www创建以新用户名为名的目录,并且更改目录用户名和组名为nginx,例如

#mkdir /var/www/test
#chown -R nginx /var/www/test
#chgrp -R nginx /var/www/test

否则vsftpd上传时无法创建文件。

2. phpmyadmin中创建用户,在数据库vsftpd的account表中运行sql:

INSERT INTO accounts (username, pass) VALUES('user1', md5('user1'));

把user1和密码user1改成你想要的。

WordPress+Nginx +WP Super Cache加速你的Blog

WordPress+Nginx +WP Super Cache

首先要在nginx的配置中开启对rewrite的支持:

location /
{
autoindex off;
gzip_static on;

set $wp_super_cache_file ”;
set $wp_super_cache_uri $request_uri;

if ( $request_method = POST )
{
set $wp_super_cache_uri ”;
}

if ( $query_string )
{
set $wp_super_cache_uri ”;
}

if ( $http_cookie ~* “comment_author_|wordpress|wp-postpass_” )
{
set $wp_super_cache_uri ”;
}

if ( $wp_super_cache_uri ~ ^(.+)$ )
{
set $wp_super_cache_file /wp-content/cache/wp_super_cache/$http_host/$1index.html;
}

if ( -f $document_root$wp_super_cache_file )
{
rewrite ^(.*)$ $wp_super_cache_file break;
}

if (-f $request_filename)
{
expires 30d;
break;
}

if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?q=$1 last;
}
}

然后在WordPress中开启permalink,其中注意一项WordPress如果发现web服务器不是Apache的话开启permalink会自作主张在permalink最前面加上index.php,例如/index.php/$postname$/之类的,所以要补permal的定义文件中的index.php删除,否则wp-supercache会认为url中包含_GET信息而不缓存除了index之外的任何页面。接下来就是安装wp-cache,这个很简单,安装后只要浏览页面源码发现最下面有如下信息,就证明wp-supercache已经缓存这个页面了:


nginx

location /
        {
                autoindex off;
                gzip_static on;
 
                set $wp_super_cache_file '';
                set $wp_super_cache_uri $request_uri;
 
                if ( $request_method = POST )
                {
                        set $wp_super_cache_uri '';
                }
 
                if ( $query_string )
                {
                        set $wp_super_cache_uri '';
                }
 
                if ( $http_cookie ~* "comment_author_|wordpress|wp-postpass_" )
                {
                        set $wp_super_cache_uri '';
                }
 
                if ( $wp_super_cache_uri ~ ^(.+)$ )
                {
                        set $wp_super_cache_file /wp-content/cache/wp_super_cache/$http_host/$1index.html;
                }
 
                if ( -f $document_root$wp_super_cache_file )
                {
                        rewrite ^(.*)$ $wp_super_cache_file break;
                }
 
                if (-f $request_filename)
                {
                        expires 30d;
                        break;
                }
 
                if (!-e $request_filename)
                {
                        rewrite ^(.+)$ /index.php?q=$1 last;
                }
        }

限速:

然后在虚拟机里写

location / {
limit_conn one 1; 线程
limit_rate 100k; 速度
}

表示限速100K 每个客户端只允许一个线程

最终速度=rate * conn

关于Nginx添加permalink的问题

WordPress和很多web app都需要permalink的支持来完成uri优化和SEO,在Apache下面只要开启rewrite mod和在目录下面放一个.htaccess文件就可以了,但是在Nginx或者lighttpd下面就只能在配置文件下更改才能完成。比如在Nginx下面,需要导入一个rewrite文件:

# WordPress pretty URLs
if (-f $request_filename) {
expires max;
break;
}
if (-d $request_filename) {
break;
}
rewrite ^(.+)$ /index.php?q=$1 last;

# Enable nice permalinks for WordPress
error_page  404  = //index.php?q=$uri;

然后在

 location / {
            root   /usr/share/nginx/html;
            index  index.php index.html index.htm;
            include /etc/nginx/wordpress_params_regular;
            
        }

网上有些说明把引用文件放在了

location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
            include /etc/nginx/wordpress_params_regular;
            
        }

根据我的测试这是不对的,最直接的结果就是在log中出现这样的问题

/var/www/index.php/2010/01/hello/index.php

在uri的尾部添加了一个index.php,Nginx无法找到文件。

PS:在Nginx中添加rewrite后,WordPress的“关于”页面无法打开,WordPress报了404错误,但是如果新建一个页面倒是能够顺利通过permalink访问,甚至把开始的“关于”删除后重新见一个同名的“关于”页面也能正常permalink访问,只在中文版的WordPress发现这样的情况,英文版没有测试。

网上有一段关于nginx设置rewrite的配置,甚至包含了bbPress(WordPress的姐妹项目,一个和WordPress兼容的小型论坛)的:

server {
listen 80;
server_name _ bandpress.org *.bandpress.org;
error_log /var/log/nginx/bandpress.org.error.log;
access_log /var/log/nginx/bandpress.org.access.log;
# Set this to off if you're hosting more than one site
server_name_in_redirect off;
#redirects 301
rewrite /togodaddy$ http://www.kqzyfj.com/click-3348421-10378406 permanent;
rewrite /towoothemes$ http://www.woothemes.com/amember/go.php?r=12635&i=b16 permanent;
# Rewrite WordPress
location /
{
gzip on;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 3;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_buffers 16 8k;
root /var/www/bandpress.org;
index index.php;
#rewrite for sitemaps
rewrite ^(.*/)?sitemap.xml /wp-content/sitemap.php last;
#rewite for anyfont
rewrite images/(.*)/(.*)\.png$ /wp-content/plugins/anyfont/img.php last;
#rewrite for blog files
rewrite ^.*/files/(.*) /wp-content/blogs.php?file=$1 last;
# WordPress pretty URLs
if (-f $request_filename)
{
expires max;
break;
}
if (-d $request_filename)
{
break;
}
# WP Super Cache
set $supercache_file '';
set $supercache_uri $request_uri;
if ($request_method = POST) {
set $supercache_uri '';
}
# Using pretty permalinks, so bypass the cache for any query string
if ($query_string) {
set $supercache_uri '';
}
if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
set $supercache_uri '';
}
# if we haven't bypassed the cache, specify our supercache file
if ($supercache_uri ~ ^(.+)$) {
set $supercache_file /wp-content/cache/supercache/$http_host/$1index.html;
}
# only rewrite to the supercache file if it actually exists
if (-f $document_root$supercache_file) {
rewrite ^(.*)$ $supercache_file break;
}
#BBPress
if (!-e $request_filename) {
rewrite ^/forums/topic/(.*)$ /forums/topic.php last;
rewrite ^/forums/forum/(.*)$ /forums/forum.php last;
rewrite ^/forums/profile/(.*)$ /forums/profile.php last;
rewrite ^/forums/view/(.*)$ /forums/view.php last;
rewrite ^/forums/tags/(.*)$ /forums/tags.php last;
rewrite ^/forums/rss/(.*)$ /forums/rss.php last;
rewrite ^/forums/bb-admin/ /forums/bb-admin/index.php last;
rewrite ^/forums/ /forums/index.php last;
}
if (!-e $request_filename) {
rewrite ^.+/?(/wp-.*) $1 last;
rewrite ^.+/?(/.*\.php)$ $1 last;
rewrite ^(.+)$ /index.php?q=$1 last;
}
error_page 404 = /index.php?q=$uri;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/bandpress.org$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}

CentOS安装APC加速php

CentOS5默认的PHP版本是5.1,很多新的php程序都无法运行,比如说新的phpmyadmin,所以要升级一下,最好在安装php的时候就默认安装最新的。

 # vim /etc/yum.repos.d/CentOS-Testing.repo

添加如下信息

# CentOS-Testing:
# !!!! CAUTION !!!!
# This repository is a proving grounds for packages on their way to CentOSPlus and CentOS Extras.
# They may or may not replace core CentOS packages, and are not guaranteed to function properly.
# These packages build and install, but are waiting for feedback from testers as to
# functionality and stability. Packages in this repository will come and go during the
# development period, so it should not be left enabled or used on production systems without due
# consideration.
[c5-testing]
name=CentOS-5 Testing
baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
includepkgs=php*

然后

# yum update

在VPS上如果安装过mysql-server的话用yum的时候会报错,先暂停一下mysql。

PHP 是一个解释型语言,每当浏览器请求服务器上一个 PHP 页面的时候,这个 PHP 页面都要在服务器上载入,分析,解释,然后返回给浏览器。对于一个复杂的 PHP 应用程序,如果有一个加速器能缓存 PHP 的中间代码避免每次重新载入同样的 PHP 页面将会很好的提高性能,因为每次浏览器请求将会直接从服务器缓存中读取已被解释过页面,不必再让服务器从磁盘重新读取,节约了磁盘 IO 的时间,也节约了CPU 解释页面的时间。所以对于复杂的 PHP 应用,会有大幅的性能提升。

像这样的加速器有很多,最出名的几个 open source PHP 加速器是:APC,eAccelerator 和 XCache。APC绝对不是最快的,但是有官方背景支持,而且比较稳定。

# yum install php-devel php-pear httpd-devel

# pecl install apc

编译过程中会问你是否添加对httpd的支持,应为我用的是nginx,所以本来我选了no,但是无法继续编译,只有选yes才能顺利编译完成

# vim /etc/php.d/apc.ini

添加如下

extension=apc.so

重启FastCGI就OK了

如果APC有升级版本,运行如下

sudo pecl upgrade apc

apc内置了一个php的状态文件,拷贝到www目录中就能通过浏览器看到目前APC加速的状态.

# locate apc.php

找不到的话更新一下

# updatedb

# locate apc.php
/usr/share/pear/apc.php

cp /usr/share/pear/apc.php /var/www/

安装APC会占用一部分内存,在256MB的VPS上启动就占用了近30MB内存,如果负载量大的话很有可能是个内存怪物

PHP-APC加速

PHP-APC加速

其他的PHP加速工具暂时不准备安装了,如果没有发现APC有什么问题的话。下面有张三款加速工具的总结对比:

  • 通过测试得出eAccelerator在请求时间和内存占用综合方面是最好的。
  • 通过测试得出使用加速器比无加速器在请求时间快了3倍左右。
  • 通过各个官方观察,XCache是更新最快的,这也说明最有发展的。
PHP-APC-eAccelerator-XCache对比

PHP-APC-eAccelerator-XCache对比

PS:安装时可能遇到的错误

1.

cannot open /httpd/build/config_vars.mk: No such file or directory at /usr/sbin/apxs line 201

是因为你没有安装x64版本的apr-devel package,运行如下代码

yum install apr-devel.x86_64

CentOS 5安装Nginx-完全版

在256MB的CentOS上安装Nginx过程.

#yum update

#yum remove Deployment_Guide-en-US finger cups-libs cups bluez-libs desktop-file-utils ppp rp-pppoe wireless-tools irda-utils nfs-utils nfs-utils-lib rdate fetchmail eject ksh mkbootdisk mtools syslinux tcsh startup-notification talk apmd rmt dump setserial portmap yp-tools ypbind

#yum remove telnet rsh ftp rcp

#yum install postfix

#yum remove sendmail

#/sbin/chkconfig postfix off

#/sbin/service xinetd stop

#/sbin/chkconfig xinetd off

#rm -rf /etc/xinetd.d

#yum install php-pear-Net-Socket php-pear php-common php-gd php-devel php php-mbstring php-pear-Mail php-cli php-imap php-snmp php-pdo php-xml php-pear-Auth-SASL php-ldap php-pear-Net-SMTP php-mysql

比较郁闷的是在我的CentOS系统中,如果按照上面的代码安装PHP后,会自动默认安装httpd也就是apache2,并且不能删除,删除了也会删除php。但是如果不删除或者禁用Apache2的话,httpd会占用80端口,nginx也无法启动。对yum机制也不是熟悉,被迫无奈只能安装之。不过可以限制Apache不能启动,能达到同样效果。

# /sbin/chkconfig --list '查看所有的服务

# /sbin/chkconfig --del httpd '删除httpd服务

# /sbin/chkconfig --list ' 看是否成功删除

PHP安装成功后,安装FastCGI管理。

# yum install spawn-fcgi

# vim /etc/init.d/php_cgi

# chmod +x /etc/init.d/php_cgi

# /etc/init.d/php_cgi start

# netstat -tulpn | grep :9000

# /sbin/chkconfig --add php_cgi

# /sbin/chkconfig php_cgi on

# /sbin/chkconfig --list

spawn-fcgi是一个fastcgi的管理程序,本来是lighttpd上的,很多人云亦云的教程都要求安装lighttpd,其实早就独立出来,可以单独安装.安装后还需要一个管理脚本php_cgi:

#!/bin/sh
#
# php-cgi - php-fastcgi swaping via  spawn-fcgi
#
# chkconfig:   - 85 15
# description:  Run php-cgi as app server
# processname: php-cgi
# config:      /etc/sysconfig/phpfastcgi (defaults RH style)
# pidfile:     /var/run/php_cgi.pid
# Note: See how to use this script :
# http://www.cyberciti.biz/faq/rhel-fedora-install-configure-nginx-php5/
# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

spawnfcgi="/usr/bin/spawn-fcgi"
php_cgi="/usr/bin/php-cgi"
prog=$(basename $php_cgi)
server_ip=127.0.0.1
server_port=9000
server_user=nginx
server_group=nginx
server_childs=5
pidfile="/var/run/php_cgi.pid"

# do not edit, put changes in /etc/sysconfig/phpfastcgi
[ -f /etc/sysconfig/phpfastcgi ] && . /etc/sysconfig/phpfastcgi

start() {
[ -x $php_cgi ] || exit 1
[ -x $spawnfcgi ] || exit 2
echo -n $"Starting $prog: "
daemon $spawnfcgi -a ${server_ip} -p ${server_port} -u ${server_user} -g ${server_group} -P ${pidfile} -C ${server_childs} -f ${php_cgi}
retval=$?
echo
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} $prog -QUIT
retval=$?
echo
[ -f ${pidfile} ] && /bin/rm -f ${pidfile}
return $retval
}

restart(){
stop
sleep 2
start
}

rh_status(){
status -p ${pidfile} $prog
}

case "$1" in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
rh_status;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 3
esac

如果复制有麻烦的话,可以下载后上传的你的centos.

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/$(uname -m)/epel-release-5-3.noarch.rpm

# yum install nginx

# /sbin/chkconfig nginx on 'nginx随机启动服务

这样默认安装的nginx的doc_root目录是/usr/share/nginx/html,一会修改nginx配置文件需要用.

nginx.conf在/etc/nginx/nginx.conf,修改如下,特别注意斜体部分

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
include /etc/nginx/fastcgi_params;

}

安装的部分都OK了,

# service nginx start ' 启动nginx

在/usr/share/nginx/html/中创建phpinfo.php

phpinfo():
?>

在浏览器中测试是否正常。

常见问题:

1 启动nginx报错。

很有肯定能是按照php的时候顺带安装了Apache2,占用了80端口。先kill httpd,然后禁用httpd服务。

2 nginx能够正常打开静态html,但是没法打开php文件,报错“”No input file specified””

在上面nginx.conf里面斜体字部分没有正确配置目录位置。

3 安装phpMyadmin报错

CentOS默认安装php后,session.save_path = “/var/lib/php/session”.但是/var/lib/php/session的所有者却是apache,并且权限还是700!然后运行phpmyadmin的时候就报错“无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装 真正的解决办法”,更改一下/var/lib/php/session的所有者。

还有如果报错“无法载入 mcrypt 扩展”,

#yum -y install php-mcrypt

柳暗花明遇上了一个SB的错误

今天从中午开始试着在vps上装nginx,中间遇到过个常见的错误,但是被一个很低级的错误捉弄了整整一个下午和晚上。

安装成功后,起初遇到了Nginx著名的”No input file specified”错误,需要在Nginx的conf文件中更改一下document_root的位置,成功解决,然后就开始要phpinfo了,我用刚刚熟悉的vim敲下了如下代码

<%
phpinfo();
%>

看起来很熟悉吧?我当时的确满以为可以成功了,没想到竟然在浏览器里面看到了刚才我敲得代码!没事,Google之.但是很奇怪整个互联网上都搜不到这种错误… 莫非全世界只有我一个人犯过这种错误?折腾了整整一下午,原来我把php当asp了,杯具呀

<?php
phpinfo();
/>

可能是前一段时间给一个朋友搞asp CMS累出来的毛病吧.

$3 OpenVZ VPS with 256MB

Low end box找到了个不错的mini vps,价格不贵不说provider还在帖子下面留言,貌似是RAID10的硬盘。web服务器的短板都是IO,所以对这个vps有些感觉,买了一个月的试试。paypal付款后邮箱马上就收到了通知,顺利登陆web panel,找到IP,登陆ssh,一切都很顺利。

GarmanOnline默认提供的CentOS,试着下载UnixBench,发现跟其他的VPS不同,下载速度比较慢,一般在400k左右。其他用过的vps貌似都是直接连接骨干网,下载速度都是以MB计算的。算了,只有IO好的话也就算了吧。

#wget http://deak17.googlecode.com/files/unixbench-4.1.0-wht.tar.gz

# tar xzf unixbench-4.1.0-wht.tar.gz

# yum install make gcc

# make

# ./Run

vps提供的CentOS竟然没有提供GCC,所以要自己安装。

UnixBench得分:

PS:纠正一下,今天在yum update的时候发现速度很快,能够达到2MB/s的速度,看来是上次的下载服务器问题。

useradd的诡异

天下文章一大抄。

试着给vps上添加ftp和新用户的功能,ftp安装的是vsftp,但是添加用户的时候有了麻烦。记得是用useradd来添加新用户

$useradd bob

以为系统会自动在/home目录下面创建bob的主目录,但是很遗憾修改bob密码后试着用ssh登陆(创建后必须用passwd命令修改新创建用户的密码,否则无法登陆ssh),系统提示找不到文件夹。搜索了好多Linux专家的文章,都是一口咬定简单的上面的命令能够创建一个bob用户,并且主目录是/home/bob。后来发现好像最近的Linux发行版默认useradd都不创建主目录了,需要的话必须加上-m参数

$useradd -m -s /sbin/nologin  bob

这样才会在/home下面创建一个bob文件夹作为bob的主目录,并且因为有nologin,bob也不能从ssh登陆。
-D参数用来显示useradd的默认值

$useradd  -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

可以看到默认的HOME目录是/home,想要修改的话使用 -D -b newdic命令

$useradd -D -b /var/www/localhost

这样就把useradd的HOME设置为了/var/www/localhost目录。

权限问题

补充一下chmod的基础,修改文件权限有两种方法,第一使用chmod [who] [+ | – | =] [mode] 文件名 方法,其中

     u 表示“用户(user)”,即文件或目录的所有者。

  g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。

  o 表示“其他(others)用户”。

  a 表示“所有(all)用户”。它是系统默认值。
    
     + 添加某个权限。

  - 取消某个权限。
     
     r 可读。

  w 可写。

    x 可执行。

X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。

另一种方法是使用数字方法,0表示没有权限,1表示可执行权限, 2表示可写权限,4表示可读。例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。

$ chmod 644 mm.txt

默认的/var/www目录和/var/www/localhost都是750的权限,其他所以会造成更改useradd后新用户无法进入主目录的问题,因为主目录的父目录无法进入。更改一下www和localhost的权限即可。

ssh登陆log

vps为了减小系统体积,竟然没有安装log服务,赶快补上

#emerge syslog-ng
#rc-update add syslog-ng default
#/etc/init.d/syslog-ng start

syslog-ng的配置文件在 /etc/syslog-ng/syslog-ng.conf里面。生成的log在/var/log/messages里面,把所有的信息都弄进去了,如果想要看ssh登陆日志的话

#cat /var/log/messages | grep ssh

安装vsftpd

# emerge -p vsftpd 
These are the packages that I would merge, in order: 

Calculating dependencies ...done! 
[ebuild  N   ] sys-apps/xinetd-2.3.9  
[ebuild  N   ] net-ftp/vsftpd-1.0.1-r1 

查看需要安装哪些包,OK继续

# emerge vsftpd

查看ftp是运行

# netstat -tulpn | grep :21

或者用nmap扫描端口,顺便看看是否有非法端口

#nmap 127.0.0.1

vsftpd开通后,使用local user登陆后可以上传,但是有国外空间FTP的通病就是速度很慢,最快的时候能到60k/s,慢的时候就几乎和死机一样.在站点管理设置里面如果把被动模式去掉的话就能极大地提高速度,几乎都是150k/s左右。