mod_fcgid出现500错误的解决

MT上的php5是用mod_fcgid方式运行的,但运行一段时间之后,有时候会莫名其妙的出现500错误,也看不出是哪个php程序错误,不过html文件倒能正常解析,查看用户的$HOME/statistics/logs/error_log文件,会发现大量这样的内容:

[Fri Aug 10 01:00:43 2007] [error] [client 202.108.23.76] Premature end of scrip
t headers: index.php
[Fri Aug 10 01:01:20 2007] [error] [client 60.191.82.228] Premature end of scrip
t headers: index.php

而在系统的log文件/var/log/apache/error_log中,是这样的错误:

[Fri Aug 10 01:03:05 2007] [notice] mod_fcgid: process /var/www/vhosts/fwolf.com
/httpdocs/blog/index.php(21666) exit(communication error), terminated by calling
 exit(), return code: 120

G到一些资料,第一类错误是脚本执行被中断,没有返回完整的http header;第二类错误是cgi程序的执行被强行中止。根本原因是fastcgi会自动kill掉一些发呆的、长时间没有响应的进程(要不它比较快,比较省内存啊),但是fastcgi的默认idle时间设置过于苛刻(官方文档中每个选项都有默认的时间值),所以有些处理比较慢、需要调用外部资源的程序就有可能被误杀,所以先略微调整一下,继续观察:

<IfModule mod_fcgid.c>
    IdleTimeout 600
    ProcessLifeTime 3600
    MaxProcessCount 8
    DefaultMinClassProcessCount 3
    DefaultMaxClassProcessCount 3
    IPCConnectTimeout 30
    IPCCommTimeout 600
    #MaxRequestsPerProcess 500
</IfModule>
  • IdleTimeout 发呆时限
  • ProcessLifeTime 一个进程的最长生命周期,过期之后无条件kill
  • MaxProcessCount 最大进程个数
  • DefaultMinClassProcessCount 每个程序启动的最小进程个数
  • DefaultMaxClassProcessCount 每个程序启动的最大进程个数
  • IPCConnectTimeout 程序响应超时时间
  • IPCCommTimeout 与程序通讯的最长时间,上面的错误有可能就是这个值设置过小造成的
  • MaxRequestsPerProcess 每个进程最多完成处理个数,达成后自杀,因为PHP最多只处理500次请求。不过这个是mod_fcgid 1.11版本添加的,我们主机上暂时不支持。

上述选项的确切作用我也不是十分清楚,先用着这个设置,再根据情况调整。

参考:

[MT]主机上安装svn客户端

有了svn,就可以方便的获取一些程序的源码了,所以我要在MT主机上安装,注意只是客户端,并非架设svn服务器。

svn目前的最新版是1.4.4,我参考shunz的Apache+Subversion安装笔记,从http://www.axint.net/apache/apr/binaries/rpm/i386/下载了apr-1.2.8-1.i386.rpmapr-util-1.2.8-1.i386.rpm(新版svn需要apr版本0.9.7以上,而且是必需),可是rpm -U apr*.rpm的时候系统却提示依赖性错误:

warning: apr-1.2.8-1.i386.rpm: V3 DSA signature: NOKEY, key ID 751d7f27
error: Failed dependencies:
        libpq.so.3 is needed by apr-util-1.2.8-1.i386
        libapr-0.so.0 is needed by (installed) httpd-2.0.52-32.3.ent.centos4.i386
        libapr-0.so.0 is needed by (installed) mod_perl-1.99_16-4.5.i386
        libapr-0.so.0 is needed by (installed) subversion-1.1.4-2.ent.i386
        libapr-0.so.0 is needed by (installed) subversion-perl-1.1.4-2.ent.i386
        apr = 0.9.4-24.5.c4.2 is needed by (installed) apr-devel-0.9.4-24.5.c4.2.i386
        libaprutil-0.so.0 is needed by (installed) httpd-2.0.52-32.3.ent.centos4.i386
        libaprutil-0.so.0 is needed by (installed) mod_perl-1.99_16-4.5.i386
        libaprutil-0.so.0 is needed by (installed) subversion-1.1.4-2.ent.i386
        libaprutil-0.so.0 is needed by (installed) subversion-perl-1.1.4-2.ent.i386
        apr-util = 0.9.4-21 is needed by (installed) apr-util-devel-0.9.4-21.i386

