• Category Archives: linux

CentOS yum安装Lighttpd附带PHP和MySQL支持

一、安装lighttpd

由于CentOS官方的源中没有Lighttpd包,因此需要手动导入RPMforge源:

如果你是64位的系统:

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

如果是32位系统:

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm
rpm -Uvh rpmforge-release-0.5.2-2.el5.rf.i386.rpm

然后,你可以像这样安装Lighttpd:

yum install lighttpd

接着我们设置开机启动lighttpd并立即启动它:

chkconfig --levels 235 lighttpd on
/etc/init.d/lighttpd start

 问题1:

如果在启动的时候提示如下错误:

(network.c.203) socket failed: Address family not supported by protocol

则打开 /etc/lighttpd/lighttpd.conf 文件,找到server.use-ipv6一行配置节,将enable改为disable,基本上可以正常启动。

问题2:

如果启动时出现如下错误:couldn’t set ‘maxfiledescriptors’ Operation not permitted

解决办法:

1)关闭selinux:

# vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled后重启。

2)创建一个selinux模块允许lighttpd有权限设置filedescriptor限制

# /usr/sbin/semodule -DB
# service auditd restart
# service lighttpd restart

问题解决!问题出现原因:因为使用root权限登录的CentOS,所以不存在权限的问题,其实是selinux限制了程序设置最大文件描述符,关闭限制后就可以重启

 

二、添加php支持

yum install lighttpd-fastcgi php-cli

安装好对应的fastcgi以及php模块后对lighttpd进行配置。

1 、打开 /etc/php.ini 文件

在文件的最后(END前)添加一句

cgi.fix_pathinfo = 1

2、打开 /etc/lighttpd/modules.conf 文件

将 include “conf.d/fastcgi.conf” 一行取消注释并保存

3、打开 /etc/lighttpd/conf.d/fastcgi.conf 文件

找到 fastcgi.server这一节配置段,并将其全部反注释(使之生效),并修改为如下(注意红色为修改部分):

fastcgi.server = ( “.php” =>
( “php-local” =>
(
“socket” => “/tmp/php-fastcgi-1.socket“,
“bin-path” => “/usr/bin/php-cgi“,
“max-procs” => 1,
“broken-scriptfilename” => “enable”,
)
),
( “php-tcp” =>
(
“host” => “127.0.0.1″,
“port” => 9999,
“check-local” => “disable”,
“broken-scriptfilename” => “enable”,
)
),
( “php-num-procs” =>
(
“socket” => “/tmp/php-fastcgi-2.socket“,
“bin-path” => “/usr/bin/php-cgi“,
“bin-environment” => (
“PHP_FCGI_CHILDREN” => “16″,
“PHP_FCGI_MAX_REQUESTS” => “10000″,
),
“max-procs” => 5,
“broken-scriptfilename” => “enable”,
)
),
)

最后保存即可。

现在可以重启Lighttpd使之生效:

# /etc/init.d/lighttpd restart

三、添加php对mysql的支持

yum install php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc

上述命令已经同时安装好了php的MySQL、GD图形库、IMAP、ODBC、Pear、xml等支持组件。

在linux中扩展php中的pdo_mysql模块(编译扩展安装)

linux版本: centOS 6.4

php版本: php 5.4.15

PHP编译安装之后可能需求扩展一些组件比如pdo_mysql,gd什么的,好在php5中有一个phpize工具可以帮助我们轻松的扩展PHP而不需要重新编译PHP。

首先我们使用命令查看一下已经安装的php扩展模块:
/usr/local/php/bin/php -m

进入PHP源码包ext/pdo_mysql目录执行命令:
./configure –with-php-config=/usr/local/php/bin/php-config

然后make和make install

接着重启您的apache服务器, 再使用命令 /usr/local/php/bin/php -m 即可看到已经添加的对应的pdo_mysql模块了.

CentOS 6 时间,时区,设置修改及时间同步

显示时区
date –help 获取帮助
date -R
date +%z
上面两个命令都可
[root@localhost ~]# date -R; date +%z
Fri, 19 Oct 2012 23:34:27 +0800
+0800

主要就是后面的+0800,东八区

修改时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

时区的信息存在/usr/share/zoneinfo/下面,本机的时区信息存在/etc/localtime,利用tab键技巧,可以任意修改时区
tzselect,互动式命令,不过用了好象不太行,还是用上面的吧。

