之前我一直都是用免费的网站空间(比如000webhost)来调试新写的网站程序,等效果满意再放到正式使用的收费空间上。开始的时候这样做挺合理,一来无需自己搭建环境,二来配置方法也和收费空间类似,可以省去不少学习成本。 但时间久了,网站越变越复杂,免费空间的一些局限都慢慢开始暴露出来。终于有一天我发现寻找一个各方面都能符合要求的免费空间比自己动手还要困难,于是决定自己搭建一个Web服务环境。
搭建的目标机器是一个处于半退休状态的P4 1.9G / 512MB RAM的电脑,没有硬盘,系统只能装在2G的U盘上。虽然这样的配置对主流的发行版如Ubuntu来说也够用了,但显然还是运行资源耗费少的小型发行版更合理一些。最终没有用我更为熟悉的Puppy Linux,而选择了SliTaz作为平台的主要原因是SliTaz的服务端软件更为齐全,用SliTaz上很不错的包管理工具很快就能把这些软件都装上。
下面介绍一下搭建和配置这个Web服务环境的一些要点。
我的这台老爷机只能支持以USB-FDD方式从U盘启动,而且启动分区只能是FAT16格式。所以我用了类似于Puppy的Ghost镜像中的技术,将U盘分为两个分区,一个FAT16分区用于放置启动管理器GRUB4DOS和内核,另一个ext2分区用于放SliTaz系统。
SliTaz以完全方式安装之后就没有了initrd阶段(实际上rootfs.gz镜像就是将系统一直保持在initrd阶段,这与unipup的概念类似),而完全依赖内核来寻找根分区。但内核在这方面的功能非常简陋,它只会根据你给的内核参数root来挂载根分区,如果在挂载的时存储设备还没有初始化完成,那么内核立刻就会kernel panic,所以用U盘完全安装方式启动,还需要增加rootdelay和rootwait让内核等待USB存储设备初始化完成,下面是我用的menu.lst
除了USB启动时的这个问题,SliTaz的安装过程总得来说很简单,之后也不需要有太多的配置,如果用的是本站上的中文SliTaz,安装完之后就有中文环境了。
另外还可以安装phpmyadmin,这个东西有个配置文件在
SliTaz的源里也有x11-vnc,可以提供X界面的远程VNC访问。但我更喜欢ssh的X11 forwarding一点。下面是我从Ubuntu中访问那台Web服务器桌面所用的脚本,需要安装Xephyr,这样可以不干扰本地的桌面管理器。
Puppy上也有专门的Web服务环境包,可以在这里下载,它用的是Puppy自带的Hiawatha web服务器。
总得来说,因为SliTaz的包管理器很方便,我觉得在SliTaz上建立Web服务器还是相当容易的,在配置方面需要的工作量不大,安装完成后体积也还是相当袖珍。
搭建的目标机器是一个处于半退休状态的P4 1.9G / 512MB RAM的电脑,没有硬盘,系统只能装在2G的U盘上。虽然这样的配置对主流的发行版如Ubuntu来说也够用了,但显然还是运行资源耗费少的小型发行版更合理一些。最终没有用我更为熟悉的Puppy Linux,而选择了SliTaz作为平台的主要原因是SliTaz的服务端软件更为齐全,用SliTaz上很不错的包管理工具很快就能把这些软件都装上。
下面介绍一下搭建和配置这个Web服务环境的一些要点。
SliTaz
SliTaz可以用tazusb以类似于Puppy中的精简(frugal)模式的方式将rootfs.gz镜像文件安装到U盘上,从U盘启动之后再完整的解压到内存中运行。这样的好处是速度快,但SliTaz没有类似Puppy“个人文件”的机制,如果需要保存对系统的改变,则须用tazusb重新构建一个rootfs.gz镜像;另一方面,这种方式也比较消耗内存,考虑到运行Web服务环境对内存要求较高,还是用slitaz-installer将SliTaz完全安装到U盘上更加合理。我的这台老爷机只能支持以USB-FDD方式从U盘启动,而且启动分区只能是FAT16格式。所以我用了类似于Puppy的Ghost镜像中的技术,将U盘分为两个分区,一个FAT16分区用于放置启动管理器GRUB4DOS和内核,另一个ext2分区用于放SliTaz系统。
SliTaz以完全方式安装之后就没有了initrd阶段(实际上rootfs.gz镜像就是将系统一直保持在initrd阶段,这与unipup的概念类似),而完全依赖内核来寻找根分区。但内核在这方面的功能非常简陋,它只会根据你给的内核参数root来挂载根分区,如果在挂载的时存储设备还没有初始化完成,那么内核立刻就会kernel panic,所以用U盘完全安装方式启动,还需要增加rootdelay和rootwait让内核等待USB存储设备初始化完成,下面是我用的menu.lst
color yellow/brown light-green/black timeout 3 title SliTaz GNU/Linux (cooking) (Kernel vmlinuz-2.6.25.5-slitaz) find --set-root /vmlinuz-2.6.25.5-slitaz kernel /vmlinuz-2.6.25.5-slitaz panic=20 rootwait=30 rootdelay=8 root=/dev/sda2另外一个问题是如果启动时有多个U盘都插在电脑上,虽然BIOS是以USB口的顺序来决定先启动哪一个,但在内核中,谁是/dev/sda、谁是/dev/sdb却是根据哪个设备先初始化完成来决定的。如果两个U盘初始化速度差不多,每次启动占据/dev/sda的可能都不一样,这样用固定的内核参数
root=/dev/sda2
就不一定能指向正确的根分区。有些系统可以用UUID来选择根分区,但这其实是initrd提供的功能,内核本身只认识/dev/sd*这种形式,所以要解决这个问题也只能依靠initrd了。这里有我做的一个简单的initrd.gz,它可以自动寻找硬盘或者U盘上的SliTaz分区,然后将其作为根分区来启动,下面是其中最重要的init启动脚本:#!/bin/sh mount -t proc proc /proc for i in 5 4 3 2 1 0; do sleep 3 for dev in `fdisk -l | grep 'Linux$' | grep -o '^/dev/[^ ]*'`; do mount -o ro "$dev" /mnt || continue if [ -f /mnt/etc/slitaz-release ]; then found="$dev" break; fi umount "$dev" done if [ -n "$found" ]; then mount -o remount,rw "$found" /mnt umount /proc exec switch_root /mnt /sbin/init fi done exec /bin/sh >/dev/console 2>&1它的原理非常简单,就是在一定时间内轮询各个分区,直到找到有
/etc/slitaz-release
文件的分区,如果最终没有找到,则运行root shell让你手动挂载根分区,以避免kernel panic。在menu.lst了这个initrd.gz之后,kernel中的几个root开头的参数就不起作用了。当然,如果不存在启动时同时插着两个U盘的情况,就完全没有必要用这个initrd,直接用内核参数控制就可以了。除了USB启动时的这个问题,SliTaz的安装过程总得来说很简单,之后也不需要有太多的配置,如果用的是本站上的中文SliTaz,安装完之后就有中文环境了。
Web服务器
SliTaz的源里有Apache和Lighttpd两种Web服务器,相对来说Lighttpd更精简、速度也更快,比较符合我期望的环境。在SliTaz下安装很简单,可以用X桌面右下角的SliTaz包管理器,或者在命令行下运行:tazpkg get-install lighttpd lighttpd-modulesLighttpd的配置文件不太复杂,下面是我修改
/etc/lighttpd/vhosts.conf
,其中增加了一个Virtual host。$HTTP["host"] =~ "(^|\.)test.cnbits.co.cc$" { server.document-root = "/var/www/puppy/" server.errorlog = "/var/log/lighttpd/test.cnbits.co.cc-error.log" accesslog.filename = "/var/log/lighttpd/test.cnbits.co.cc-access.log" url.rewrite-final = ( "^/system/test/(.*)$" => "/index.php?q=system/test/$1", "^/([^.?]*)\?(.*)$" => "/index.php?q=$1&$2", "^/([^.?]*)$" => "/index.php?q=$1" ) }这个配置的后半部分url.rewrite-final是为了支持drupal的Clean URL,功能上相当于Apache的Rewrite Engine。
PHP
用tazpkg安装php、php-common、php-gd和php-mysql这三个包,还有其它一些php的插件,各位根据需要安装。为了提高php运行速度,还可以在lighttpd中打开fastcgi,方法是修改/etc/lighttpd/lighttpd.conf
,加入server.modules += ( "mod_fastcgi", ) fastcgi.map-extensions = ( ".php3" => ".php", ".php4" => ".php", ".php5" => ".p hp" ) fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket" )))其它也没什么需要修改的了。
数据库
安装mysql、mysql-client和libmysqlclient。为了减小mysql数据所占的体积,可以去掉mysql的binary log和innodb功能,它们对我来说没有用处。方法:在/etc/my.cnf
中注释掉log-bin=mysql-bin
,加入skip-innodb
。另外还可以安装phpmyadmin,这个东西有个配置文件在
/etc/phpmyadmin/config.inc.php
,但其实它只是一个演示,不起任何作用的,只有把这个文件放到/usr/share/phpmyadmin
目录下才会有用。虽然这种设置方式有其安全性方面的考虑,但显得非常怪异,不符合一般Unix程序/etc
目录放配置、/usr/share
目录放演示的惯例。我后来没有使用phpmyadmin,感觉用mysql-client直接输入SQL指令就足够用了。远程登录
SliTaz已经自带了dropbear,一个轻量级的ssh服务器,不需要怎么配置就能用。如果希望启动电脑时就启动dropbear,则将其加入/etc/rcS.conf
文件中的RUN_DAEMONS变量中,其他服务程序也是同样的做法。另外在X环境下也可以用tazctrlbox来完成。dropbear和emacs的TRAMP兼容得不好,列目录时会出现ANSI Color Codes,原因不详,不过架个FTP服务器就行了,也不一定非要scp来传文件的。SliTaz的源里也有x11-vnc,可以提供X界面的远程VNC访问。但我更喜欢ssh的X11 forwarding一点。下面是我从Ubuntu中访问那台Web服务器桌面所用的脚本,需要安装Xephyr,这样可以不干扰本地的桌面管理器。
Xephyr -ac -screen 1024x768 :5 2>/dev/null & DISPLAY=:5.0 ssh -X -l tux test.cnbits.co.cc openbox-session
FTP
安装pure-ftpd。之后我修改了/etc/init.d/pure-ftpd
,去掉了OPTIONS中的-A
参数,这样用普通权限用户如tux登录后也能访问到除$HOME以外的目录。其它
我还编译了一个transmission的Web服务端运行在这个电脑上面,这样它也兼任BT下载机啦,呵呵。SliTaz源中的transmission没有独立的Web服务端,必须要运行那个GTK程序才行,不是特别方便。总结
安装完所有的这些服务软件之后,SliTaz的体积增加到200MB,如果用lzma压缩成rootfs.gz,估计体积在60MB左右。SliTaz论坛上有一位网友做了SliTaz LAMP,这个iso只有23MB,我没有测试,目前还是完全安装这种模式对我来说更合适。Puppy上也有专门的Web服务环境包,可以在这里下载,它用的是Puppy自带的Hiawatha web服务器。
总得来说,因为SliTaz的包管理器很方便,我觉得在SliTaz上建立Web服务器还是相当容易的,在配置方面需要的工作量不大,安装完成后体积也还是相当袖珍。
- 26863 次点击
是不是只要把beardrop 加入到 启动变量表里
我已经这样子做了,但是使用怎么样的命令才能看到这项服务已经启动
因为我现在用PUTTY无法连接到SLITAZ上。
谢谢大侠帮我解决。
netstat -nat
,如果出现那就说明ssh服务已经打开了。
最近已经对您做的SLITAZ着了迷,装了一个服务器,也开通了SSH服务器
友情提醒一下,SSH服务名应该是dropbear,你的文中刚好反过来了
为了方便网站管理,我又装了PURE—FTPD及PURE—FTPD-EXTRAS
可是我想使用PURE—FTPD的虚拟用户管理方式
在默认情况下怎么也打不开,请问怎么样才能使用pure-ftpd的虚拟用户管理方式啊
万分感谢
不太清楚pureftpd的配置,不过网上应该有很多手册的。
据说与HTTP服务器的一个参数HTTP请求字节有关系统,
请问在哪儿调整,我是用的LIGHTTPD
,可是我安装了好几次安装不上,看了一下/var/log/apache/error_log
好象是SSL方面的问题,请问该怎么样解决啊,
如果您方便的法,教我们一下如何在SLITAZ下安装APACHE啊
谢谢
The authenticity of host '192.168.1.250 (192.168.1.250)' can't be established.
RSA key fingerprint is bd:bf:10:c5:8d:76:01:21:a3:c0:bd:30:b7:ab:98:16.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.250' (RSA) to the list of known hosts.
Secure login on SliTaz GNU/Linux powered by Dropbear SSH server.
's password:
Permission denied, please try again.
's password:
密码为空也不行吗?但是我添加了一用户后也还是不行,不知何解
第一个问题的原因就是安装php之后,php安装程序自动在lighttpd.conf添加了下面这行代码,注释掉这行代码lighttpd就能工作了:
第二个问题php不工作,我没找到原因,在/var/www/下面写了个phpinfo.php,然后用浏览器访问直接看到phpinfo.php的源代码了。
请问这个php要怎么设置才能工作,谢谢
发表新评论