(rpm和redhat系列不熟悉)看了半天才搞懂,rpm -U是升级,而系统中的现有apr 0.9.4版本被其他软件比如apache、mod_perl等依赖,升级过去可能就破坏依赖性关系了。如果rpm -i的话应该是安装新版本,不知道centos上不同的软件版本能否共存,考虑到合租服务器的稳定性,还是决定按照MT客服的建议,安装svn的旧版本1.3.2:

wget http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz
gunzip subversion-1.3.2.tar.gz
tar -xvf subversion-1.3.2.tar
cd subversion-1.3.2
./configure && make && make install

顺利完成,也可以下载其他形式的源码包,然后再配置svn到用户的chroot环境当中,大家就都能用了。

配置svn到chroot环境的时候需要的包很多,ldd就行,另外如果想checkout https形式的仓库,还要配置/dev下的随机数生成器:

# mknod /var/www/vhosts/chroot/dev/urandom c 1 9

不然会出错:

SSL negotiation failed: SSL disabled due to lack of entropy

基本可用了,不过checkout含有中文名称文件的仓库时,又会遇到如下错误:

svn: Can't recode string

基本可以确定是svn无法转换字符集的原因(参考),再进一步查找原因,发现竟然是centos的系统默认字符集不是utf8的,于是更改/etc/sysconfig/i18n,设定为如下内容:

LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
#LANG="C"

重启服务器,root用户可以使用中文了,普通用户还不行,需要把/usr/lib/locale/en_US.utf8/配置到chroot环境中去,然后在普通用户的$HOME目录下的.bashrc或者.bash_profile文件中加入一句export LANG=en_US.UTF-8,重新登录后就可以啦,UTF8万岁!

仍然剩余一个诡异的问题,root用户无法使用https形式的仓库:

svn: SSL is not supported

注意普通用户是可以使用的,怎么回事?用whereis发现服务器上有两个svn文件:

# whereis svn
svn: /usr/bin/svn /usr/local/bin/svn /usr/share/man/man1/svn.1.gz

分别查看其版本:

# /usr/bin/svn --version
svn, version 1.1.4 (r13838)
   compiled Aug 21 2005, 20:56:55
...
* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
  - handles 'http' schema
  - handles 'https' schema

# /usr/local/bin/svn --version
svn, version 1.3.2 (r19776)
   compiled Aug  9 2007, 16:51:43
...
* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
  - handles 'http' scheme

合着我编译了半天都是徒劳啊,服务器上早就有了svn了,我明明记得是没有啊,难道是客服在装编译套件developer’s tools package时给装上了?可看了那个包列表里也没有啊?依然诡异,忙活半天还少编译了个SSL选项进来。

也许是MT客服给装编译套件的时候,为了自己用着方便,顺手放过来一个svn?谁还有新租的DV 3.0主机麻烦确认一下好了。

参考(部分是安装svn服务器的):

关于svn字符集错误以及centos字符集问题的参考:

带SSL编译svn的一些资料:

升级MT dv 3.0主机到php5

MT主机dv 3.0上的php默认是4,现在已经是php5时代了,不知道MT什么时候默认给配php5,现阶段官方的方式仍然是由用户自行升级,详细步骤见kb中的Upgrade to PHP5 on (dv) 3.0 Dedicated Virtual Servers

推荐使用suexec方式,这样每个用户执行cgi使用的都是自己的身份,即安全也便于管理。suexec要求的前提条件有三个,就是用户的主机设置开启如下三个选项:

  • PHP支持打开,安全模式safe_mode关闭。
  • CGI支持打开。
  • FastCGI支持打开。

具体步骤说起来也是很简单的,首先把/opt/php51下的php5执行文件拷贝到用户目录下,并设置相应权限:

