日历
| |||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | 2 | 3 | 4 | 5 | |||||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 | |||
| 13 | 14 | 15 | 16 | 17 | 18 | 19 | |||
| 20 | 21 | 22 | 23 | 24 | 25 | 26 | |||
| 27 | 28 | 29 | 30 | 31 | |||||
搜索标题
好好学习,天天开源!
-
sendmail错误Connection refused by [127.0.0.1]的解决
2008-04-01 08:48:49
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-03-28 20:36:49
关键词: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 21:32:47
本文详细描述了如何从源代码安装一个安全、高效的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
因为是从源代码构建整个服务器系统,所以安装了最小的系统,保证系统具备最基本的开发环境:开发工具和开发库,这样就具有了一个简洁的系统。发行版选择了 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
- Linux Server:CentOS 5.0
-
建立wheel组用户加强root安全
2007-11-16 15:08:50
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 09:10:06
Linux安装时语言选择简体中文后,在控制台(console)下显示中文时会出现乱码,造成这个问题的原因是没有正确的设置控制台(console)的语言,这可以通过修改/etc/sysconfig/i18n解决,这个文件只有一行,原始的是:
LANG="zh_CN.UTF-8"
修改为:
LANG="zh_CN.GB18030"
即可以正常显示中文。
若要设置为纯英文环境,修改为:
LANG="us_EN.UTF-8"
-
Linux常用命令用法实例
2007-11-16 08:58:44
注:以下操作基于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 21:43:10
Linux的引导是指计算机从加电(按下power键)到出现shell提示符的这个过程,这个引导过程有这么几个步骤:- BIOS
- Master Boot Record(MBR)
- LILO or GRUB
- Kernel
- init
- Run Levels
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:重启
