解决因为centos PHP版本过旧升级,造成的eAccelerator错误

Posted on 二月 16th, 2011 in apache、php、mysql | No Comments »

我的Centos的版本是5.5,PHP版本是5.1.6,无法安装phpcms v9版本,于是决定升级php到5.2。可是Centos默认的源里没有比5.1.6更高版本的PHP,于是通过如下处理升级PHP:

#gedit /etc/yum.repos.d/CentOS-testing.repo

其中内容:

# CentOS-Testing:
# !!!! CAUTION !!!!
# This repository is a proving grounds for packages on their way to CentOSPlus and CentOS Extras.
# They may or may not replace core CentOS packages, and are not guaranteed to function properly.
# These packages build and install, but are waiting for feedback from testers as to
# functionality and stability. Packages in this repository will come and go during the
# development period, so it should not be left enabled or used on production systems without due
# consideration.
[c5-testing]
name=CentOS-5 Testing
baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
includepkgs=php*

然后在执行:
#yum update php

升级完毕,运行:
#php -v

出现如下错误:
PHP Warning: PHP Startup: eAccelerator: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknow on line 0

重新安装 eAccelerator即可解决,安装方法:CentOS 5.1下安装eAccelerator

解决系统重启后samba无法共享的问题

Posted on 五月 30th, 2010 in linux笔记 | 10 Comments »

我配置samba主要提供给其他windows主机简单文件共享之用。碰到的问题是每次重新启动后,都需要在xwindows状态下重新进入samba管理界面设置一下才能提供共享。

经过研究,是smbd和nmbd这两个samba的守护进程没有随重启而启动的关系。于是在启动配置文件/etc/rc.d/rc.local中加入:
/sbin/samba/smbd -D
/sbin/samba/nmbd -D

其中smbd负责samba的文件和打印服务、授权与被授权,nmbd负责samba的名字解析、浏览服务,所以nmbd不是必须的。

重新启动后,无需再次设置,即可提供其他windows主机文件共享了!

Centos升级到5.5后PAM引起的无法远程启动xwindows

Posted on 五月 18th, 2010 in linux笔记 | 8 Comments »

昨天将Centos升级到5.5后,突然发现无法通过telnet启动xwindows了。

错误提示如下图:

但是如果从本机直接运行startx的话,没有问题。
本机运行startx后,再退出,然后在telnet下再运行startx也没有问题了。

觉得这应该是与权限有关,通过Google搜索得到解决方案:
在/var/run/console/目录下新建一个当前用户的用户名的目录
然后再运行startx即可

适合旧电脑的Mini Linux选择

Posted on 五月 22nd, 2009 in linux笔记 | 10 Comments »

最近在研究适合低配置电脑的Mini Linux,我手头有一台P2 233+128M+8.4G配置的“破”电脑,想寻找适合其运行的Linux系统,需要Xwin、浏览网页、中文支持、文字处理等最基本操作。

众所周知,现在主流的Linux发行版比如Ubuntu、Federa等对于旧电脑来说也是非常庞大的系统,低配硬件不足以支持其运行Xwin等,所以我把目光转向了Mini Linux,选择对象有Puppy、Deli、slitaz。

经过初步考察发现三者均能很好的适应低配置硬件,但是Deli已经停止开发一段时间了,slitaz对于中文支持不是很好,所以仅剩下Puppy了。

我在以后会发布一些关于使用Puppy的经验与大家分享。

使用更新命令yum时出现故障的解决方法

Posted on 五月 15th, 2009 in linux笔记 | 4 Comments »

近日在运行系统更新命令yum update时候出现了如下错误提示:
Component: pirut
Summary: TBe8ae967a sqlitesack.py:94:_read_db_obj:TypeError: unsubscriptable object