cp /opt/php51/cgi-bin/php5 /var/www/vhosts/<domain>/bin/
cd /var/www/vhosts/<domain>/
chown -R <domain-user>:psacln bin/

其中<domain>是用户的域名,<domain-user>是用户的ssh/ftp用户名,然后编辑/var/www/vhosts/<domain>/conf/vhost.conf文件,添加如下内容:

AddHandler fcgid-script .php .php5
SuexecUserGroup <domain-user> psacln
<Directory /var/www/vhosts/<domain>/httpdocs>
     FCGIWrapper /var/www/vhosts/<domain>/bin/php5 .php
     FCGIWrapper /var/www/vhosts/<domain>/bin/php5 .php5
     Options ExecCGI
     allow from all
</Directory>

如果是https站点,除了httpdocs换成httpsdocs之外,配置文件名称为vhost_ssl.conf。最后启用设置:

/usr/local/psa/admin/sbin/websrvmng -a -v

就可以了,我们主机上现在的php5版本是5.1.4,还是不够新:)。

为了方便操作,自己写了个小脚本:

#! /bin/bash
# Automatic enable php5 support for mediatemple user(via suexec).

# Pre-prepare in plesk:
#   php support is checked, safe_mod 'on' is UNCHECKED
#   cgi support is checked.
#   fastcgi support is checked.

# Check username, must run with root
WHOAMI=`whoami`
if [ ! $WHOAMI == 'root' ]; then
    echo "This script must run with root."
    exit 1
fi

