Linux安装apache环境及遇到的问题解决

摘要:最近工作之外接了一些项目,都是Linux下apache环境的,本来想直接跑nginx,无奈,都用了很多rewrite,apache和nginx在rewrite上有些语法不太一样,不太想去改这些规则,于是就在同一台服务器上再装了一套apache的环境。

最近工作之外接了一些项目,都是Linux下apache环境的,本来想直接跑nginx,无奈,都用了很多rewrite,apache和nginx在rewrite上有些语法不太一样,不太想去改这些规则,于是就在同一台服务器上再装了一套apache的环境。

最先想到的是偷懒的方式,让一套php同时支持apache和php-fpm,但在configure的时候会报错。报错的大体内容是说只能二选一。于是保留之前的nginx一套环境不去动她。

在 http://httpd.apache.org/ 下了httpd2.2,
./configure –prefix=/usr/local/httpd
make && make install

apr那些可以不装。

然后在到之前的php目录重新编译php。
php的版本还是之前nginx的那套版本,更多参考:http://www.webyang.net/Html/web/article_129.html

修改编译参数
./configure –prefix=/usr/local/php_httpd –with-config-file-path=/usr/local/php_httpd/etc –with-apxs2=/usr/local/httpd/bin/apxs –with-mysql –with-mysqli=/usr/local/mysql/bin/mysql_config –with-iconv-dir –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir –enable-xml  –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –with-curlwrappers –enable-mbregex –enable-mbstring –with-mcrypt=/usr/local/mcrypt –with-gd  –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-ldap –with-ldap-sasl –with-xmlrpc –enable-zip –enable-soap –with-pear   –enable-pdo –with-pdo-mysql –with-gettext –enable-exif –enable-wddx –enable-calendar –enable-ftp  –enable-dba –enable-sysvmsg  –enable-sysvshm –enable-debug –enable-maintainer-zts  –with-pcre-regex –enable-gd-jis-conv –enable-sockets

去掉 –enable-fpm –enable-embed –with-fpm-user=www –with-fpm-group=www
–enable-embed=TYPE     建立内嵌的SAPI库。参数为shared、static

make && make install

至此,apache的一套环境已经搭好。mysql共用nginx的那套。

/usr/local/httpd/bin/apachectl start
然后改端口,让apache跑起来。

ok,一切安好。centos。

不过本地centos却并不顺利。显示php文件没被解析。
添加下面三句:
AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .phtml .php3
LoadModule php5_module modules/libphp5.so

重启,报错libphp5.so找不到,find / -name ‘libphp5.so’
cp 查找的so的路径 module/libphp5.so
再次重启报错。没有权限。
chcon -t textrel_shlib_t libphp5.so
selinux引起的,可以直接关闭selinux。

再次重启,ok。如果设置端口号过大,也会报错。
还是selinux引起的。设置81吧,如果selinux开启的。

结果发现apache没有mod_rewrite模块。
find / -name mod_rewrite.c //在apache的源码安装目录中寻找mod_rewrite.c文件
cd PATH/to/mod_rewrite.c //进入包含mod_rewrite.c文件的目录
/usr/local/httpd/bin/apxs -c mod_rewrite.c //apxs应指定绝对路径,在你当前正在使用apache的bin目录里
/usr/local/httpd/bin/apxs -i -a -n mod_rewrite mod_rewrite.la
如果没有什么错误的话,应该在你的apache的modules目录中编译出一个mod_rewrite.so文件。

编辑httpd.conf文件,确认httpd.conf中已经包含mod_rewrite.so的加载语句,
LoadModule mod_rewrite_module modules/mod_rewrite.so
修改为:
LoadModule rewrite_module modules/mod_rewrite.so
这时,你的apache应该已经支持rewrite了。
不修改会报错:
Can’t locate API module structure ‘mod_rewrite_module’ in file /usr/local/apache2/modules/mod_rewrite.so: Undefined symbol “mod_rewrite_module”

问题总是千奇百态,给有需要的人提供帮助。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98628.html

(0)
上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐

发表回复

登录后才能评论