Archive

Archive for July, 2007

Hosts用法两则

July 30th, 2007

Hosts文件是好东西,还是跨平台的,不仅可以方便局域网名称的映射、加快域名解析速度,甚至还能让你访问某些无法解析域名的网站。今天我又琢磨出这个文件的另外两种用法。

利用Hosts文件隐藏公网地址

我有一个放在公网上的地址,用apache提供的web服务,但是我并不想让它公开,而是只允许我自己用;如果架在本机,那我出门或者回家就用不了了,同理只允许ip段的访问也不方便;用一个比较“深”的地址来访问也不是什么好办法,别说spider肯定能抓到,从这里点出去的链接,referer就把你给出卖了。

解决的思路就是,利用Hosts文件作出一个只有我自己能用的“域名”,当我使用这个域名访问的时候,由于本机的Hosts文件,它会解析到正确的地址,而别人或者蜘蛛或者从referer链接回来的访问,都会由于无法解析dns而失败。

当然这种做法只是一个小把戏而已,如果别人也知道域名和ip就不保密了,所以仍然需要结合其他限制访问方式使用。另外,对于只知道ip的访问,我们还是有办法的,将apache的conf如下设置:

NameVirtualHost *
<VirtualHost *>
    DocumentRoot /var/www/apache2-default/
    ServerName w3c.com
</VirtualHost>
<VirtualHost *>
    DocumentRoot /path/to/some/file/
    ServerName autobots.fwolf.com
</VirtualHost>

这样如果不知道autobots.fwolf.com这个秘密地址,就是知道ip也进不来。另外如果把autobots.fwolf.com这个域名再作个解析,就会更有意思了。

Hosts文件结合apache的VirtualHost创建易于调试的开发环境

这就比上面的简单多了,一般搭建项目调试环境的时候,如果管理不慎,会把服务器的设置搞得一塌糊涂,另外多项目并存的情况下,需要的环境、配置各不相同,有的还需要必须在网站根目录下运行,这种情况下,就可以用Hosts文件结合apache的virtualhost让一台开发服务器变身为多台。创意参考自虚拟主机的做法。

首先还是用hosts文件定义出别名来,比如computer1、computer2都指向一台服务器,但是这两个地址就像是在用两台电脑一样了;然后再在apache中用name方式的virtualhost定义project1、project2(每个project单独使用一个配置文件更方便,每个virtualhost还能够定制相应的环境)。

现在,知道该怎么使用了吧?要不怎么说hosts文件是个好东西呢。

Update @ 2007-08-09

MT主机用户可以在Domain -> DNS Settings中添加假的A记录,只要没有用MT来作dns服务器,那么这条A记录就只会在这台主机上有效。

Related posts

Apache, Tools

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

July 27th, 2007

我们是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都是大家的心血,无价之宝,一定要妥善保管。

Related posts

Hosted , , ,

MT主机chroot简单说明

July 23rd, 2007

为了安全考虑,合租的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)

参考:

Related posts

Hosted, Linux

Apache的Satisfy详解

July 22nd, 2007

最早接触Satisfy,是这样一个情况,一个目录启用了密码保护,想单独开放它的一个子目录,让这个子目录无须密码即可访问,那么需要这样设置:

<Directory "dir1">
    AllowOverride All
    AuthName "Fwolf's Vault"
    AuthType Basic
    AuthUserFile path/to/pwd/file
    require valid-user
</Directory>
<Directory "dir1/dir2">
    Allow from all
    Satisfy any
</Directory>

这样用户访问dir2的时候就不需要输入密码了。额外说明一点,dir1和dir2都是针对文件地址的,而非url。但这样实现的原理我以前真没想过,直到我碰到了一个蹊跷的问题。

环境和上面的一样,只是我在dir2下面,想禁止对一个文件的访问,于是dir2的设置变为:

<Directory "dir1/dir2">
    Allow from all
    Satisfy any
    <Files secret_file>
        order allow,deny
        deny from all
    </Files> 
</Directory>

deny from all换成allow from someip,即绝对禁止换成只允许指定ip地址,对我后面的描述没有影响)

好了,现在访问那个应该被禁止访问的文件secret_file,由于我本身不在允许ip范围之内,所以应该是不能访问的,可是。。。怎么弹出对话框让输入用户名和密码了?如果用wget访问的话,可以清楚的看到:

401 Authorization Required
Authorization failed.

等等,401错误是密码输入错误,可我明明是绝对禁止访问的设置嘛,而且如果用浏览器访问,并且输入正确的密码居然还是可以访问呢,哪里的设置出了问题?虽然一样都是无法访问,可问题一定要搞清楚才行。

其实,仔细看看Satisfy的官方文档,答案就在其中,Satisfy就是在同时启用了AllowRequire的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足AllowRequire的条件,而Any则是满足其中之一即可。

应用到我的问题上来,从上向下看,因为设置是从上级向下逐步解析的,最下层目录的配置具有最高的优先级,可以覆盖上级目录的设置,在.htaccess里也是一样。dir1中设置密码验证启用了Require;然后下级的dir2启用了Allow,并且用Satisfy any指定用户只要ip符合all或者输入正确密码就能访问,由于ip肯定会符合all这个条件,所以等同于取消了密码限制;最后的secret_file,把Allow进行了限制,注意,在这个时候,用户的ip不符合Allow,按照Satisfy any的定义,服务器自然会去查是否符合两个条件中的另外一个是否能够通过,所以就出现了密码输入框,而不是直接403 Forbidden

现在问题清楚了吧,只要在secret_file的配置中增加一句:

Satisfy All

覆盖掉dir2中的Satisfy any设置,就可以实现预期的403拒绝访问了。

PS: 记得以前<Files (fileA|fileB)>是可以用的,现在不起作用了,要改成正则才行:<Files ~ (fileA|fileB)>

Related posts

Apache

MediaTemple启航

July 20th, 2007

按照以前的方案和约定,虽然报名人数并没有达到预期数额,我还是启动了,现在您看到的这篇文章,我的网站,就是在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联系。

Related posts

Blog, Hosted , , ,