Traceback (most recent call last):
  File “/usr/sbin/pup”, line 407, in _apply
    output = self.applyChanges(self.mainwin)
  File “/usr/lib/python2.4/site-packages/pirut/__init__.py”, line 813, in applyChanges
    self.checkDeps(mainwin)
  File “/usr/lib/python2.4/site-packages/pirut/__init__.py”, line 550, in checkDeps
    (result, msgs) = self.buildTransaction()
  File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 647, in buildTransaction
    (rescode, restring) = self.resolveDeps()
  File “/usr/lib/python2.4/site-packages/yum/depsolve.py”, line 704, in resolveDeps
    for po, dep in self._checkFileRequires():
  File “/usr/lib/python2.4/site-packages/yum/depsolve.py”, line 939, in _checkFileRequires
    if not self.tsInfo.getOldProvides(filename) and not self.tsInfo.getNewProvides(filename):
  File “/usr/lib/python2.4/site-packages/yum/transactioninfo.py”, line 414, in getNewProvides
    for pkg, hits in self.pkgSack.getProvides(name, flag, version).iteritems():
  File “/usr/lib/python2.4/site-packages/yum/packageSack.py”, line 300, in getProvides
    return self._computeAggregateDictResult(“getProvides”, name, flags, version)
  File “/usr/lib/python2.4/site-packages/yum/packageSack.py”, line 470, in _computeAggregateDictResult
    sackResult = apply(method, args)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 861, in getProvides
    return self._search(“provides”, name, flags, version)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 43, in newFunc
    return func(*args, **kwargs)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 837, in _search
    for pkg in self.searchFiles(name, strict=True):
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 43, in newFunc
    return func(*args, **kwargs)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 586, in searchFiles
    self._sql_pkgKey2po(rep, cur, pkgs)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 470, in _sql_pkgKey2po
    pkg = self._packageByKey(repo, ob['pkgKey'])
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 413, in _packageByKey
    po = self.pc(repo, cur.fetchone())
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 68, in __init__
    self._read_db_obj(db_obj)
  File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 94, in _read_db_obj
    setattr(self, item, _share_data(db_obj[item]))
TypeError: unsubscriptable object

Local variables in innermost frame:
item: name
db_obj: None

这个问题是由于yum的原数据损坏导致的,需要先删除原数据和数据库缓存,然后重建,问题即可解决
解决方法,依次运行以下命令:

yum clean metadata
yum clean dbcache
yum makecache

Centos下telnet服务的安装

Posted on 四月 3rd, 2009 in linux笔记 | 34 Comments »

本人linux环境:CentOS 5.3

在终端中使用 #rpm -q telnet 和 #rpm -q telnet-server 命令查询是否安装了telnet的client和server端。
一般client默认已经安装了,但是server端需要安装,安装命令:#yum install telnet-server

安装完毕后,需要开启服务:#gedit /etc/xinetd.d/telnet
将其中的disable = yes 的 yes 改成 no

开机启动设置: #gedit /etc/rc.d/rc.local
添加: /sbin/service xinetd start

接下来激活telnet并测试是否安装成功,运行命令: #/sbin/service xinetd restart

测试服务,找一台其他机器,输入命令:telnet IP
如果配置正确,系统提示输入远程机器的用户名和密码 (默认情况root用户是不能通过telnet直接登录的)
Login:
Password:

为了安全起见,我们需要改变端口,限制登录ip。
改变端口:
命令:#gedit /etc/services
找到如下内容:
telnet 23/tcp
telnet 23/udp
将端口改成你希望的,比如:
telnet 1000/tcp
telnet 1000/udp

限制登录ip:
命令:#gedit /etc/xinetd.d/telnet
修改成如下格式:
service telnet
{
disable     = no  #激活 telnet 服务,no
bind       = 192.168.1.1 #本机ip
only_from    = 192.168.0.0/16  #只允许 192.168.0.0 ~ 192.168.255.255 这个网段进入
only_from    = .edu.cn  #只有教育网才能进入!
no_access    = 210.45.160.{115,116}  #这两个ip不可登陆
access_times  = 8:00-12:00 20:00-23:59  # 每天只有这两个时间段开放服务
……
}

设置完毕,重新启动telnet服务,命令:#/sbin/service xinetd restart

