使用Apache架设代理服务器

众所周知Apache是目前最优秀的HTTP服务器。实际上它不仅能当作服务器使用,也能够被用来架设代理服务器。本文就如何使用Apache架设HTTP代理服务器进行说明。

本文将基于Win32版的Apache 2.0.47进行说明。以前的Apache 1.x版配置方法稍有不同,但这里不作说明。

(Read More)

内网FTP服务器架设指南(proftpd版)

由于最近很多人询问关于如何在内网架设FTP的问题,因此在这里把经验总结一下供大家分享。

本文将分为四个部分。第一部分阐述“什么是内网架设FTP”的问题。第二部分分析FTP协议的原理。第三部分阐述在内网中架设FTP服务器时会遇到的问题以及解决方法,使外网的用户能够访问位于内网的FTP服务器。第四部分为总结。建议读者能够将这五部分全部读完。如果只想要一个快速安装指南,那么请阅读第一部分和第四部分。

本文所使用的FTP服务器为proftpd。

(Read More)

使用fdisk调整分区结构

注:这里的fdisk不是DOS中的fdisk,而是linux的fdisk。

我的硬盘上已经划分了好多分区,每个分区上都装了不同发行版的Linux。今天想再从剩下的空间中划出分区来安装Fedora Core 3,却失败了。察看了一下分区表的结构:

Disk /dev/hda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1      1275  10241406    7  HPFS/NTFS
/dev/hda2          1276      6374  40957717+   7  HPFS/NTFS
/dev/hda3          6375      7139   6144862+  83  Linux
/dev/hda4          7140      8663  12241530    f  Win95 Ext'd (LBA)
/dev/hda5          7140      7204    522081   82  Linux swap
/dev/hda6          7205      7690   3903763+  83  Linux
/dev/hda7          7691      8177   3911796   83  Linux
/dev/hda8          8178      8663   3903763+  83  Linux

从硬盘的分区结构来看,hda5-8已经占用了扩展分区hda4的全部空间,而硬盘上的剩余空间位于hda4之后。所以要想使用硬盘上最后的剩余空间,就必须要在hda的分区表上添加一个分区,而hda的分区表已经全部被占用(hda1-4),所以当然就不能添加更多分区了。

解决办法就只有扩大hda4的大小,让它能占用整个硬盘上的剩余空间,然后将新的分区划分到hda4中。

看了一下fdisk的帮助,好像没有能够直接修改分区大小的命令,没办法只好把分区删除再重建了。为了以防万一,首先执行 # dd if=/dev/hda of=/root/mbr bs=1 count=512 备份了一下MBR,然后将备份出的/root/mbr文件放到一个安全的地方。然后记下各个分区的起始地址和结束地址以备以后恢复分区时使用。用d命令删除hda4,这样位于hda4上的hda5-8就全部被删除了。然后用 n 命令新建分区,选择 e 表示建立扩展分区,分区的起始和结束地址就使用默认值也就是让它充满剩余的所有空间。然后用 t 命令将hda4的格式修改为W95 Ext’d (LBA),编号为f。然后根据以前记下的分区起始和结束地址信息,依次建立hda5-8。最后用p命令查看分区表结构如下:

Disk /dev/hda: 80.0 GB, 80025280000 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1      1275  10241406    7  HPFS/NTFS
/dev/hda2          1276      6374  40957717+   7  HPFS/NTFS
/dev/hda3          6375      7139   6144862+  83  Linux
/dev/hda4          7140      9729  20804175    f  Win95 Ext'd (LBA)
/dev/hda5          7140      7204    522081   82  Linux swap
/dev/hda6          7205      7690   3903763+  83  Linux
/dev/hda7          7691      8177   3911796   83  Linux
/dev/hda8          8178      8663   3903763+  83  Linux

可以看出修改后的分区表除了hda4之外,其他的所有分区的结构都没有改变。这样位于hda9之后的8664-9729就可以拿出来划分新的分区了。

然后就是用 w 命令保存。为了保险起见,使用 fsck.ext3 命令检查了一下 hda6-8,保证没有出现错误。

(Read More)

Hiweed Linux体验记

上次安装Debian的时候有网友推荐我试试Hiweed,今天就尝试着装了一下。

(Read More)

FreeBSD安装手记

前一阵子下载了FreeBSD5.3 RC1版,本来想马上装的,结果安装时发现FreeBSD只能装在主分区上,而我的主分区都已经被Windows和Linux占用了,没办法只好作罢。最近得到一块4G的小硬盘,于是决定把它作为FreeBSD的领地。

(Read More)

将Redhat9升级到Kernel2.6

Redhat9自带的内核是2.4.20版,已经是几年以前的了,最近打算将它升级到最新的2.6.8.1内核。

