13.然后要装的是ZendOptimizer,这个东西可以提高30%-40%的程序执行速度,不过我装这个主要是因为phpwind是用zend-encode加了密的,要用这个解密,
不然页面都是乱码,类似这样:
Zend 2000112002110894895x?? 峐mO???R?$Z夸舃!?_6&獇?um............
ZendOptimizer安装是傻瓜型的,非常简单:
#tar zxvf ZendOptimizer-2.5.10a-linux-glibc21-i386.tar.gz
#cd ZendOptimizer-2.5.10a-linux-glibc21-i386
#./install.sh
根据提示一路ok,重启apache后,如果没问题,phpinfo里应该显示:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies
with Zend Extension Manager v1.0.8, Copyright (c) 2003-2005, by Zend Technologies
with Zend Optimizer v2.5.10, Copyright (c) 1998-2005, by Zend Technologies
可是问题偏偏就来了,我的只显示:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies with Zend Extension Manager v1.0.8, Copyright (c) 2003-2005。
phpwind依然是乱码,说明Zend Optimizer没有加载成功!又经过n小时查找终于发现apache的错误日志里有:
Failed loading /usr/local/Zend/lib/Optimizer-2.5.10/php-5.0.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer-2.5.10/php-5.0.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied
原来还是SELinux的问题!
执行 chcon ZendOptimizer.so -t shlib_t 问题解决。
Redhat Enterprise Linux中如何关闭SELinux?
红帽企业 Linux 4 包括了一个 SELinux 的实现。SELinux 代表了用户,程序以及进程间相互交流的主要变化。在这个发行版本中,SELinux 被默认安装并被开启使用。
红帽企业 Linux 4 使用在 ext2/ext3 文件系统上的扩展属性来支持 SELinux。这就意味着,当一个文件被写到默认挂载的 ext2/ext3 文件系统中时,一个扩展的属性也会被写入。
当系统有 红帽企业 Linux 4 和 红帽企业 Linux 2.1 双重启动的时候,这就可能会产生一些问题。红帽企业 Linux
2.1 内核不支持文件的扩展属性,当它遇到文件的扩展属性时,系统可能会崩溃。
有Linux桌面用户在安装了Redhat Enterprise Linux 4.0后,可能会需要关闭SELinux,正确的方法是:
修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
SELinux中的Apache和MySQL设定
Fedora Core 3 在安装时默认把SELinux的选项激活了。SELinux比普通的Linux内核提供了更高的安全性,理论上说,在系统因为未知漏洞溢出的时候,普通用户是不可能得到超级用户的权限了。但是,就是因为SELinux安全性的提高,导致我们在使用时,会发生一些我们以前从没遇到的问题。
前两天我在使用Fedora Core 3搭建PHP+MySQL的WebServer时就遇到了一些问题。现在整理一下,如果您也遇到同样的问题,那么,看过这篇文章,就应该可以轻而易举的解决了。
1. Apache - Document root must be a directory 问题。
有可能和这个问题并发的问题还有 403 Forbidden 禁止访问的问题。
现象描述:
不使用系统默认的 /var/www/html作为系统的Document Root,自己新建一个目录后修改 /etc/httpd/conf/httpd.conf 中的配置,然后重起Apache的Daemon,发现Apache无法起动,系统报错:
Document root must be a directory
但是,我们设置的DocumentRoot 的确是一个目录,而且apache用户具有可读权限。
另一种情况:新建一个虚拟目录或文件后,无法访问,显示 Forbidden, 403 Error,但文件或目录有可读权限。
问题产生的原因:
一开始我想来想去想不出为什么,但是给我感觉是权限的问题,用传统的Linux的思维方式来看,权限绝对没有问题。但是仔细一想,SELinux是不是会有其他安全的设定?
检查 avc message,查看 /var/log/messages文件,发现有类似以下内容的这样一段:
Dec 24 17:54:59 hostname kernel: audit(1098222899.827:0): avc: \
denied { getattr } for pid=19029 exe=/usr/sbin/httpd \
path=/var/www/html/about.html dev=dm-0 ino=373900 \
scontext=root:system_r:httpd_t tcontext=user_ubject_r:user_home_t \
tclass=file
嘿嘿,问题找到了,果然是SELinux的新特性搞的鬼。我把目录或文件设成了user_home_t类型,因此apache的进程没有权限,无法访问。针对Apache的进程所使用的SELinux target policy规定了apache的进程只能访问httpd_sys_content_t类型的目录或文件。
解决办法:
很简单,把目录或文件的策略类型改成 httpd_sys_content_t 就可以了
使用root用户
# chcon -t httpd_sys_content_t 目录名或文件名
然后可以用 ls -laZ 命令查看文件目录的策略类型
2. Mysql - Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
刚搞定Apache,mySQL又出问题了。
问题现象:
本机用mysql命令可以正常登录数据库并正常操作。但是在php写的页面中,不管怎样,连接mySQL数据库时,都会报如下错误:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
问题原因:
查看mysql.sock文件,存在并且任何人都可读可写。发现avc message (/var/log/messages)中同样有策略错误的记录。
用 ps -efZ|grep mysql 命令检查mysql的进程,发现mySQL使用了unconfined_t 这个未定义策略类型在运行,而mysql.sock以及mysqld文件的策略类型都是var_lib_t。很明显,这应该是个Fedora Core 3 的 BUG,SELinux target policy的BUG,redhat并没有为mySQL制定正确的target policy。
解决办法:
到redhat的bugzilla系统上搜索,果然找到了这个BUG。
Bug #: 138421
https://bugzilla.redhat.com/bugzill...g.cgi?id=138421
在这个页面找到新的target policy的补丁安装即可
补丁下载页面:
ftp://people.redhat.com/dwalsh/SELinux/FC3
你也可以从本文的附件中下载
只要下载
selinux-policy-targeted-1.17.30-2.23以上的版本就能正常使用mySQL了。
如果你原来的系统安装了 selinux-policy-targeted-source (源代码),那么你也必需下载source的rpm文件,并首先升级这个包,因为两个包有依赖关系。
补丁安装办法:
使用root用户。
先升级新的target-policy-source (如果你之前安装了这个包的话)
# rpm -Uvh selinux-policy-targeted-sources-1.17.30-2.61.noarch.rpm
升级新的target-policy
# rpm -Uvh selinux-policy-targeted-1.17.30-2.61.noarch.rpm
更新mysql相关的target policy
# rpm -q -l mysql-server | restorecon -R -v -f -
# rpm -q -l mysql | restorecon -R -v -f -
重起mysql的服务
# service mysqld restart
试一下吧,一定有效
《PHP+GD的安装》
如果是用RPM包装的PHP+Mysql+Apache,GD库默认就装好了。 如果想要编译安装这些,GD库是要自己动手安装上去的。
我编译安装(源代码)了Apache+PHP,现在要用到GD库,所以又要装GD库了
在网上找了好多资料,都不太详细或过时了。
看了一些文档,总算弄好了,现在总结出来。
在Red Hat Linux 9.0+Apache+PHP下通过。
Powered by aspbiz(at)163.com
一、下载
tar zxvf zlib-1.2.2.tar.gz
cd zlib-1.2.2
./configure
make
make install
2.安装libpng
tar zxvf libpng-1.2.7.tar.tar
cd libpng-1.2.7
cd scripts/
mv makefile.linux ../makefile
cd ..
make
make install
注意,这里的makefile不是用./configure生成,而是直接从scripts/里拷一个
3.安装freetype
tar zxvf freetype-2.1.9.tar.gz
cd freetype-2.1.9
./configure
make
make install
4.安装Jpeg
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --enable-shared
make
make test
make install
注意,这里configure一定要带--enable-shared参数,不然,不会生成共享库
5.安装GD
tar zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --with-png --with-freetype --with-jpeg
make install
6.安装PHP
tar zxvf php-4.3.9.tar.gz
cd php-4.3.9
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-gd --with-zlib --with-png --with-jpeg
--with-freetype --enable-sockets
make
make install
7.配置Apache支持PHP
8.测试
phpinfo();
?>
缺省情况下,GD库编译时并不加入JPEG支持,得修改Makefile文件。
修改Makefile文件,使得:
CFLAGS=-O -DHAVE_XPM -DHAVE_JPEG -DHAVE_LIBTTF
LIBS=-lm -lgd -lpng -lz -ljpeg -lttf -lXpm -lX11
此后,编译并安装:
make
make install
命令完成后,gd.h被拷到/usr/local/include目录下,libgd.a被拷到/usr/local/lib目录下。
Apache+Mysql+PHP(含GD,libpng,jpeg,zlib,freetype,freeTDS,awstats)安装与配置
作者:swingcoder(at)msn(dot)com
日期:2004-3-25
一、前言
安装的问题很多人都第一次要面对的,既简单又麻烦。很多老鸟都对如何安装的问题不屑,说:问来问去都是安装的问题。
希望这的贴子对新手能有点帮助,老鸟的话,就不用看了,免得拍砖。谢谢~~
本文所有软件均使用最新版(至发布日期),但是又有人说了,什么版本不稳定啦,这不好那不好啦。Cut!就此打住,我也不想为这些问题纠缠不清了,此文仅仅是安装。先让大家用起来,具体的优化安全以后再说,应了一句话“先让一部分人先富起来!“。
虽然仍然是重复劳动,但至少是自己的经验,不想丢了,写完后自己以后也可以看看,顺便整理整理。
二、目的
安装Apahe与MySQL,将php安装成支持gif,png,jpeg,freetype,mssql,mysql,需要更强大的图形处理能力,可安装ImageMagic。可以分析大流量网站日志(更大流量的网站推荐用Webalizer,不过界面简陋:-,)。
二、安装环境描述
操作系统:GNU Linux kernel 2.4.20
web服务器:Apache httpd-2.0.48 下载:
数据库服务器:mysql-standard-4.0.17-pc-linux-i686 下载:
脚本程序语言:PHP Version 4.3.5RC5-dev 下载:
其它库文件:
ZLIB:zlib-1.2.1.tar.gz 下载:http://www.zlib.net/zlib-1.2.1.tar.gz
FreeType:freetype-2.1.5.tar.gz 下载:http://twtelecom.dl.sourceforge.net/...e-2.1.5.tar.gz
PNG:libpng-1.2.5.tar.gz 下载:http://twtelecom.dl.sourceforge.net/...g-1.2.5.tar.gz
JPEG:jpegsrc.v6b.tar.gz 下载:
GD:gd-2.0.18.tar.gz 下载:http://www.boutell.com/gd/http/gd-2.0.18.tar.gz #2.0不支持GIF?好像限制又过期了
FreeTDS:freetds-stable.tgz 下载:http://ibiblio.org/pub/Linux/ALPHA/f...tds-stable.tgz
Cronolog:cronolog-1.6.2.tar.gz 下载:http://www.cronolog.org/download/cronolog-1.6.2.tar.gz
Awstats:awstats-5.9.tgz 下载:http://heanet.dl.sourceforge.net/sou...wstats-5.9.tgz
三、安装步骤
1、安装Apache
tar xzvf httpd-2.0.48.tar.gz
cd httpd-2.0.48
./configure --prefix=/usr/local/apache --enable-so
make
make install
echo "/usr/local/apache/bin/apachectl start&" >> /etc/rc.d/rc.local
#启动
/usr/local/apache/bin/apache start
2、安装MySQL
tar xzvf mysql-standard-4.0.17-pc-linux-i686.tar.gz
#此处下载的的二进制分发包,故没有./configure步骤
mv mysql-standard-4.0.17-pc-linux-i686 /usr/local/mysql
cd /usr/local/mysql
#下步cp要看服务器硬件环境,可选small,medium,large,huge
cp support-files/my-medium.cnf /etc/my.cnf
echo "/usr/local/mysql/bin/safe_mysqld --user=mysql&" >> /etc/rc.d/rc.local
groupadd mysql
useradd -g mysql mysql
./scripts/mysql_install_db
chown -R mysql.mysql data
#启动
/usr/local/mysql/bin/safe_mysqld --user=mysql&
3、安装PHP
A、先安装支持包(注意安装顺序)
建立初始目录:
#php目录
mkdir /usr/local/php
mkdir /usr/local/modules
#freetype目录
mkdir /usr/local/modules/freetype
#jpeg目录
mkdir /usr/local/modules/jpeg6
mkdir /usr/local/modules/jpeg6/bin
mkdir /usr/local/modules/jpeg6/lib
mkdir /usr/local/modules/jpeg6/include
mkdir /usr/local/modules/jpeg6/man
mkdir /usr/local/modules/jpeg6/man/man1
#gd目录
mkdir /usr/local/modules/gd
#freeTDS目录
mkdir /usr/local/modules/freetds
A1、安装zlib
tar xzvf zlib-1.2.1.tar.gz
cd zlib-1.2.1
#不要用--prefix自定义安装目录,影响gd的安装
./configure
make
make install
A2、安装freetype
tar xzvf freetype-2.1.5.tar.gz
cd freetype-2.1.5
./configure --prefix=/usr/local/php/modules/freetype
make
make install
A3、安装libpng
tar xzvf libpng-1.2.5.tar.gz
#不要用--prefix自定义安装目录,影响gd的安装
cd libpng-1.2.5
cp scripts/makefile.std makefile
make test
make install
A3、安装jpeg
tar xzvf jpegsrc.v6b.tar.gz
./configure --prefix=/usr/local/php/modules/jpeg6 --enable-shared --enable-static
make
make install
A4、安装GD
tar xzvf gd-2.0.18.tar.gz
./configure --prefix=/usr/local/php/modules/gd --with-jpeg=/usr/local/php/modules/jpeg6 --with-png --with-zlib --with-freetype=/usr/local/php/modules/freetype
make
make install
A5、安装FreeTDS
tar zxvf freetds-stable.tgz
cd freetds-stable
./configure --prefix=/usr/local/php/modules/freetds
make
make install
B、安装Cronolog
tar zxvf cronolog-1.6.2.tar.gz
cd cronolog-1.6.2
./configure
make
make install
C、安装PHP
tar xzvf php4-STABLE-latest.tar.tar
cd php4-STABLE-latest
./configure --prefix=/usr/local/php --with-jpeg=/usr/local/php/modules/jpeg6 --with-zlib --with-png --with-gd=/usr/local/php/modules/gd --with-freetype=/usr/local/php/modules/freetype --with-mssql=/usr/local/php/modules/freetds --enable-magic-quotes --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql
make
make install
四、一些特别的配置
1、配置Apache
修改httpd.conf文件:
#增加处理性能
MaxClient 250
StartServers 10
#设置PHP
LoadModule php4_module libexec/libphp4.so
#AddModule mod_php4.c
AddType application/x-httpd-php .php
#This directive configures what you return as the Server HTTP response Header
ServerTokens Minor
#Optionally add a line containing the server version and virtual host name to server-generated pages
ServerSignature Off
#设置日志存储格式
CustomLog "|/usr/local/sbin/cronolog /usr/local/apache/logs/access_%y%m%d.log" combined
2、配置Awstat
#!!此程序需要perl的支持!!
tar xzvf awstats-5.9.tgz
mkdir /usr/local/apache/cgi-bin/webstat/
mkdir /usr/local/apache/weblog/
cd awstat/www/
cp icon/* /usr/local/apache/icons/
cp cgi-bin/ /usr/local/apache/cgi-bin/webstat/
cd /usr/local/apache/cgi-bin/webstat/
cp awstat.model.conf awstat.www.yourdomain.com.conf
#修改awstat.http://www.yourdomain.com.conf中下...�用默认值:
vi awstat.www.yourdomain.com.conf
LogFile="/usr/local/apache/logs/access_%YY%MM%DD.log"
SiteDomain="www.yourdomain.com"
DirData="/usr/local/apache/weblog/"
DirIcons="/icons"
#修改awstats.pl为0777
chmod 0777 awstats.pl
#设置计划任务
crontab -e
55 23 * * * (/usr/local/apache/cgi-bin/webstat/awstats.pl -update -config=www.yourdomain.com>/dev/null)