端口修改的话,命令格式:telnet ip port (注意ip与port之间没有冒号,例如:telnet 192.168.1.1 1000)

Apache下实现域名301跳转

Posted on 二月 10th, 2009 in apache、php、mysql | 10 Comments »

准备把域名www.domain1.com 301跳转到www.domain2.com

在apache的域名配置文件(虚拟主机配置文件中),比如目录:/etc/httpd/conf.d/ 目录下的abc.conf是配置文件。

打开此文件

在其中设置:

<VirtualHost *:80>
  ServerName www.domain1.com
  RedirectMatch Permanent ^/(.*) http://www.domain2.com/$1  
</VirtualHost>

保存后重起apache服务器即可。

为PHP增加mbstring扩展

Posted on 十一月 7th, 2008 in apache、php、mysql | 8 Comments »

最近安装drupal,安装完毕总是提示需要PHP mbstring扩展,以便处理大字符集(Unicode 库)。

本人安装的是CentOS5.2,所以直接在root权限下运行 yum install php-mbstring

安装完毕重新启动apache。

但安装过程中,如果php有更新,那么原来的zend optimizer需要重新安装。

安装过程参考可以参见我之前的文章。

安装完成后,重新启动apache,运行php -v 发现zend optimizer和eAccelerator和Zend Extension的安装信息未出现。

并且发现/etc目录下的php.ini未更新,但/usr/local/Zend/etc下的php.ini是刚更新的。

于是备份/etc/php.ini,将/usr/local/Zend/etc/php.ini覆盖到/etc目录下,

运行命令 /usr/sbin/apachectl restart 重新启动apache后再运行php -v,可看见zend optimizer和eAccelerator和Zend Extension的信息了。

linux简单设置samba,提供windows共享

Posted on 九月 2nd, 2008 in linux笔记 | 3 Comments »

首先,启动samba服务,并且确保linux启动时自动启动。

我使用centos5.2,默认安装了samba,安装目录/etc/samba

其中有2个配置文件:smb.conf和smbusers,主要修改也在这两个文件中。
另外还有记录密码的passdb.tdb,这个文件不需要手动设置。

创建samba用户:
由于我们设置的是以“用户”为验证模式,所以该帐户必须是linux系统帐户中存在的。

先创建一个新用户(linux用户),比如linuxsmb,账户目录/home/linuxsmb。
帐户可操作自己的用户目录,所以共享也设置在这个目录中,否则如果设置在其他用户目录/home/user1或者其他目录时,会有windows共享时无权操作的问题。

随后建立samba用户:smbpasswd -a linuxsmb
设置共享密码后即可。

随后打开smbusers文件,会看到其中增加了一行 linuxsmb = linuxsmb

然后修改smb.conf文件:

在[global]中设置工作组和服务器信息:
workgroup = mygroup
server string = Samba Server Version %v

共享目录设置,一般在文件最后部分:
[smbtest] //共享名称,可以是任意
    path = /home/linuxsmb  //共享目录,应该是linuxsmb用户有权操作的目录
    writeable = yes  //写权限
    browseable = yes   //可见
    guest account = linuxsmb  //用户访问帐户

重新启动samba,使设置生效。

然后在windows中访问共享,比如//192.168.1.100(samba服务器ip),会要求输入samba帐户的用户名和密码,此处的我们填写linuxsmb帐户用户名和密码。如果能够访问,那么就设置成功了。

——————————
smbpasswd关于samba帐户的操作:
smbpasswd -a USERNAME 增加用户
smbpasswd -x USERNAME 删除用户
smbpasswd -d username 禁用用户

CentOS下删除无依赖关系软件包方法

Posted on 八月 2nd, 2008 in linux笔记 | 2 Comments »

由于经常安装和卸载软件后,会造成一些已经无依赖关系的软件包。

安装yum-utils:
#yum install yum-utils

然后执行:#package-cleanup –leaves

会出现无效软件包的列表,删除列表中的软件包即可。删除后还会生成新的无依赖关系软件包,所以之后再执行一次,直到没有列表出现!