(Read More)

在Sony C1上安装VineLinux

前几天一直在试图在Sony C1上安装Fedora Core 2,最后虽然可以用了,但是终于因为速度太慢而放弃了。听说VineLinux在老机器上跑得比较好,所以今天下载了一个VineLinux3.0版来尝试一下。 与前天安装Fedora Core 2类似,使用VineLinux的启动光盘启动。Vine的启动界面做得还不错:

vine001.jpg

选择文本方式安装(试着选了一下图形方式安装,结果由于不能识别1024x400的分辨率而无法进行)。安装程序使用的是Redhat的anaconda,所以安装界面与Redhat 8.0以前的版本非常相似:

vine002.jpg

比较令人高兴的是,VineLinux能够直接认出PCMCIA接口的光驱,这样就可以从光盘上直接进行安装了,不必再去寻找镜像服务器。选择的包不多,所以大约用了半个小时就装完了。

最后安装结束之前安装程序anaconda出现了错误——可以说安装并没有正常结束。不过重新启动机器之后,VineLinux居然能够启动了。使用 root登录,首先尝试一下启动X-window。可惜第一次启动失败,查了一下发现没有/etc/X11/XF86Config文件,于是就把以前用在 Fedora Core 2上的配置文件原封不动地复制到/etc/X11中。再次使用startx启动,还是起不来。不过如果直接执行X的话没有问题,Xserver能够运行,这说明X方面的配置没有问题。

不知道为什么startx不能用,目前暂时的解决办法是,启动xinit,这样Xserver启动之后会出现一个控制台,利用该控制台执行gnome-session。退出的时候不能使用gnome中的logout,而需要在该控制台中使用logout命令。

不管怎样,Vine在这台笔记本上的性能表现还是令人满意的。由于没有装什么软件,所以启动了一下Gimp看看效果。

Gnome的主界面。

vine003.jpg

USB设备的自动识别。

vine004.jpg

Gimp。

vine005.jpg

(Read More)

在Sony C1上安装Fedora Core 2 Linux

本文描述了我在Sony C1超小型笔记本上安装Fedora Core 2时遇到的一些问题及解决方法。

(Read More)

Debian安装记

最近在学习Linux的时候,遇到了一些关于Debian的问题。今天一时兴起就决定开始安装Debian了。

(Read More)

vim使用技巧

