由于项目需求,80端口都被nginx占了,同时又想运行php项目,当然nginx通过配置也能运行php,就当学习一下apache的配置吧,用nginx做反向代理,apache运行php项目。
操作系统:虚拟机centos8.3最小安装版
安装apache和nginx
yum install httpd
yum install nginx
//安装好之后打开配置apache文件
vim /etc/httpd/conf/httpd.conf
Listen7780 //这里端口可以自己设置
ServerName 0.0.0.0:7780
<IfModule dir_module>
DirectoryIndex index.html index.php //加上index.php
</IfModule>
这个节点,是设置网站目录的DocumentRoot "/var/www/wordpress"
我一开始设置成了 /home/目录下了,后来不断报403错误,意思是没有权限
然后各种权限操作一通,还是403,好了,放弃修改,还是使用默认的/var/www/目录,就没有403错误了。
这里可能也会出现无法启动httpd的情况
可能原因:SELinux限制了Apache的端口设置
解决办法://安装semanage
yum provides/usr/sbin/semanage
yum -y install policycoreutils-python//查看默认允许的端口
semanage port -l | grep -w http_port_t//http_port_t tcp80,81,443,488,8008,8009,8443,9000
//使用semanage添加apache侦听的端口
semanage port -a -t http_port_t -p tcp7780//启动apache
systemctl start httpd
然后配置一下nginx
server {
listen 80;
listen [::]:80;
server_name test2.shuanghei.com;#主机名
location / {
proxy_pass http://127.0.0.1:7780;#刚才apache设置的端口
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
然后在/var/www/ 下新建test.html。
浏览器打开 http://test2.shuanghei.com/test.html 页面显示成功,这里反向代理成功,nginx和apache都正常运行。
网上有很多,通过yum安装php8.0的,请自行百度吧,这里就不说了,安装好之后,新建一个index.php页面。
出现直接下载index.php的页面,这说明,apache没有执行php文件。
ll/etc/httpd/modules/
查看加载modules,果然没有php模块,也就是说,通过yum安装的php80,是不会在apache里面添加解析模块的,后来也是找了各种办法,仍然是各种503错误,一直没办法解析php文件。
接下来只能手动安装php8了,又是折腾了好几个小时。
官网下载php-8.0.3.tar.gz。
上传到 /opt/目录
tar -zxvf php-8.0.3.tar.gz //解压缩
cd php-8.0.3 //进入目录
然后就是在网上查各种资料,我就截取history里的一小段,最后那句总算安装成功了。
我就大致总结一下
./configure --prefix=/usr/local/php8 --with-apxs2
就是安装到 /usr/local/php8 这个目.
加上--with-asxs2 才会编译生成libphp.so,apache才能运行php,之前yum安装的都没有这个。
在执行这句话时,会提示缺少各种软件等,你到时候就根据提示在一一通过yum安装,不知道安装啥的,可以到时候百度,总之基本不可能一下子就直接执行成功的,直到可以执行./configure --prefix=/usr/local/php8 --with-apxs2为止。
之后make 然后make install 大功告成。
php -v 看到版本是8.0
最后
ll /etc/httpd/modules/
总算有了libphp.so,终于可以运行php文件了。