# Check parameters
if [ $# -lt 2 ];then
    echo "Usage: `basename $0` ssh_user domain"
    exit 1
fi
USER=$1
DOMAIN=$2

# If given a wrong domain, exit
if [ ! -d /var/www/vhosts/$DOMAIN ]; then
    echo "Domain doesn't exists."
    exit 1
fi

# Copy php5 files
cp /opt/php51/cgi-bin/php5 /var/www/vhosts/$DOMAIN/bin/
cd /var/www/vhosts/$DOMAIN/
chown -R $USER:psacln bin/
cd conf

BEGIN="###_87b4e7fc -- Add by enable_php script, DON'T modify this section --"
END="# -- Enable_php modify section end -- 87b4e7fc_###"

# If vhost.conf doesn't exists, create it with default content
if [ -z vhost.conf ]; then
    echo "\\
$BEGIN\\
$END\\
" >> vhost.conf
else
    MARK=`grep "###_87b4e7fc" vhost.conf|wc -l`
    if [ $MARK -eq 0 ]; then
        # If vhost.conf exists & not mark, add replace mark
        echo "\\
$BEGIN\\
$END\\
" >> vhost.conf
    fi
fi
# Vhost_ssl.conf
if [ -z vhost_ssl.conf ]; then
    echo "\\
$BEGIN\\
$END\\
" >> vhost_ssl.conf
else
    MARK=`grep "###_87b4e7fc" vhost_ssl.conf|wc -l`
    if [ $MARK -eq 0 ]; then
        # If vhost.conf exists & not mark, add replace mark
        echo "\\
$BEGIN\\
$END\\
" >> vhost_ssl.conf
    fi
fi


STR="$BEGIN\\n\\
AddHandler fcgid-script .php .php5\\n\\
SuexecUserGroup $USER psacln\\n\\
<Directory \\/var\\/www\\/vhosts\\/$DOMAIN\\/httpdocs>\\n\\
    FCGIWrapper \\/var\\/www\\/vhosts\\/$DOMAIN\\/bin\\/php5 .php\\n\\
    FCGIWrapper \\/var\\/www\\/vhosts\\/$DOMAIN\\/bin\\/php5 .php5\\n\\
    Options \\+ExecCGI\\n\\
    allow from all\\n\\
<\\/Directory>\\n\\
<Directory \\/var\\/www\\/vhosts\\/$DOMAIN\\/httpsdocs>\\n\\
    FCGIWrapper \\/var\\/www\\/vhosts\\/$DOMAIN\\/bin\\/php5 .php\\n\\
    FCGIWrapper \\/var\\/www\\/vhosts\\/$DOMAIN\\/bin\\/php5 .php5\\n\\
    Options \\+ExecCGI\\n\\
    allow from all\\n\\
<\\/Directory>\\n\\
$END"

# Backup original configure
cp vhost.conf vhost.conf.`date +"%Y%m%d-%H%M%S"`
cp vhost_ssl.conf vhost_ssl.conf.`date +"%Y%m%d-%H%M%S"`

# Write configure information
sed -i -e ":begin; /###_87b4e7fc/,/87b4e7fc_###/ { /87b4e7fc_###/! { $! { N; b begin }; }; s/###_87b4e7fc.*87b4e7fc_###/$STR/g };" vhost.conf
sed -i -e ":begin; /###_87b4e7fc/,/87b4e7fc_###/ { /87b4e7fc_###/! { $! { N; b begin }; }; s/###_87b4e7fc.*87b4e7fc_###/$STR/g };" vhost_ssl.conf

# Active new configure
/usr/local/psa/admin/sbin/websrvmng -a -v

使用方法,用root用户执行:

enable_php5 <domain-user> <domain>

不支持subdomain的设置,其中sed替换多行内容的用法,可以参考我写的另外一篇文章用sed替换跨行内容

conf/vhost.conf这个文件存在之后,并不会自动被apache调用,执行/usr/local/psa/admin/sbin/websrvmng -a -v可以自动在conf/httpd.include文件中include vhost.conf了。而conf/httpd.include这个文件是由plesk维护的,用户不要直接修改它,会被plesk覆盖掉。

另外由于使用的是suexec方式执行,所以上传目录、cache等以前需要设置apache用户有可写权限的文件,现在要把owner设置为<domain-user>:psacln才行,和用户的其他文件权限一样就可以了,是不是管理起来更方便一些?

看了一下phpinfo,自动加载了位于/opt/php51/lib/php5/extensions/下的如下模块:

curl.so  gd.so        mysql.so    pdo.so        sockets.so  zlib.so
dom.so   iconv.so     mysqli.so   pdo_mysql.so  sqlite.so
ftp.so   mbstring.so  openssl.so  posix.so      xsl.so

基本上常用的都有了,但不知道/opt/php51这个目录下的内容MT什么时候给更新,还是说需要用户自己更新?

参考

MT主机控制面板Plesk合租用户使用指南

我们是7月19号租下的主机,看到有些邻居拿到控制面板权限之后不知道该怎么用,决定写下这篇指南,希望对大家有帮助,同时也能让大家了解一下MT的控制后台。我们目前使用的Plesk版本是8.2.0。

首先使用管理账号分配一下合租用户demo,权限和其他合租用户一样,但是一些服务器管理相关的界面就看不到了。为了陈述准确,主要按照英文操作界面讲解,使用中文界面的同学请自行对应一下。说明顺序主要是按照菜单的顺序来讲,不过看完之后相信你应该知道怎么用了。

登录控制面板,地址为https://fwolf.com:8443,在第三个选择框中可以选择中文操作界面CHINESE(CHINA)登录控制面板

登录进去以后,Plesk会首先要求你输入一些个人信息,建议除了邮件地址,其他的随意输就可以了,当然也可以改掉我给你们分配的初始密码: 输入个人信息

然后,就进入了正式的管理页面,首先显示的是Desktop页,先看右边,Plesk News部分基本上占据了整个屏幕,不过这都是和Plesk相关的一些新闻,比如说这个版本有什么新功能之类的,不用管它,重要的东西在下面: Desktop页的快捷管理链接

这里是Plesk的一些快捷管理链接,比较常用的管理功能放在了这里,以及你目前已经使用的磁盘空间、带宽情况。虽然比较方便,但是不推荐大家使用这里来进行设置,尤其是不太熟悉的时候,比如DonglaiJev在这里删除域名的时候就不成功,而使用正常管理功能就没事了,Plesk也不见得就没有bug嘛。

右边基本上就这么多东西了,再来看看左边的仿XP风格菜单: 菜单

从上到下,依次是:

  • Desktop,就是你刚进来的时候看到的那一页,没啥用。
  • Home,所有完整管理功能都在这里了,后面我详细介绍。
  • Sessions,谁同时在使用web控制面板和ftp。
  • Log out,退出控制面板。
  • Help,帮助,好像有中文,不过听说翻译得挺次。

账号管理

下面,开始介绍Home里的管理功能,先看一下界面: Home screen

Tools组功能

  • Edit,编辑账号信息,登录密码、电话、邮箱什么的,基本上第一次登录时要求输入的信息都可以在这里更改,再次说明,这只是Plesk要求用户输入的内容而已,和主机的管理和设置没有什么太大关系。
  • Report,本账号的相关信息及总体资源使用报告,里面还有一个Bandwidth Usage History可以查看带宽占用的历史情况。
  • Preferences,个人选项,里面可以选择Interface language界面语言(比如换成中文的);Interface skin界面的外观,不建议修改;Allow multiple sessions是否允许多人使用这个管理账号同时在线,一般这个选项我是不关的,关闭它的唯一好处就是当你登录的时候别人用你的账号就进不来了,鸡肋;最后一项字比较多的Prevent users from working with the control panel until interface screens are completely loaded.意思是当页面还没有加载完的时候,不让用户进行任何操作,建议打勾,页面没下载完的时候会显示一个载入中的标记。
  • Permissions,用户的权限,在这里你能看到自己拥有访问控制面板、创建域名、管理物理主机、管理php的safe模式等各种权限,合租用户的设置都是一样的,当然也关闭了一些用不到或者不开放的权限。
  • Limits,用户的限制,也就是用户一共被分配了多少资源,在这个页面你能看到自己拥有1个域名,无限个子域名或别名,1000MB磁盘空间,50G月流量等资源。
  • IP Pool,ip池,看看自己被分配了哪些/个ip地址,我们只有一个ip,所以大家就共用这一个了,此项不用更改。
  • Skeleton,home目录模板管理,强烈建议不要修改,并且依照模板创建的实际文件owner是root,用户通过ssh上去也更改不了,这些限制是必要的,因为每个目录都有特定的功能,比如httpdocs就是主页文件所在的目录,你要事擅自把它改成别的名字,网站就无法访问了。
  • Logo Setup,设置自己的图标,无用功能。
  • Custom Buttons,自定义按钮,把常用功能添加到左边的菜单或者Desktop页面,建议熟悉了以后再研究这个,不过也没人天天登上来研究这个吧?
  • Backup,备份,可以备份账户信息、域名以及域名下所有上传的文件,可以定时、分卷备份,备份文件还可以上传和下载,可以从备份文件中恢复文件及设置,是一个非常方便的功能。本来还可以自动把备份文件上传到其他ftp服务器上的,但我没有开此功能。
  • Add New Domain,添加域名,这就是创建网站的第一步了,后面详细讲。
  • Domain Templates,域名模板,管理多个域名的时候,通过模板能够方便设置过程,不过我们用不到。
  • Register,注册域名,不过是连到https://myplesk.com/网站的,大家还是自行到大服务商去注册域名吧,不建议使用此功能。
  • Manage,管理你在https://myplesk.com/注册的域名,同上条,无用。
  • MyPlesk.com,参见上两条,到https://myplesk.com/为你的域名购买附加的管理工具,不建议使用。
  • Traffic,当前账户下所有域名和子域名的资源占用情况。

Info组功能,目前资源使用情况一览,比如:

1 domains, 1 active domains, 86.4 MB disk space used, 459 MB traffic used

Domains组,添加了域名或子域名之后会在这里显示列表。

域名管理

现在我们就需要点上面说的Add New Domain按钮把我们的域名添加进来: 添加域名

Domain name是必填的,在创建顶级域名之前是不能创建子域名的,www建议也勾选上,Select template是选择域名模板,我们用不到,Select an IP addressIP地址也不用选,后面的Proceed to hosting setup要打勾,剩下的就是一些账号信息不用动,点ok进入主机类型设置页面: 主机设置页面

首先注意一下最上面的警告信息:

Warning: The domain resolves to another IP address (65.214.57.173). Please correct DNS settings.

当你添加域名的时候,如果此时域名并没有解析到我们的主机地址,就会出现这条提示,因为在你做好ip地址解析之前,在Plesk中再怎么设置,也是看不见效果的。我演示时添加的域名是demo.com,这个域名至少价值百万,要真是我的就好喽。

下面选择Hosting type主机类型,有三种可选:

  • Physical hosting,物理主机,就是主机放在本服务器上,我们都要选这项。
  • Standard forwarding,标准转发,就是你访问demo.com的时候,我给你跳转到google.com。
  • Frame forwarding,带frame的转发。

选好之后ok进入主机详细设置页面: 主机详细设置

  • IP Address和Certificate,IP地址与证书(ssl用),统一设置的,不能更改。
  • SSL support,是否支持ssl,也就是https://www.fwolf.com这样的访问,文件默认放到httpsdocs目录下。
  • Use a single directory for housing SSL and non-SSL content,使用ssl的站点和不使用ssl的站点共用一个目录(一套文件),在这里要注意一下,这个选项和上一个SSL support如果同时启用的话,访问可能会自动跳转到https方式,而我们的ssl证书又肯定不是经过CA认证颁发的,所以会弹出证书过期、无效的提示框,影响阅读体验,没必要的话就不要使用ssl方式了,对服务器来说也可以略微减轻一些负担。
  • FTP Login,ftp用户名,ftp地址就是我们的主机地址,如果启用了ssh,ftp用户/密码也就是ssh的用户/密码。
  • Old FTP password/New FTP password/Confirm Password,设置ftp密码。
  • Hard disk quota,磁盘限额,在管理多域名或子域名的时候有用。
  • Shell access to server with FTP user’s credentials,是否允许ssh访问,这里我限定了两个选项:禁用和chroot方式的bash shell,至于为何限制chroot方式我有过说明在方案中也讲了,选择启用的话会有一个安全提示,在这里我也提醒大家保管好自己的ftp密码,不需要的时候尽可以关掉,安全第一嘛。

下面Services组里面就是管理对各项语言的支持了,一般我们架WordPress的话选中SSI support服务器端包含、PHP supportPHP语言支持并关闭PHP 'safe_mode' on安全模式就足够了,需要架MoveType的话就选上CGI supportCGI支持,需要升级到PHP5的话再选上FastCGI support就行。如果Web statistics选上AWstats可以启用基于apache log文件的统计系统,选中accessible via password protected directory '/plesk-stat/'要求必须使用密码才能访问统计结果(plesk密码),访问地址就是类似http://www.fwolf.com/plesk-stat/的形式,另外一个统计系统Webalizer我没用过。

这些全部都选好之后,按ok就完成了域名的建立,默认返回域名管理页面,和在Home页面点域名列表中的域名进入是一样的: 域名管理页面

Domain组功能:

  • Switch Off,暂时关闭域名,大家用不到吧 :)。
  • Report,本域名的相关信息及总体资源使用报告,比账户的报告要详细些,还有网站统计等功能。
  • Limits,本域名的资源限制情况一览,是账户资源限制的子集。
  • Domain Aliases,域名别名管理,比如可以让game.com作为demo.com的别名,不过内容还是一套。
  • Domain Administrator,为这个域名单独创建一个管理员账号,可以独立登录Plesk控制面板进行管理,对于多域名账户管理有用。
  • Register,同账户管理的相应功能。
  • MyPlesk.com,同账户管理的相应功能。
  • Backup,备份,同账户管理的相应功能。
  • Custom Buttons,同账户管理的相应功能。