二、时间
概念:Linux时间有两个
系统时间:也叫软件时间(sys), 1970年1月1日到当前时间的秒数
BOIS时间:也叫硬件时间(hc)
显示时间
[root@localhost ~]# date;hwclock -r
2012年 10月 19日 星期五 23:39:44 CST
2012年10月19日 星期五 23时39分45秒  -0.317993 seconds

设置时间
1、date -s
[root@localhost ~]# date;hwclock -r
2012年 10月 19日 星期五 23:39:44 CST
2012年10月19日 星期五 23时39分45秒  -0.317993 seconds

没有网络的情况下可以用这个
date -s 20121019
date -s 23:40:00

2、ntpdate
ntpdate time.windows.com && hwclock -w
连网更新时间,如果成功,将系统时间,写入BOIS
hwclock -w 或 hwclock –systohc
可以做到crontab里

3、启动ntpd服务,开启后2就不能用了。
先用ntpdate更新一下,确保时间不至于差别太大
rpm -qa | grep ntp #查询一下可安装了
chkconfig –list | grep ntp #看下服务情况
chkconifg ntpd on
service ntpd start 或/etc/init.d/ntpd start
必要的话,设置一下/etc/ntp.conf,再把服务reload一下。
ntp的知识参考一下鸟哥的服务器篇

在vps上搭建linux+apache+wordpress,解决内存占用无限大的问题.

本来我的服务器上就只有 linux+mysql+lighttpd+tomcat,

后来因为想搭建个自己的博客, 所以在服务器中装上了apache+php.

在此之前, 我768mb内存只占用400+M而已, 后来成功装上了wordpress后,

发现内存占用异常的高, 服务器的内存都没了, 甚至影响到运行在tomcat容器上的客户网站运作

后来经过各种排除, 得出 wordpress 运作的情况之下, 每次刷新wordpress, 内存就增加10-20MB, 直到爆满.

后来搜索各种资料, 在wordpress群里还被人笑我的垃圾openVPS的服务器, 说啥的什么xen之类的啦, 说我的垃圾还把问题赖在wordpress上.

总之, 凭着一贯解决问题的经验告诉我, 不会是这个原因.

中间很多经历省略, 反正最终找到原因是apache的配置问题,

我的apache2.4默认配置文件中没有限制MaxConnectionsPerChild导致的,

于是在conf.cfg中添加 MaxConnectionsPerChild = 10 后发现问题解决了.

当然, MaxConnectionsPerChild 要根据个人的需要而设定,

反正我 MaxConnectionsPerChild = 100 的时候, apache的内存就占200多M…

自己看着办吧…

后来我再在群上说不是那个笑我的vps的人所说的问题, 原来只是 MaxConnectionsPerChild 没有限制而已, 那个当事人立刻哑口无言…

另外说一下题外话:

我一贯都不喜欢一些人, 总以为自己懂得很多, 然后就妄下定论并把自己定位的高高在上.

反正我做人是这样, 想问题, 必须充分考虑各种可能性, 不在自己不清楚具体状况的时候妄下定论, 这种情况下, 其实多加几个字 “在我的认知下” 会看得出一个人平时思考的深度, 当然, 装逼的除外.

修改文件目录的权限(chown chgrp)

linux下,每一个文件、每一个目录都有一个属主,并针对用户自己、用户所在组、其它所有帐号(组)分别设定读、写、执行三种权限。例如,我(假定是webusers组的floatboat帐户的拥有者)使用如下命令建立一个新的文件 touch mytestfile
然后我们使用ls -l mytestfile这一命令来查看这个文件的权限状态(关于ls命令,可以查阅本站的命令查询),可以得到如下的屏幕输出显示:
-rw-rw-r– 1 floatboat webusers 0 Feb 6 21:37 mytestfile
输出由空格分为9个部分,我们比较关心第一、三、四个字段,分别表示文件权限属性、文件所有者帐户、文件所属组。
◆使用chown命令修改文件的主人
当你新建立一个文件的时候,文件的所有者当然就是你了。这一事实只有超级用户(比如说root)才可以通过chown命令改变(例如 chown otheruser mytestfile,把mytestfile文件的属主改为otheruser)。普通用户不能把自己的文件“送”给别人,不然你把有特殊目的的程序给了root怎么办?:)
chown命令的用法比较简单。这里我先假设你现在拥有超级用户权限,那么你就可以使用如下命令将一个文件“送给”floatboat了:
chown floatboat /home/floatboat/thefileisrootcreate.txt (假定该文件是由root创建的)
修改一个目录的所有者也是类似的:
chown floatboat /home/newboat
当然,如果这个目录还有子目录及文件需要同时送给floatboat,chown也是支持-R参数的:
chown -R floatboat /home/newboat
如果你同时想修改文件/目录所属的组的话,你可以使用以下命令方便的达到目的:
chown -R floatboat.ftpusers /home/newboat
这样,不但文件主人得到了修改,文件所属的组也变成了ftpusers
◆ 修改文件的组属性
文件所属组你倒是可以改变,前提是:
1、你的超级用户。
2、你同时属于两个或两个以上的组。
两个条件你至少具备一个,你才能够把文件所属旧组变为新组。使用如下的命令将当前目录下所有html文件所属的组改为httpd:
chgrp httpd *.html
和chown命令一样,chgrp也可以使用-R参数对一个目录内的所有文件和子目录进行递归的修改组属性。
:你可以使用不带参数的groups命令查看自己属于哪个组。

