Centos7 配置与部署apache + php 项目
先安装apache,然后再装php。
这样的安装顺序,安装php的时候会在apache里面会自动给你装好php相关的配置,我之前就是先装的php然后再安装apache,结果各种打不开页面,解析php是失败,东查西找浪费了很多时间,最后还是没有解决,然后还是选择按照这个顺序重装apache+php,就没问题了。
1.安装apache
#安装apache
yum -y install httpd
2.安装php
直接用yum -y install php 安装的php版本比较旧(php 5.4版本),下面是通过第三方源的方式安装php7.3版本,你也可以自己选择安装php的版本
#安装epel第三方源
yum -y install epel-release
#安装remi第三方源
rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
#你可以查看 /etc/yum.repos.d/里面会多出来 epel.repo 和 remi.repo 和各种版本的php
[root@VM_0_5_centos conf.modules.d]# cd /etc/yum.repos.d/
[root@VM_0_5_centos yum.repos.d]# ls
CentOS-Base.repo epel.repo remi.repo remi-glpi93.rep remi-php54.repo
remi-php72.repo remi-safe.repo CentOS-Epel.repo remi-glpi91.repo remi-glpi94.repo
remi-php70.repo remi-php73.repo epel-testing.repo remi-glpi92.repo remi-modular.repo
remi-php71.repo remi-php74.repo
#再安装yum-config-manager仓库管理工具,用来指定php版本来安装
yum -y install yum-utils
#使用yum-config-manager 来安装php7.3,你也可以自行选择版本,
yum-config-manager --enable remi-php73
#指定好版本后安装php
yum -y install php
#安装php相关常用的拓展(我这里拓展是安装常用的,但是后面发现会报错说没有mysqli
和 json无法使用 ,所以我在这里加多了个 php-mysql php-json,如果你使用redis的
话可以再加上php-redis)
yum -y install php-opcache php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-mysql php-json
#如果想查看你能安装什么包的话可以输入
yum search php73
#按照php-fpm
yum -y install php73-php-fpm.x86_64
#也可以直接
yum -y install php-fpm
#然后启动php-fpm
systemctl restart php-fpm.service
#查看端口9000是否启动了
[root@VM_0_5_centos yum.repos.d]# netstat -tunlp |grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 2843/php-fpm: maste
#php的配置文件在 /etc/opt/remi/php73/php-fpm.d/www.conf 里面的user和group默认是apache的,如果你是用nginx,这里需要把z
安装完php后,可以去查看apache的配置
#在/etc/httpd/conf.modules.d/里面会多出来个15-php.conf等配置文件
[root@VM_0_5_centos ~]# cd /etc/httpd/conf.modules.d/
[root@VM_0_5_centos conf.modules.d]# ls
00-base.conf 00-dav.conf 00-lua.conf 00-mpm.conf 00-proxy.conf 00-systemd.conf 01-cgi.conf 15-php.conf
#打开看一下15-php.conf文件,里面会加载两个model模块,分别是libphp7.so,libphp7-zts.so
<IfModule !mod_php5.c>
<IfModule prefork.c>
LoadModule php7_module modules/libphp7.so
</IfModule>
</IfModule>
<IfModule !mod_php5.c>
<IfModule !prefork.c>
LoadModule php7_module modules/libphp7-zts.so
</IfModule>
</IfModule>
#上面两个加载的模块就是在/etc/httpd/modules/ 里面
[root@VM_0_5_centos httpd]# cd /etc/httpd/modules/
[root@VM_0_5_centos modules]# ls
libphp7-zts.so mod_cache_socache.so mod_lbmethod_bytraffic.so mod_reflector.so
libphp7.so mod_cgi.so mod_lbmethod_heartbeat.so mod_remoteip.so
More--------------
如果先安装了php再安装apache,上面几个moudles可能需要你自行下载放进去,然后再引用,虽然说是这么操作,但是我这么做完还是没用。。。。。下次我会再次这么安装并解决这个坑,然后再发一篇博客。
3.在站点根目录里面新建index.php文件
#编写php访问phpinfo();
vim /var/www/html/index.php
#在里面输入
<?php
phpinfo();
?>
#然后再去到/etc/httpd/conf/httpd.conf里面 把ServerName 设置成你的ip地址
vim /etc/httpd/conf/httpd.conf
ServerName 198.161.155.1:80
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
AllowOverride all
# Allow open access:
Require all granted
</Directory>
#重启httpd服务
systemctl restart httpd
然后在浏览器访问ip地址发现什么都没有,一片空白
#于是我去修改php.ini开启错误报告
vim /etc/php.ini
#修改为
display_errors = On
error_reporting = E_ALL | E_STRICT
#禁用的函数,查看里面是否有phpinfo(),如果有的话请删掉
disable_functions =
#检查你编写phpinfo()的那个文件,看看里面的格式,我是
<?
phpinfo();
?>
我就一直是空白,甚至开启了错误报告也是空白,因为标签没写对
应该要换成
<?php
phpinfo();
?>
#或者在php.ini 里面把short_open_tag Off 改成 (使用短标签)
short_open_tag On
#重启php-fpm`
systemctl restart php-fpm
#重启httpd
systemctl restart httpd
访问项目的时候报错 Message: Call to undefined function mysqli_init()
#需要安装php-mysql
yum -y install php-mysql
利用端口映射访问不同的项目
#进入httpd的配置文件
vim /etc/httpd/config/httpd.config
#增加监听端口
Listen 80
Listen 70
Listen 8088
#添加虚拟主机 在Apache2.4.x版本 NameVirtualHost 已经无效了 只需要直接增加虚拟主机配置就好
#如果你的apache版本低于2.4.x 则需要增加NameVirtualHost来开启虚拟主机
NameVirtualHost *:8088
<VirtualHost *:8088>
ServerName 192.168.3.1:8088
DocumentRoot "/var/www/html/xxx"
<Directory "/var/www/html/xxx">
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:70>
ServerName 192.168.3.1:70
DocumentRoot "/var/www/html/xxx"
<Directory "/var/www/html/xxx">
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
#然后重启一下http服务
systemctl restart httpd
#也可以在/etc/httpd/conf/ 里面自定义一个test.conf文件,把上面的配置虚拟主机配置放进去
vim /etc/httpd/conf/test.conf
<VirtualHost *:8088>
ServerName 192.168.3.1:8088
DocumentRoot "/var/www/html/xxx"
<Directory "/var/www/html/xxx">
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:70>
ServerName 192.168.3.1:70
DocumentRoot "/var/www/html/xxx"
<Directory "/var/www/html/xxx">
AllowOverride All
Options Indexes FollowSymLinks
Require all granted
</Directory>
</VirtualHost>
#保存退出,然后去到 httpd配置文件里面增加include
vim /etc/httpd/conf/httpd.conf
#在里面任意位置增加
Include conf/test.conf
#然后再重启一下服务器就好了
systemctl restart httpd
#输入ip地址加端口号访问发现无法访问,这时需要检查你的防火墙端口号是否开放
firewall-cmd --list-ports
#发现只开放了80端口,现在需要把70 和 8088端口开放
firewall-cmd --zone=public --add-port=70/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --reload
#再次查看开放的端口
[root@VM_0_5_centos trunk]# firewall-cmd --list-ports
80/tcp 8088/tcp 70/tcp 443/tcp
#然后再次输入ip+端口号访问,还是不行,因为我是租的服务器,腾讯云的服务器,需要在你的后台设置安全组开放70 8088端口,阿里云服务器和其他服务器同理
#这次再次访问就成功了