Services组功能:

  • Mail,邮件账号管理,MT自带邮件服务器,不过想来大家也用不到,就没有开,邮件也不适合架在合租服务器上,数据的管理、备份和迁移都是问题。
  • DNS Settings,DNS管理,如果把MT主机作为dns服务器,可以自行设置dns解析记录,不过Plesk本身提供的子域名管理结合域名注册商的解析功能我想已经能够满足大家的日常需要了,就没有开放。
  • Databases,数据库管理,可以自己创建mysql数据库,同时创建完毕之后千万不要忘记点你刚刚建好的库,然后创建数据库用户,发现有些朋友就是找不到Add New Database User,另外一个DB WebAdmin是web界面的数据库管理工具,其实就是一个phpMyAdmin
  • Certificates,如果你有自己的站点证书,可以上传过来,或者到https://myplesk.com/申请。证书属于奢侈品,一般用站点默认的即可,自己创建的证书没有CA给认证也没用。
  • Tomcat,java应用程序服务器,java功能本身就没有开,所以这个功能是灰色的不可用。

Hosting组功能:

  • setup,主机设置,如果你刚才在设置主机的时候中途停止了,可以点这个继续设置,已经设置好的可以修改配置。
  • Delete,删除域名,慎用,域名下的文件会被一并删除的。
  • Web Users,web用户,没怎么用过,大概是WebDAV的用户。
  • Subdomains,子域名管理,比如创建一个soft.demo.com,个数不限,可以单独为子域名设置ssl、ftp用户以及各种服务端语言支持,子域名的文件存放在subdomains/子域名名称目录下,和主域名是完全分开的。
  • Protected Directories,受保护的目录,并且可以为每个目录创建用户,我理解就是通过http认证的用户,并且可以设置使用http://demo:pass@fwolf.com/dir的方式访问受限资源,这个远不如程序所提供的用户管理功能方便,不建议使用。
  • Anonymous FTP,匿名ftp访问,没开放此功能。
  • Log Manager,日志管理,可以查看apache的access和error log,并且可以定义日志按文件大小或日期截断,可以压缩日志,可以把统计程序处理过的日志发送到邮箱。
  • File Manager,文件管理器,可以管理你服务器上所有文件的一个web界面。
  • SSH Terminal,网页上的ssh客户端,我用的firefox,肯定是用不了了,ie下的话应该也要安个插件什么的,需要java支持(感谢Michael补充),但仍建议改用putty等专业工具访问ssh。
  • Crontab,定时任务,和linux下的crontab一样,只是改成了web界面,连任务的时间参数格式都是一样的,可以参见man 5 crontab
  • Application Vault,应用程序仓库,通过它可以快速安装WordPress、pLog、gallery等多种程序,不过出于学习的目的,不建议大家偷懒,还是手工安装吧,另外仓库里程序的版本也稍微落后一点。
  • Site Preview,预览站点。

