日历

« 2008-07-09  
  12345
6789101112
13141516171819
20212223242526
2728293031  

最新来客

统计信息

  • 访问量: 2072
  • 日志数: 12
  • 建立时间: 2007-01-03
  • 更新时间: 2008-04-05

RSS订阅

好好学习,天天开源!

我的最新日志

  • sendmail错误Connection refused by [127.0.0.1]的解决

    2008-4-01

        centos5.1的sendmail不能在本地用户之间发生邮件,但之前是可以的,输入:
        netstat -an|grep 25
         tcp   0   0 127.0.0.1:25  0.0.0.0:*   LISTEN
         unix  2   [ ]   DGRAM             7325
        ps -ef|grep sendmail
         root      3158     1  0 Mar31 ?        00:00:00 sendmail: accepting connections
         smmsp     3166     1  0 Mar31 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue
         root      6490  6443  0 08:28 pts/1    00:00:00 grep sendmail
        说明sendmail运行正常,那么问题出在哪里呢,查看mail日志,/var/log/maillog,重复出现:
    Mar 31 04:02:36 www sendmail[6602]: m2UK2DeH006602: from=root, size=2028, class=0, nrcpts=1, msgi\
    d=<200803302002.m2UK2DeH006602@www.ky-sch.cn>, relay=root@localhost
    Mar 31 04:02:36 www sendmail[6602]: m2UK2DeH006602: to=root, ctladdr=root (0/0), delay=00:00:23, \
    xdelay=00:00:00, mailer=relay, pri=32028, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred\
    : Connection refused by [127.0.0.1]
        据此可以得出问题所在:连接被本地[127.0.0.1]拒绝,这就应该是本地的localhost出了问题,查看/etc/hosts,看到有这么一行:
        127.0.0.1      www.ky-sch.cn   www     localhost.localdomain   localhost
        删除www.ky-sch.cn、www,然后重起sendmail:
        service sendmail restart
        问题解决。
        提示:linux下的多个网络程序需要使用/etc/hosts文件,如没有必要,不要修改这个文件。
  • 在Fedora 8安装VirtualBox虚拟机

    2008-3-28

        关键词:Fedora8 kernel VirtualBox
        我喜欢Linux,坚持使用Linux,并能用Linux做绝大部分的事,但是有时仍然需要使用windows(这样的需求正逐步减少),这是因为有些软件必须运行在windows下面,这时我就不得不忍受“漫长”的系统切换时间,而最让我不能忍受的事是我必须停下手头的工作,其原因仅仅是因为要使用windows下面的软件!这样的感觉太不爽了,为了彻底改变这种情况,于是我想到了虚拟机。现在虚拟机做的最好的是vmware,但那是商业版,而Fedora自带的Xen对硬件要求较高,不过我们还有一个开源的VirtualBox,感谢VirtualBox的开发团队,让我们还有选择。
        VirtualBox网站提供了Fedora8的rpm包,所以VirtualBox的安装非常简单,但是为了让VirtualBox工作起来,还必须做一些配置,主要是不同的内核架构方面的配置。
        下面是我的所有操作步骤,在Fedora8+gnome下面通过,希望对那些和我一样在linux工作,但有时又要切换到windows的或者想安装VirtualBox的朋友有帮助。
        那么,我们该如何开始呢?当然首先从安装VirtualBox开始了。
        从VirtualBox的官方网站www.virtualbox.org下载Fedora8的rpm安装包,双击安装。当然你完全可以从源代码包安装,如果你愿意的话。
        VirtualBox安装好后,你可以用两种方法启动它:
        1、在shell下面输入:VirtualBox(注意大小写)
        2、在“应用程序”菜单选择“系统工具”->“Innotek VirtualBox“
        无论你用那种方式,都能启动VirtualBox,但是你还不能运行虚拟机,原因很简单,Fedora8默认安装的是i586架构的kernel,而VirtualBox需要i686的kernel,这个可以在使用shell方法运行VirtualBox时得到提示信息:
        WARNING: The vboxdrv kernel module is not loaded. Either there is no module
             available for the current kernel (2.6.23.1-42.fc8) or it failed to
             load. Please recompile the kernel module and install it by

               sudo /etc/init.d/vboxdrv setup

             You will not be able to start VMs until this problem is fixed.
        这段话的大致意思是:vboxdrv内核模块没有加载,可能的原因是没有2.6.23.1-42.fc8内核的模块或者模块加载错误。请使用下面的命令重新编译安装这个模块:
               sudo /etc/init.d/vboxdrv setup
        在你修复这个问题之前你不能启动虚拟机。
        有一个概念必须明确,就像我前面说的一样,你安装VirtualBox后能够正常启动VirtualBox,但是你无法运行虚拟机,即你不能新建一个虚拟机,然后安装windows系统,因为VirtualBox只是一个虚拟机管理软件,还不是具体的可以运行的虚拟机。
        那么,该如何解决这个问题,你可能会想到,既然它叫你重新编译安装vboxdrv模块,那就编译吧,应该就可以解决问题了,我也是这么做的:
        输入命令:sudo /etc/init.d/vboxdrv setup,系统提示你没有kernel的编译包,于是又用yum安装kernel的编译包,再次输入命令,编译安装成功了,这下应该可以了吧,再次输入:VirtualBox,可是仍然没有解决问题,这次出现的提示信息和第一次的不同,因为我的系统已经正确运行VirtualBox,当时又没有将第二次输入VirtualBox命令的信息保存下来,所以这里我不能将这个信息贴出来,只记得在google上用这个错误信息搜索了一番,然后找到了下面这个贴子,正是这个贴子解决了我所有的问题:
        http://forums.fedoraforum.org/showthread.php?t=139751
        看回上面的错误信息,可以看到还有第二个错误,那就是加载vboxdrv加载错误,其实这个才是真正的错误:即kernel的架构与VirtualBox的不相符,Fedora8默认安装的是i586架构,而Virtualbox要求的是i686架构,这个信息可以用下面的命令获取:
        uname -a
            Linux free81 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:05:10 EDT 2007 i686 i686 i386 GNU/Linux
        这个命令并不能得出正确的信息。
        rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n"|grep kernel|sort
            kernel-2.6.23.1-42.fc8.i586
            kernel-2.6.23.15-137.fc8.i686
            kernel-devel-2.6.23.15-137.fc8.i686
            kernel-headers-2.6.23.15-137.fc8.i386
            kernel-xen-2.6.21-2950.fc8.i686
        从这里我们可以看出我们现在的内核是第一个i586的。
        知道了问题所在,我们就可以解决了:
        首先,你的系统应该安装“yum-utils“组件,这个在我的系统中是默认安装的,如果你的系统没有安装,应该先安装它: su -c "yum install yum-utils"。
        然后,更新内核: yum update kernel
        下载i686架构的kernel: yumdownloader kernel.i686
        安装i686架构的kernel,这有两种情况:如果i686架构的kernel包比系统当前安装的kernel大(在更新当前内核时可以看到当前内核的大小,这也是首先更新内核的原因): su -c "rpm -ivh kernel-2*.i686.rpm"
        否则: su -c "rpm -ivh --replacefiles --replacepkgs kernel-2*.i686.rpm",覆盖当前内核。
        最后,安装了新的i686架构的内核后,重新编译安装vboxdrv内核模块:sudo /etc/init.d/vboxdrv setup
        至此,VirtualBox安装成功,可以新建虚拟机,并安装windows系统了!
        补充:关于用户权限问题,将用户添加到组:vboxusers,则用户将具有读写/dev/vboxdrv的权限,可以解决虚拟机系统启动的-1909错误,当然,修改/drv/vboxdrv也是一个方法。多谢snail指正!
  • 从源代码构建Linux服务器

    2007-12-16

        本文详细描述了如何从源代码安装一个安全、高效的Linux服务器,提供一系列的服务:WEB、DATABASE、FTP、EMAIL、DNS、FIREWALL等,使用了下面的开源软件:
       
    • Linux Server:CentOS 5.0
    • Web Server: Apache 2.2.6
    • PHP 5.2.4
    • Database Server: MySQL 5.0.45
    • FTP Server: proftpd
    • Webalizer for web site statistics
        一、Linux基本系统的安装
        因为是从源代码构建整个服务器系统,所以安装了最小的系统,保证系统具备最基本的开发环境:开发工具和开发库,这样就具有了一个简洁的系统。发行版选择了 CentOS,CentOS 是从当前最流行的商业版 Linux -- Red Hat Enterprise Linux(RHEL)的源代码包重新编译而成,修正了 RHEL 已知的一些 Bug,除了没有 RHEL 一样的技术支持,其他方面与 RHEL 完成一样,所以,其稳定性值得我们信赖。

        为了便于安装,将所有文件下载到/usr/local/src,将这里作为工作目录。

        二、Apache的安装
        1.下载
            http://httpd.apache.org
        2.解压
            shell> tar xvjf httpd-VERSION.tar.bz2
        3.配置
            shell> cd httpd-VERSION
            shell> ./configure --prefix=/usr/local/apache2 --enable-module=shared
        4.编译
            shell> make
        5.安装
            shell> make install
        6.设置
            shell> cd /usr/local/apache2
            shell> emacs conf/httpd.conf
              ServerName www.example.com        #设置域名
              DocumentRoot /srv/www/example     #设置网站存放位置
              <Directory "/srv/www">            #设置目录,如果不使用虚拟主机,这里应设置为与DocumentRoot一致。
        7.启动
            shell> bin/apachectrl start

        三、Mysql的安装
        1.下载
            http://dev.mysql.com
        2.为mysqld增加一个登录用户和组
            shell> groupadd mysql
            shell> useradd -g mysql mysql
        3.解压
            shell> tar xvzf mysql-VERSION.tar.gz
        4.配置
            shell> cd mysql-VERSION
           
    shell> ./configure --prefix=/usr/local/mysql --with-charset=gb2312        #设置数据库支持中文字符集
       
    5.编译
           
    shell> make
       
    6.安装
            shell> make install
       
    7.拷贝配置文件
            shell> cp support-files/my-medium.cnf /etc/my.cnf
        8.改变所有权
            shell> cd /usr/local/mysql
            shell> chown -R mysql .
            shell> chgrp -R mysql .
           
    shell> chown -R root .
            shell> chown -R mysql var
        9.创建MySQL授权表
            shell> bin/mysql_install_db --user=mysql
        10.运行MySQL
            shell> bin/mysqld_safe --user=mysql &      #不推荐以root用户运行MySQL,用--user选项以mysql用户运行
        11.设置root密码
            shell> bin/mysqladmin -u root password yourpassword      #将password替换为你的密码
        12.自动启动和停止MySQL
            shell> cp /usr/local/src/mysql-VERSION/support-files/mysql.server /etc/init.d/mysql
            shell> chmod +x /etc/init.d/mysql
            shell> chkconfig --level 345 mysql on
        四、安装php(支持gd)
        1.下载
            php所需要的软件包:
            php: http://www.php.net
            libxml2: http://xmlsoft.org
            libxslt: http://xmlsoft.org
            GD库所需要的软件包:
           
    jpeg6: http://www.ijg.org
            png: http://www.libpng.org
            zlib: http://www.zlib.net
            freetype: http://www.freetype.org
            curl: http://curl.haxx.se
            gd: http://www.libgd.org
            Zend引擎:
            zend: http://www.zend.com
        2.安装gd库
            安装jpeg6:
            shell> mkdir /usr/local/lib/jpeg6
            shell> mkdir /usr/local/lib/jpeg6/bin
            shell> mkdir /usr/local/lib/jpeg6/lib
            shell> mkdir /usr/local/lib/jpeg6/include
            shell> mkdir /usr/local/lib/jpeg6/man
            shell> mkdir /usr/local/lib/jpeg6/man/man1
            shell> tar xvzf jpegsrc.v6b.tar.gz
            shell> cd jpeg-6b
            shell> ./configure --prefix=/usr/local/jpeg6/ --enable-shared --enable-static
            shell> make
            shell> make install
            安装libpng:
            shell> tar xvjf libpng-1.2.23.tar.bz2
            shell> cd libpng-1.2.23
            shell> cp scrīpts/makefile.std makefile
            shell> make
            shell> make install
            安装freetype:
            shell> tar xvjf freetype-2.3.5.tar.bz2
            shell> cd freetype-2.3.5
            shell> ./configure --prefix=/usr/local/lib/freetype
            shell> make
            shell> make install
            安装zlib:
            shell> tar xvjf zlib-1.2.3.tar.bz2
            shell> cd zlib-1.2.3
            shell> ./configure
            shell> make
            shell> make install
            安装curl:
            shell> tar xvjf curl-7.17.1.tar.bz2
            shell> mkdir /usr/local/lib/curl
            shell> cd curl-7.17.1
            shell> ./configure --prefix=/usr/local/lib/curl
            shell> make
            shell> make install
            安装gd:
            shell> tar xvjf gd-2.0.33.tar.bz2
            shell> mkdir /usr/local/lib/gd2
            shell> cd gd-2.0.33
            shell> ./configure --prefix=/usr/local/gd2 --with-jpeg=/usr/local/jpeg6/ --with-png --with-zlib --with-freetype=/usr/local/freetype/
            shell> make
            shell> make install
        3.安装php
            安装libxml2:
            shell> tar xvzf libxml2-2.6.30.tar.gz
            shell> mkdir /usr/local/lib/libxml2
            shell> cd libxml2-2.6.30
            shell> ./configure --prefix=/usr/local/lib/libxml2
            shell> make
            shell> make install
            安装libxslt:
            shell> tar libxslt-1.1.22.tar.gz
            shell> mkdir /usr/local/lib/libxslt
            shell> cd libxslt-1.1.22
            shell> ./configure --prefix=/usr/local/lib/libxslt --with-libxml-prefix=/usr/local/lib/libxml2
            shell> make
            shell> make install
            安装php:
            shell> tar xvjf php-5.2.5.tar.bz2
            shell> cd php-5.2.5
            shell> ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql/ --with-curl=/usr/local/lib/curl/ --enable-ftp --with-libxml-dir=/usr/local/lib/libxml2/ --enable-soap --with-xsl=/usr/local/lib/libxslt/  --with-jpeg-dir=/usr/local/lib/jpeg6/ --with-zlib-dir=/usr/local/lib/ --with-png-dir=/usr/local/lib --with-freetype-dir=/usr/local/lib/freetype/ --with-gd=/usr/local/lib/gd2/ --enable-magic-quotes --enable-mbstring --with-bz2=/usr/lib
            shell> make
            shell> make install
            shell> cp php.ini-dist /usr/local/php/lib/php.ini
        4.配置apahce
            在httpd.conf找到
            AddType application/x-compress .Z
            AddType application/x-gzip .gz .tgz
            在后面添加:
            AddType application/x-httpd-php .php
            AddType application/x-httpd-php-source .phps
            找到
            <IfModule dir_module>
                DirectoryIndex index.html
            </IfModule>
            添加:
            <IfModule dir_module>
                DirectoryIndex index.html index.php
            </IfModule>
        5.安装Zend
            shell> tar xvzf ZendOptimizer-3.3.0a-linux-glibc21-i386.tar.gz
            shell> ./install
        五、安装Proftpd
        1.下载
            http://www.proftpd.org
        2.配置
            shell> tar xvjf proftpd-1.3.1.tar.bz2
            shell> cd proftpd-1.3.1
            shell> ./configure --prefix=/usr/local/proftd
        3.编译
            shell> make
        4.安装
            shell> make install
        5.设置
            shell> cd /usr/local/proftpd
            shell> emacs etc/proftpd.conf
            将
            #DefaultRoot ~
            改为
            DefaultRoot ~
       
    六、安装webalizer
        1.下载
            http://www.webalizer.org
        2.配置
            shell> tar xvjf webalizer-2.01-10-src.tar.bz2
            shell> cd webalizer-2.01-10
            shell> ./configure --prefix=/usr/local/webalizer --with-language=chinese --with-gdlib=/usr/local/lib/gd2/lib/ --with-gd=/usr/local/lib/gd2/include/
        3.编译
            shell> make
        4.安装
            shell> mkdir /usr/local/webalizer
            shell> mkdir /usr/local/webalizer/bin
            shell> mkdir /usr/local/webalizer/man
            shell> mkdir /usr/local/webalizer/man/man1
            shell> make install
  • 建立wheel组用户加强root安全

    2007-11-16

        root用户是Linux中比较特殊的用户,具有控制整个系统的权限,默认情况下,任何普通用户都可以通过su命令获得root用户的权限,对系统进行任何的操作。为了加强系统安全,Linux提供一个管理员组,只有属于这个组的用户才能使用su命令获得root权限,这个组通常为wheel。
        为了实现属于wheel组的用户才具有root权限,需要两个步骤:
        1、将用户添加进wheel组:
        usermod -G wheel username
        2、修改/etc/pam.d/su,将
        #auth            required        pam_wheel.so use_uid
        修改为
        auth            required        pam_wheel.so use_uid


  • 改变Linux控制台(console)的语言环境

    2007-11-16

        Linux安装时语言选择简体中文后,在控制台(console)下显示中文时会出现乱码,造成这个问题的原因是没有正确的设置控制台(console)的语言,这可以通过修改/etc/sysconfig/i18n解决,这个文件只有一行,原始的是:
        LANG="zh_CN.UTF-8"
        修改为:
        LANG="zh_CN.GB18030"
        即可以正常显示中文。
        若要设置为纯英文环境,修改为:
        LANG="us_EN.UTF-8"
  • Linux常用命令用法实例

    2007-11-16

    注:以下操作基于centos5,LANG="zh_CN.GB18030"
    命令:date
    功能:显示、设置日期和时间
    举例:
        显示时间:
                格式:date
                例如:[root@www ~]# date
                结果:[root@www ~]# 2007年 11月 16日 星期五 08:46:03
        设置日期:
                格式:date -s yyyymmdd
                例如:[root@www ~]# date -s 20071116
                结果:[root@www ~]# 2007年 11月 16日星期五 00:00:00
        设置时间:
                格式:date -s hh:mm:ss
                例如:[root@www ~]# date -s 08:02:30
                结果:[root@www ~]# 2007年 11月 16日星期五 08:02:30
  • Linux引导过程

    2007-10-09

        Linux的引导是指计算机从加电(按下power键)到出现shell提示符的这个过程,这个引导过程有这么几个步骤:
    • BIOS
    • Master Boot Record(MBR)
    • LILO or GRUB
    • Kernel
    • init
    • Run Levels
        一、BIOS
        PC机的BIOS一般由两部分组成:POST(Power-On Self Test,加电后自检)代码和运行时服务代码。加电后CPU就从地址 FFFF0H 处开始执行指令,实际上这是一条跳转指令,跳到真正的系统BIOS的POST代码处开始运行。POST代码完成硬件的检测和本地设备的枚举与初始化工作,当POST完成后,这段代码会从内存中清除,然后运行时服务代码开始运行。运行时服务代码检测CMOS配置,按照CMOS设定的顺序搜索处于活动状态且可以引导的设备,包括硬盘、软盘、CD-ROM、网络设备等一切可以引导的设备。一旦找到可引导的设备,BIOS就将引导设备里的引导代码加载到RAM中,然后将控制权交给引导代码,由引导代码完成系统的继续引导,至此,BIOS的工作也完成了。
        二、Master Boot Record(MBR)
        MBR是一个512字节大小的扇区,位于硬盘的第一个扇区(0 道 0 柱面 1 扇区),由三部分组成:主引导程序、硬盘分区表及扇区结束标志字(55AA),就是我们通常所说的主引导记录。
        从硬盘引导时,BIOS将MBR加载到内存,然后将控制权交给MBR。MBR的主引导程序开始运行,在硬盘分区表中搜索活动分区,找到后就将活动分区的引导程序加载到内存并将控制权交给它,由引导程序完成操作系统的引导。MBR的主引导程序是和具体的操作系统无关的。
        三、LILO or GRUB
        由于单一的MBR只能引导一个操作系统,当需要引导多个操作系统时就会出现问题,这时就需要更灵活的引导加载程序。
    LILO和GRUB是众多引导加载程序当中的两个,主要用于引导Linux。
        安装linux时可以选择将GRUB或者LILO安装到MBR中,这时就替代了MBR里的主引导程序,当BIOS加载MBR时实际加载的是
    GRUB或者LILO的代码,由GRUB或者LILO完成Linux内核映象的加载。
       
    四、Kernel
        当内核被加载到内存之后,控制就转到内核了,由内核完成Linux系统启动的所有准备工作。但内核并不是一个可运行的程序,而是一个压缩过的内核映象,所以首先要做的就是解压内核映象。解压后内核首先进行设备的初始化,然后加载系统的根文件系统,一旦根文件系统加载成功,内核就运行系统的第一个进程:init进程。
        五、init
        init进程是系统运行的第一个进程,也是系统所有进程的父进程,它的进程号永远是1。init的主要作用就是运行/etc/inittab脚本,为系统的加载做最后的工作。init所做的最后一件事就是运行/bin/login程序,让用户登录进入shell。
        至此,Linux系统的引导就完成了。
        六、Run Levels
        Linux的运行级别可以让用户引导系统时进入不同的模式。
    • 0:挂机
    • 1:单用户模式
    • 2-4:自定义模式
    • 5:X11(xwindows)
    • 6:重启
Open Toolbar