跳到内容

文章类别:服务器

apache单独编译mod_rewrite Error: Command failed with rc=65536解决办法

(基于debian系统)

不久前博客迁移到现在的服务器上来,

刚开始只有首页可以访问,其他页面都显示found on this server,

主题自带404页面不起作用,很不友好.

将wordpress的固定链接改为默认的xxx/?xxx=xxx的模式才可以访问其他页面,

404页还是无效.

上网查的,由于apache没有开启rewrite模块,

打开apache的配置文件,没有找到关于载入rewrite模块的代码,

目录文件也没有相关的文件,得出结论:

这台主机当初编译apache是没有编译rewrite模块…

这台为所属单位贡献收入过百万的主机居然没有rewrite…

好吧,我自己编译…

find -name mod_rewrite.c

找到源代码的位置,例如:

/usr/local/src/httpd-2.2.13/modules/mappers

然后使用 Apache 安装好的 apxs 命令编译即可

/usr/local/apache2/bin/apxs -i -a -c ./mod_rewrite.c

但是我在编译时出现了如下错误:

Warning! dlname not found in /usr/local/apache2/modules/mod_rewrite.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache2/modules/mod_rewrite.so
chmod: cannot access `/usr/local/apache2/modules/mod_rewrite.so’: No such fr directory
apxs:Error: Command failed with rc=65536

上网查询得知是libtool的版本不同所致,解决方法如下:

vim /usr/local/apache2/build/libtool

按照如下修改:

build_libtool_libs=no
build_libtool_libs=yes

fast_install=needless
fast_install=yes

dlopen_support=unknown
dlopen_support=yes

dlopen_self=unknown
dlopen_self=yes

dlopen_self_static=unknown
dlopen_self_static=yes

host_alias=
host_alias=i686-pc-linux-gnu

保存后重新编译,并重启apache,

这是应该默认已经载入rewrite模块了.

Over.

WampServer localhost 图标不显示解决办法

在安装目录中找到

\wamp\bin\apache\Apache2.2.17\conf\extra\httpd-autoindex.conf

文件,

打开进行修改,

Alias /icons/ “C:/Dev/Projets/WampServer2-64b/install_files_wampserver2/bin/apache/Apache2.2.17/icons/”

<Directory “C:/Dev/Projets/WampServer2-64b/install_files_wampserver2/bin/apache/Apache2.2.17/icons”>

Options Indexes MultiViews

AllowOverride None

Order allow,deny

Allow from all

</Directory>

修改为

Alias /icons/ “icons/”

<Directory “icons”>

Options Indexes MultiViews

AllowOverride None

Order allow,deny

Allow from all

</Directory>

上面用的相对目录,

因为在 httpd.conf 里面设置了

ServerRoot “D:/wamp/bin/apache/apache2.2.17”

或者用绝对目录也行.

\wamp\bin\apache\Apache2.2.17\icons

debian配置freeNX,实现远程维护系统

前几天在工作室配置了一下freeNX,当时没有成功,

由于我是新接管的debian服务器,不太熟悉,

以前全部使用ubuntu,双击deb包就能安装,

安装完freeNX再装openssh-server,然后就能用了.

这台服务器有点不一样,

以前不知道,原来debian不能双击deb安装,以前用ubuntu偷懒了,

用dpkg -i nx***.deb把freeNX安装上,

然后apt-get install openssh-server装上ssh服务,

如果是在ubuntu上,现在用系统登录用的用户和密码就已经能远程连接了,

不过还有点问题,具体错误记不得了,就是端口不对的意思,

默认的22端口不能连接,用netstat -ap查看端口,找到ssh的端口,

尝试连接,可以连接,不过有权限问题,等会再解决,

可以修改ssh的端口:gedit /etc/ssh/sshd_config

找到 port 项,改为所需即可,

然后重启ssh,用/etc/init.d/ssh restart

这里有两个文件:ssh_config和sshd_config,

引用:”ssh_config文件是OpenSSH系统范围的配置文件,允许你通过设置不同的选项来改变客户端程序的运行方式.”

引用:”sshd_config是OpenSSH的配置文件,允许设置选项改变这个daemon的运行.”

由于不了解前面的管理员有什么意图,决定不修改ssh的端口,而修改nx配置文件,

用gedit /usr/NX/etc/server.cfg

找到 SSHDPort = “22″,改为所需即可,

然后重启nx:/usr/NX/bin/nxserver –restart

然后解决权限问题,

也许你已经发现我所有命令都没用sudo或su -,对的,

这台机子有点那个,我从前人手里接过来的时候,都是用root登录的…

先不管,我也用root登录,

不过ssh和nx默认都不能用root登录,修改配置文件,

gedit /usr/NX/etc/server.cfg

找到 EnableAdministratorLogin = “0″

将”0″改为”1″,

gedit /etc/ssh/sshd_config

找到 PermitRootLogin no

将no改为yes,

重启ssh和nx,

/usr/NX/bin/nxserver –restart

/etc/init.d/ssh restart

现在应该可以用nx远程连接管理服务器了.

后来貌似又不能用了,补充两行:

nxserver –useradd root
nxserver –usercheck root

重启并连接看状态:

/usr/NX/bin/nxserver –restart
/usr/NX/bin/nxserver –status

Over

系统管理员必守的六大规则

在复杂的计算机数据中心基础设施中,这种能力可以让你通过丰富的经验和自身的知识快速而准确地发现问题之所在。这种能力只可意会,不可言传。没有人会提供和“超自然故障排除”有关的认证的。但是,那些重量级的问题解决专家都会遵守一些通用的,不成文的规则。这是我自己使用的六个规则。注意,它们适用于大多数情况,但是并不是所有情况。

1、永远不要修改服务器或网络设备的连接接口

虽然这听上去很简单,但是,令人吃惊的是,人们经常会修改他们用于连接到某个设备的网络接口的属性,这种行为的失败率很高。有时,这条规则可能是可选的,但是,如果有一种方法可以排除潜在的隐患,何乐而不为呢?如果你不得不修改这个接口,可以在这个接口上配置一个辅助IP(secondary IP)——通过另外一个设备或子网,串行控制台,KVM等来连接。如果设备放在远程的办公室里(那里没有IT职员),那么这绝对是一条真理。

2、保证总是有办法回到原点

无论何时,只要有可能的话,都要提供一种可以把问题恢复到原始状态的方法。这意味着,在对故障磁盘做任何修改以前,应该为这个故障磁盘做一个映像,备份整个目录结构(你不可能知道你以后需要哪些文件,这样可以以防万一),或者,在你胡乱摆弄一个已经出现故障的操作系统以前,应该在物理服务器上抽取出这块磁盘的RAID1阵列。当然,在虚拟机环境下,这会更加容易一些,因为你可以简单地做一个快照。

3、文档,文档,还是文档

在所有这些规则中,这条规则也许是大家最少遵守的规则了。毫无疑问,应该把一个问题和解决方法文档化。当你处在混乱状态之中的时候,你的解决方法也许并不明智。这就是说,当一个问题尘埃落定以后,要保留一份“尸检报告”,通过这份报告,你可以重新检查当时那个解决方案采取的步骤和途径。把它写下来,然后把它保存在安全的地方,最好是放到公司内部的wiki上;并且,应该备份到几个不同的地方。推荐阅读:系统管理员应该怎样高效的书写文档。

4、在IT领域,不存在魔法,但是却存在幸运

就像 Thomas Jefferson 说的那样:“我发现我工作的越努力,我就越幸运。”在电脑IT领域,也是这样的。你花费越多的时间来研究你的基础设施,关注路由器,交换机,服务器和其他设备的特定的工作条件,你的基础设施就会运行的越流畅。这些日常工作可以让你在问题的早期阶段就发现这些问题,当问题真的发生的时候,你可以更加快速地作出反应。另外,在IT领域,有很多种方法可以“制造”幸运。例如,使用一些工具,让网络设备配置的备份自动化;如果使用这种方法的话,当你的交换机发疯的时候,你可以在几分钟内恢复它,而不是几个小时。

5、在你修改每个配置文件以前,要对它们进行备份

这条规则只适用于Unix服务器和几乎各方面的配置都提供了配置文件的网络设备。在你弄坏敏感的配置以前,首先对交换机和TFTP(Trivial File Transfer Protocol)主机的配置文件进行备份。在Unix系统上,可以简单地把something.conf cp到 something.conf.orig。
在必要的时候,如果想恢复到过去那个良好的状态,只需要简单地把文件拷贝回去,然后重启那个服务就可以了。因为注册表的存在和Windows喜欢把简单的概念复杂化,所以,在Windows系统上,这通常是不可能的。即便如此,你还是可以在胡乱摆弄注册表以前,对注册表进行备份,这样的话,如果天下大乱了。你可以重新导入备份的注册表文件。记住:当你对Windows注册表进行修改的时候,服务器的生命就掌握在你的手中。

6、监控,监控,还是监控

一点点预防工作就可以省去一个月的周末加班时间。你应该对你的数据中心的方方面面进行监控,从房间的温度,机架,和服务器,到服务器进程检查,正常运行时间检查……你还应该为所有网络设备构建一个集中式的日志系统,除此之外,你还应该安装一些趋势分析工具来监控带宽利用率,温度,磁盘空间的使用率,和其他的参数。当这些参数超过正常的阀值的时候,那些监控工具应该通过必要的手段来通知你。

趣谈Linux系统管理员学习成长路线图

随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。作为一个Linux系统管理员,我看了许多有关Linux的文档和书籍,并为学习Linux付出了许多艰苦的努力。当真正获得了一份正式的Linux系统管理工作后,我更加深刻地理解了Linux的灵魂:服务与多用户。Linux系统知识是非常广博的,但是只要掌握了重点知识,管理它并没有想象中的那么可怕。在下面我会将作为系统管理员的一些工作心得和总结出来的经验系统地介绍给大家。

一、 学习的目的

通过Linux的学习掌握UNIX的目的想必不用多说了,在这个网络人才身价倍增的年代,想靠技术吃饭又不想掌握网络和编程技术是不明智的。当一人第一次听说Linux并跃跃欲试的时候,总会提出几个?,它是什么(What)?为什么要用它(Why)?怎样学习它(How)?做为开放源码运动的主要组成部分,Linux的应用越来越广泛,从我们平时的娱乐、学习,到商业、政府办公,再到大规模计算的应用。为了满足人们的需求,各种各样的、基于Linux的应用软件层出不穷。只要具备了LinuX的基本功,并具有了自学的能力之后,都可以通过长期的学习将专项内容予以掌握。

二、 从命令开始从基础开始

常常有些朋友一接触Linux 就是希望构架网站,根本没有想到要先了解一下Linux 的基础。这是相当困难的。虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。这里笔者把它们中比较重要的和使用频率最多的命令,按照它们在系统中的作用分成几个部分介绍给大家,通过这些基础命令的学习我们可以进一步理解 Linux系统:

●安装和登录命令:login、 shutdown、 halt、 reboot 、mount、umount 、chsh
●文件处理命令:file、 mkdir、 grep、dd、 find、 mv 、ls 、diff、 cat、 ln
●系统管理相关命令: df、 top、 free、 quota 、at、 lp、 adduser、 groupadd kill、 crontab、 tar、 unzip、 gunzip 、last
●网络操作命令:ifconfig、 ip 、ping 、 netstat 、telnet、 ftp、 route、 rlogin rcp 、finger 、mail 、nslookup
●系统安全相关命令: passwd 、su、 umask 、chgrp、 chmod、chown、chattr、sudo、 pswho

三、 选择一本好的Linux书籍

无论在论坛还是读者反馈中,我们看到最多的问题往往是某个新手,在安装或使用linux的过程中遇到一个具体的问题就开始提问, 很多都是重复性的问题, 甚至有不少人连基本的问题描述都不是很清楚。这说明很多初学linux的人还没有掌握基本功。怎样才能快速提高掌握linux的基本功呢?最有效的方法莫过于学习权威的linux工具书,工具书对于学习者而言是相当重要的。一本错误观念的工具书却会让新手整个误入歧途。目前国内关于 linux的书籍有很多不过精品的不多,笔者强烈建议阅读影印本的“o’reilly原版linux图书”。

四 、养成在命令行下工作

一定要养成在命令行下工作的习惯,要知道X-window只是运行在命令行模式下的一个应用程序。在命令行下学习虽然一开始进度较慢,但是熟悉后,您未来的学习之路将是以指数增加的方式增长的。从网管员来说,命令行实际上就是规则,它总是有效的,同时也是灵活的。即使是通过一条缓慢的调制解调器线路,它也能操纵几千公里以外地远程系统。

五、用Unix思维思考Linux

由于Linux是参照Unix的思想来设计的,理解和掌握它就必须以Unix的思维来进行,而不能以Windows思维。不可否认,windows在市场上的成功很大一部分在于技术思想的独到之处。可是这个创新是在面对个人用户的前提下进行的,而面对着企业级的服务应用,它还是有些力不从心。多年来在计算机操作系统领域一直是二者独大:unix在服务器领域,Windows在个人用户领域。由此可见,用户需求决定了所采用的操作系统。不管什么原因,如果要学习Linux,那么首先要将思维从Windows的“这个小河” 中拖出来,放入Unix的海洋。

六 、学习shell

对于Shell(中文名称壳),习惯Windows的读者肯定是非常陌生的,因为Windows只有一个“Shell”(如果可以说是Shell的话),那就是Windows自己。用一句话容易理解的解释就是,shell是用户输入命令与系统解释命令之间的中介。最直观的说法,一种Shell有一套自己的命令。举一个容易理解的例子,Linux的标准Shel是Bash Shel;Solaris的shell是B shell;Linux的Shell是以命令行的方式表现出来的。读者可能会不理解,Windows从命令行“进化”到了图形界面,那么Linux现在还使用命令行岂不是一种倒退?

当初我刚刚接触Linux时就曾有过这种想法。可是后来发现,如果使用图形界面,那么分配给应用软件的资源就少了,在价格昂贵的服务器上,能够以较低的硬件配置实现同样的功能是非常重要的。

下面举例说明,一台服务器有1GB内存,假设其中512MB用于处理图形界面,若要安装一个需要784MB内存的数据库软件,惟一的办法就是扩大内存。但是如果使用命令行,系统可能只需要64MB内存,其它的内存就可以供数据库软件使用了。使用命令行,不仅是内存,而且CPU及硬盘等资源的占用都要节省很多。所以,作为服务器使用命令行是优点而不是缺点。既然Shell有这么多优点,就必须要学习它。

七、勤于实践

要增加自己Linux 的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个 Linux 发行版本,然后进入精彩的Linux世界。相信对于你自己的 Linux 能力必然大有斩获。此外,人脑不像计算机的硬盘一样,除非硬盘坏掉了或者是资料被你抹掉了,否则储存的资料将永远而且立刻的记忆在硬盘中。在人类记忆的曲线中,你必须要不断的重复练习才会将一件事情记得比较熟。

同样的,学习 Linux 也一样,如果你无法经常学习的话,学了后面的,前面的忘了。你对Linux命令熟悉后你可以开始搭建一个小的Linux网络,这是最好的实践方法。 Linux是网络的代名词,Linux网络服务功能非常强大,不论是邮件服务器、Web服务器、DNS服务器等都非常完善。当然你不需搭建所有服务,可以慢慢来。需要说明的是这个Linux网络对于初学者有两三台计算机即可。自己多动手,不要非要等着别人帮你解决问题。

八、学会使用文档

和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、 Unix的经验总结非常有参考价值通常40%的问题同样可以解决。安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。

当查找文档时, 一定要看文档是在何种版本、何种环境及何种状态下出现的何种结果。对于文档的有效性,一时还无法在操作前就知道结论如何, 那么对某个专题或问题,阅读相关的多篇文章将会节省大量的时间,还可以保证尽量“干净”的环境,有效避免因为不同操作所造成的更多问题。操作时要仔细核对各个步骤及输出的结果,尽量保持与文档一致。

九、在Linux论坛获取帮助

如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问,否则只会得到到草率的回答或者根本得不到任何答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。

你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。可能你会遇到这种情况,对于一个问题会出现不同内容回答,这时你需要通过实践来验证。另外把这个问题放在其他Linux社区请求帮助也是一种选择。如果得不到答案,请不要以为我们觉得无法帮助你。有时只是看到你问题的人不知道答案罢了。这时换一个社区是不错的选择。

十、学习专业英文

如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的,最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。即便是非英语国家的人发布技术文档,也都首先翻译成英语在国际学术杂志和网络上发表。

通过man、info等命令,可以从在线帮助中快速地获得所需要的命令和操作方法。不要害怕海量的系统帮助,仔细阅读几个man或info文档就会发现,这些帮助几乎都按照固定格式写成一命令名称、参数、参数说明、使用例子、参考等。当英语成为一种习惯, 就会自觉地查找或订阅互联网上感兴趣的英文材料。这样,在不知不觉中就已经和世界同步。

十一、在社区共享你的经验

随着Linux应用的扩展,出现了不少Linux社区。其中有一些非常优秀的社区:水木清华、其中有一些非常优秀的社区:www.linuxforum.net(国内最高水平GNU站点)、http://www.chinaunix.net/ (中国最大的Unix技术社区),随着知识的不断积累,就可以把自己动手解决一些前人没有遇到的问题写出文档在网络上共享给其他读者。这个时候,也就成为了一名“高手”。Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人,Linux高手更具有鼓励新手的文化精神。

最后是一个笔者的Linux学习的路线图(roadmap):

●了解Linux 的基础知识,这些包含了用户管理、群组的概念、权限的观念等;
●掌握至少50个以上的常用命令;
●掌握。tgz、。rpm等软件包的常用安装方法;
●学习添加外设,安装设备驱动程序(比如网卡);
●熟悉Linux文件系统 和目录结构;
●掌握vi,gcc,gdb等常用编辑器,编译器,调试器;
●理解shell别名、管道、I/O重定向、输入和输出以及shell脚本编程。
●网络的基础包括: 掌握路由概念、OSI七层网络模型、TCP/IP模型及相关服务对应的层次对于Linux学习非常重要的。然后学习Linux环境下的组网。