vsftp 虚拟账户的 site chmod 的启用

vsftp中使用了虚拟账户,但在默认配置下虚拟账户没有site chmod的使用权限,总是报550 Permission denied 。
让vsftp虚拟用户拥有site chmod的权限的方法是:
1、让vsftp的本地用户(我的是vsuer)拥有文件的目录。

2、修改vsftpd.conf配置文件

guest_enable=YES #允许guest以vuser访问

guest_username=vsuer #允许映射到vuser

virtual_use_local_privs=YES #虚拟用户与vuser 有相同权限

另外可能还需要开启chmod,当然,它是默认开启的。
chmod_enable=YES

chkconfig命令详解

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

使用语法:
chkconfig [–add][–del][–list][系统服务] 或 chkconfig [–level <等级代号>][系统服务][on/off/reset]

chkconfig在没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回true,否则返回false。如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。

参数用法:
–add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
–del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
–level<等级代号>  指定读系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

chkconfig –list [name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。
chkconfig –add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。
chkconfig –del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
chkconfig [–level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。

运行级文件:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 – 代替运行级。第二行对服务进行描述,可以用\ 跨行注释。
例如,random.init包含三行:
# chkconfig: 2345 20 80
# description: Saves and restores system entropy pool for \
# higher quality random number generation.

使用范例:
chkconfig –list #列出所有的系统服务
chkconfig –add httpd #增加httpd服务
chkconfig –del httpd #删除httpd服务
chkconfig –level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig –list #列出系统所有的服务启动情况
chkconfig –list mysqld #列出mysqld服务设置情况
chkconfig –level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,–level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级

如何增加一个服务:
1.服务脚本必须存放在/etc/ini.d/目录下;
2.chkconfig –add servicename
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
3.chkconfig –level 35 mysqld on
修改服务的默认启动等级。

在centOS让mysql打开(取消)开机启动

通过yum安装MySQL后,默认开机时不会自动启动,需要手动设置MySQL让它开机自启动。

首先通过chkconfig命令看看MySQL在不在可管理的列表中,命令是:

chkconfig –list

如果列表中没有mysqld这个,需要先用这个命令添加:

chkconfig add mysqld

然后用这个命令设置开机启动:

chkconfig mysqld on

最后确认一下是否设置成功,如图:

crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
jexec           0:on    1:on    2:on    3:on    4:on    5:on    6:on
modules_dep     0:off   1:off   2:on    3:on    4:on    5:on    6:off
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off
named           0:off   1:off   2:off   3:off   4:off   5:off   6:off
netconsole      0:off   1:off   2:off   3:off   4:off   5:off   6:off
netfs           0:off   1:off   2:off   3:off   4:on    5:on    6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nmb             0:off   1:off   2:off   3:off   4:off   5:off   6:off
nscd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
portreserve     0:off   1:off   2:on    3:off   4:on    5:on    6:off
quota_nld       0:off   1:off   2:off   3:off   4:off   5:off   6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
restorecond     0:off   1:off   2:off   3:off   4:off   5:off   6:off
rpcbind         0:off   1:off   2:on    3:off   4:on    5:on    6:off
rsyslog         0:off   1:off   2:on    3:on    4:on    5:on    6:off
saslauthd       0:off   1:off   2:off   3:on    4:off   5:off   6:off
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
smb             0:off   1:off   2:off   3:off   4:off   5:off   6:off
snmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
snmptrapd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
udev-post       0:off   1:on    2:on    3:off   4:on    5:on    6:off
vsftpd          0:off   1:off   2:off   3:on    4:off   5:on    6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

如果对应mysqld对应的6项中有3项是on就证明已经设置成功。

close