再往下就是此域名下的所有资源情况了: 域名下的资源情况

左边的Used是已经使用的资源数量,右边的Allowed是总共拥有的资源数量,一目了然。

小结

怎么样?有点大体概念了吧,感觉有点乱的话,我再介绍一个开始建站的最简单流程:

  • 登录控制面板。
  • 点左边菜单的Home,打开详细管理功能。
  • 点右边的Add New Domain,添加域名并设置主机信息,一路按提示操作。
  • 点已添加的域名进入域名管理页面,默认添加完域名就是这个页面。
  • Databases中创建数据库。
  • 点刚才建的数据库,创建数据库用户。
  • 差不多了,解析域名、上传文件之后,网站内容就可以访问了。

最后,再次提醒大家,虽然我尽所能保证主机的安全,仍然需要各位保管好自己的密码、设置相对复杂的密码、密码定期更改、关闭不使用的ssh账号,尽最大可能防止坏人侵害;另外就是经常备份数据,包括数据库和网站内的重要内容,并下载下来异地保存,天灾人祸不随我们的意志而转移,blog都是大家的心血,无价之宝,一定要妥善保管。

MT主机chroot简单说明

为了安全考虑,合租的MT主机上用户的ssh shell是chroot环境,这个chroot是什么概念呢?比如说本来你的文件在系统上的位置是/var/www/vhost/fwolf.com/,一般网站文件放在httpdocs目录下,私人文件放在private目录下,子域名会自动创建到subdomains目录下;那么限定用户chroot环境之后,你登录上去看到的根目录/就相当于原来的/var/www/vhost/fwolf.com/,那么网站文件也路径也就变成了/httpdocs目录,依此类推。

