Tag Archive: Apache


Linux下为PHP安装Zend Optimizer

安装Zend Optimizer的过程自然是很顺利,按照其安装向导一路下去就安装成功了。可是安装完成以后用phpinfo一看,Zend Optimizer没有随Web服务起来啊。到log里去看了下,无法加载Zend Optimizer,估计是SELinux的缘故。搜索了下,果然是。找到Zend Optimizer的动态库安装目录,默认应该是/usr/local/Zend/lib,执行

chcon ZendExtensionManager.so -t shlib_t
chcon ZendExtensionManager_TS.so -t shlib_t

然后,根据phpinfo里显示的php版本,我这里是5.1.2,找到/usr/local/Zend/lib/Optimizer-3.3.3/php-5.1.x目录下的ZendOptimizer.so,更改其安全策略。

chcon ZendOptimizer.so -t shlib_t

最后重启Apache,应该在phpinfo里看到成功加载了Zend Optimizer

Apache与SELinux

SELinux保护Linux系统安全的同时,也给服务配置带来了一些麻烦。开启Apache的虚拟主机以及用户目录功能后,除了主目录/var/www/html外,其他的文档目录一律是403 Forbidden。这就是SELinux的安全策略在作怪了。

解决办法有2种:
1、很简单,关闭SELinux对httpd的保护。进入:系统设置–>安全级别,选择SELinux,修改SELinux关于 HTTPD Service的安全策略(Disable SELinux protection for httpd daemon选项前面打勾)。
2、修改站点所在目录或文件的策略类型。SELinux target policy规定了apache的进程只能访问httpd_sys_content_t类型的目录或文件,因此把站点所在目录的策略类型改为httpd_sys_content_t 就可以了。设置目录的策略类型:# chcon -t httpd_sys_content_t /home/*/public_html,在/home/*/public_html目录下所有新建的子目录将继承他的策略类型。

Web服务映射

有两台服务器A和B,只有一个外网IP地址,A绑定的是外网IP地址,并且提供了Web服务,现在希望A和B能同时提供Web服务,不过不要求负载均衡,而且A和B提供的Web内容是不一样的。

这个简单的要求可以用Apache的反向代理来实现,在服务器A的httpd.conf文件中,增加一条虚拟主机配置:
<VirtualHost *>
   ServerName www2.example.com
   ServerAdmin admin@example.com
   ProxyPass / http://B的IP地址/
   ProxyPassReverse / http://B的IP地址/
   ErrorLog logs/www2.example.com-error_log
   CustomLog logs/www2.example.com-access_log common
</VirtualHost>

这样以后对www2.example.com的访问都会映射到服务器B来实现。