本文参考了vim官方网站的文档

  1. 使用*键可以向后搜索光标所在位置的单词。反之,使用# 键可以向前搜索光标所在位置的单词。第一次使用*或者#进行搜索之后,则可以使用NShift-N继续进行搜索。另外,如果设置了hlsearch选项(:set hlsearch)的话,那么使用* Shift-N则可以标记当前的单词为高亮显示。

  2. 经常会遇到这样的情况,就是在命令行上输入含有一个长长的路径的命令vi /home/username/linux/src/dir1/dir2/dir3/srcfile.c,编辑结束之后发现需要编辑同一目录下的另一个文件,这时不得不在vi中重新输入长长的路径。而将下面的脚本放在vimrc文件(Unix下为~/.vimrc,Windows下为_vimrc)中即可快速输入路径:

     "   Edit another file in the same directory as the current file
     "   uses expression to extract path from current file's path
     "  (thanks Douglas Potts)
     if has("unix")
         map ,e :e <C-R>=expand("%:p:h") . "/" <CR>
     else
         map ,e :e <C-R>=expand("%:p:h") . "\" <CR>
     endif
    

    这样编辑完第一个文件之后,在vi中输入 ,e ,然后就可以利用Tab键进行自动补齐了。

  3. 单词自动补齐:输入一个单词(例如函数、变量名等)的开头几个字母,然后按Ctrl-N或者Ctrl+P键,vim会在当前文档中查找匹配的单词并自动将输入补齐。

  4. 使用 % 键可以查找匹配的括号。

  5. 使用 [{]} 命令可以跳转到光标所在程序块的开头和结尾。

  6. 如果当前光标处的单词是一个局部变量,则使用 gd 来跳转到该变量的定义处;如果当前光标处的单词是全局变量,则使用 gD 来跳转到该变量的定义处。

  7. [i 命令可以快速察看光标所在位置的变量的定义,[d 命令可以快速察看光标所在位置的宏的定义。

  8. 流行的文本编辑器通常都有前进和后退功能,可以在文件中曾经浏览过的位置之间来回移动。在 vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。 相关帮助: :help CTRL-O :help CTRL-I :help jump-motions

  9. 如果想在源程序中不使用TAB键并保证缩进为四字符,那么在 vimrc 中加入下列设置:

       set tabstop=4
       set shiftwidth=4
       set expandtab
    
  10. 使用 set incsearch 之后可以在键入搜索关键字时即时显示匹配的位置。

  11. 使用 set hlsearch 可以将匹配进行高亮显示。进行一次搜索之后,执行 :nohlsearch:noh 可以暂时关闭本次搜索结果的高亮显示。而使用 :set nohlsearch 则可以永久关闭搜索高亮显示。 可以将:noh命令映射到一个键上,例如:nmap <silent> <C-N> :silent noh<CR>,这样就可以使用Ctrl-N来关闭高亮显示。

  12. 当打开DOS格式文件时,每行的行末都会出现^M的字符。使用如下命令可以将DOS文件转换成Unix格式文件:

    :%s/^M$//g
    

    注意,^M的输入方法是Ctrl-V Ctrl-M。

  13. 使用如下命令给正在编辑的文件添加行号: :%!cat -n

  14. 颠倒整个文件中所有行的顺序: :g/^/m0

  15. Ctrl-A 可以将光标所在位置处的数字加一,Ctrl-X可以将光标所在位置处的数字减一。

  16. 关于undo和redo: u 命令为取消上一个操作;U 为取消当前行的所有操作,即恢复当前行到原始状态;Ctrl-R为重复刚刚取消的操作。

  17. 下面几个例子:

    :r foo.txt       将foo.txt插入到当前光标的位置
    :0r foo.txt      将foo.txt插入到第一行之前
    :r !ls           在当前光标处插入文件列表
    :$r !pwd         在最后一行的下方插入当前路径
    
  18. . 命令重复上一次编辑命令。用 @: 命令重复上一次在命令行上执行的命令。

  19. xp 来交换两个字符,用 ddp 来交换两行。

  20. 在两个不同的 vim 之间复制文本:

    " transfer/read and write one block of text between vim sessions
    " Usage:
    " `from' session:
    "     ma
    "     move to end-of-block
    "     xw
    "
    " `to' session:
    "     move to where I want block inserted
    "     xr
    "
    if has("unix")
      nmap xr   :r $HOME/.vimxfer<CR>
      nmap xw   :'a,.w! $HOME/.vimxfer<CR>
      vmap xr   c<esc>:r $HOME/.vimxfer<CR>
      vmap xw   :w! $HOME/.vimxfer<CR>
    else
      nmap xr   :r c:/.vimxfer<CR>
      nmap xw   :'a,.w! c:/.vimxfer<CR>
      vmap xr   c<esc>:r c:/.vimxfer<cr>
      vmap xw   :w! c:/.vimxfer<CR>
    endif
    
  21. 使用 ga 可以看到光标下的字符的ASCII值。

  22. 删除所有空行: :%g/^$/d

  23. 如果你使用vim的win32版,那么在_vimrc文件中加入下面这一行可以使得窗口在打开时自动最大化:

    au GUIEnter * simalt ~x
    

    关于此命令的帮助请参见:

    :he win16-maximized
    
  24. 使用:X:set key=命令可以为文件加上密码,保存文件时该文件将被加密。再次打开该文件时vim将询问密码。使用:X并输入空密码或者:set key=命令可以解除加密。

  25. 使用 [I 命令可以在所有打开的文件中搜索光标所在位置的单词,并将其以列表的方式显示在屏幕下方。

  26. 使用vim作为IE的源代码查看程序。由于IE给源代码查看程序传递参数时并不会为带空格的文件名增加引号,所以需要自己写一段脚本。

    ’— gVim.vbs ‘function: Start gvim, combining multiple arguments to single file argument. ‘changes: 20010905: Quoted ‘oWShell.Run’ filename argument, allowing spaces. ‘ 20010518: Created. ‘author: Freddy Vulto fvu@fvu.myweb.nl

     ' Making variable declaration mandatory    option explicit
    

    dim oWShell, sArg, sFile

     ' Create script object    set oWShell = CreateObject("wscript.shell")
     ' Loop through arguments    for each sArg in wscript.arguments
       ' Add argument to filename
     sFile = sFile & sArg & " "    next
     ' Remove excess space    sFile = Trim(sFile)
     ' Run Vim with file argument.  Additional arguments:
     ' -R: View file readonly
     ' -c "set syntax=html": Use HTML syntax-highlighting
     '    NOTE: Use "-c ""set ft=html""" to make it work for Vim v6.    oWShell.Run _
     """C:\Vim\Vim62\gvim.exe """ & _
     "-R """ & sFile & """ " & _
     "-c ""set syntax=html"""
        
     ' Destroy script object    set oWShell = NOTHING
    
然后在注册表中添加下面的值:

    HKLM\Software\Microsoft\Internet Explorer\View Source Editor\Editor Name
    (Default)=C:\Vim\gvim.vbs

(Read More)