由于chroot限定了用户只能在自己的$HOME内活动,所以安全性得到了提升,简单说来你不用担心合租主机上别的用户会偷看你的文件。同时/bin/lib这些文件都是映射过来的,只有经过管理员选择的命令才会放在这里供使用。那么如果用户需要一个这里没有的命令怎么办呢,我在Plesk官网文档库中扒到了一篇文章,对应到咱们的环境,是这样:

chroot有一个模板,这个模板里面的文件结构和文件就是将来要让用户使用的/的环境,首先我们编辑这个“模板”,位置在/var/www/vhosts/chroot,可以看到下面bin dev etc lib tmp usr var等一干目录全有,把需要的文件复制到这个目录下的相应位置,比如tar复制到bin下:

cp /bin/tar /var/www/vhosts/chroot/bin/

然后再用两个命令启用他们即可:

/usr/local/psa/admin/sbin/chrootmng --remove --source=/var/www/vhosts/chroot --target=all
/usr/local/psa/admin/sbin/chrootmng --create --source=/var/www/vhosts/chroot --target=all

程序命令所需要的库文件也要复制到libusr/lib目录下,那怎么知道命令使用哪些库呢?用ldd就可以了:

# ldd /bin/tar
libc.so.6 => /lib/tls/libc.so.6 (0x00cd9000)
/lib/ld-linux.so.2 (0x0096f000)

参考:

MediaTemple启航

按照以前的方案和约定,虽然报名人数并没有达到预期数额,我还是启动了,现在您看到的这篇文章,我的网站,就是在mt空间上了。

注册用户的过程非常顺利,就是一定要我输入公司名称,可我明明是个人用户,所以就输了个“Personal, not a company”,为了怕遭遇和万网一样的小麻烦,还特意发邮件咨询了一下,得到答复是这项信息可以随时修改,应该不影响的。注册的时间比较巧,差不多刚刚赶上美国那边(-8时区),所以很快就通过了人工审核,拿到了账号。

然后就登录账号中心、Plesk控制面板,熟悉了一下管理功能,发现基本上常用的主机管理和账号分配功能都可以在Plesk里完成了,于是建立了第一个客户Client,把我这个网站转了过去。根据合组方案,建立了一个客户模板,每个客户拥有:

  • 自己的控制面板。
  • 自己管理域名,限1个主域名,但可以分子域名或别名。
  • 可以自行开启ssh账号,但仅限chroot环境。
  • 1G磁盘空间,包括日志,但好像不包括数据库。
  • 50G月流量,双向计算的。
  • 1个数据库,mysql 4.1

暂时没有找到cpu的限量使用功能,费用是每人每年¥200,中途退出和加入按每月¥20计。

为了节约资源,关闭了邮件相关功能,大家gmail用得不是挺好么:),为了方便交流,还建了一个google group,地址是:http://groups.google.com/group/fwolf-mt01,如果想测试一下速度,可以下载我上传的php文档,我这里测试能到几十k,还比较稳定,主机ping值300左右,国外的主机一般都是这个速度。

在我的blog中增加了一个hosted分类,专门记录和主机使用相关的资料。虽然已经取得了root权限,暂时还没有时间配php5,但安装wp没问题。这几天集中给大家开通账号,等有空了再把联络表和合组公约整理出来。

今天是周五,明后天就是周末了,所以请以前登记过的合组用户尽快与我联系,争取在周末把大家的空间都开通了。

另外我们合租的人还没有凑齐,有意的同学仍然可以报名。

Update @ 2007-08-31

截止目前,人数已够20,本主机不再接受新人。但如果大家仍然有意使用MT的话,也可以在我这里登记一下,一方面可以“候补”,另一方面如果人数够,我又有精力的话,可以考虑再开第二个主机。

Update @ 2008-07-13

第二年开张了,现在还有几个空缺,有意者请和我mail联系。