加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在Linux(centos)下,安装Apache和PHP环境

发布时间:2020-12-14 02:05:35 所属栏目:Linux 来源:网络整理
导读:?1001 ? ll /opt/lampp/modules/ ?1002 ? history | grep httpd ?1003 ? vim /etc/httpd/conf/httpd.conf ? ?1004 ? vim /etc/httpd/conf/httpd.conf ?1005 ? history | grep httpd ?1006 ? service httpd restart ?1007 ? history ? [[email?protected] ~]#

?1001? ll /opt/lampp/modules/

?1002? history | grep httpd

?1003? vim /etc/httpd/conf/httpd.conf?

?1004? vim /etc/httpd/conf/httpd.conf

?1005? history | grep httpd

?1006? service httpd restart

?1007? history?

[[email?protected] ~]#?

?

修改Apache的配置文件httpd.conf

1.

键:DirectoryIndex
值:index.html index.php
#注释:添加index.php

2.
找到配置文件中已有的这两项:

AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

在这两项下方,添加如下支持内容:

AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php

3.

原本是打算添加 libphp5.so 模块,因 PHP 已升级到 7 ,遂作罢。
LoadModule php5_module modules/libphp5.so (已过时)

4.

编写测试文件index.php内容如下

<?php
phpinfo();
?>

?

?

1.Apache安装

# yum install httpd (centos之下,Apache的名字叫httpd,和Apache的主程序 httpd.exe 同名)
  • 1

2.打开并测试Apache

(1)先确保,云服务器的80端口,是允许外网访问的。

(2)开启Apache服务

# service httpd start (centos之下,Apache的名字叫httpd,和Apache的主程序 httpd.exe 同名)
  • 1

(3)测试Apache是否正常运行

浏览器输入:      外网IP : 80

如果能正常显示 Apache 的内置主页,则说明Apache服务已正常开启。
  • 1
  • 2
  • 3

3.安装 PHP 7.0

参照以下两篇文章:?
(1)在centos7通过yum安装PHP7?
(2)Centos7 安装 PHP7最新版

步骤都是大同小异的?
我们这里统一采用 RPM + YUM 模式,进行 PHP 7 的安装:

1.因为此处安装需要epel-release作为前提条件,所以?
先安装?epel-release?:

rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm (该地址可能失效。若失效,如404错误,参照下面加粗字部分,提供的解决办法。)
  • 1

2.安装PHP7的rpm源:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  • 1

3.安装PHP7:

yum install php70w
  • 1

需要注意的点:

一、上述第1步,epel-release的地址,极容易失效,产生404错误。

以下是获取最新的 .rpm 文件的方法:

参见这篇文章?在CentOS上安装第三方软件库EPEL

其中有这样一句提示:

1、要安装最新版本的EPEL,请前往?http://mirrors.ustc.edu.cn/fedora/epel/?中查找最新版本的URL地址

最后得到的有效 .rpm 的URL是:?
http://mirrors.ustc.edu.cn/epel/epel-release-latest-7.noarch.rpm?(2017年10月12日 亲测有效)

4.按照第3步操作完毕后,测试 PHP 7 是否正常

# php -v 
  • 1
  • 2
  • 3

如果能够正常显示版本信息,则说明已经安装成功。

如:

PHP 7.0.23 (cli) (built: Sep 16 2017 12:47:01)( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0,Copyright (c) 1998-2017 Zend Technologies
  • 1
  • 2
  • 3

5.配置Apache兼容PHP

参考这两篇文章:?
老一点的版本:Linux下apache支持PHP配置?
新一点的版本:Linux安装Apache 2.4 + PHP 7 + Mysql笔记

前面一篇是 PHP 5.6 的,但是比较经典。?
后面一篇是 PHP 7.0 的,有一些新方法加进去。




步骤:

从PHP5.6中采纳的步骤

修改Apache的配置文件httpd.conf

1.

键:DirectoryIndex?
值:index.html index.php?
#注释:添加index.php

2.?
找到配置文件中已有的这两项:

AddType application/x-compress .Z?
AddType application/x-gzip .gz .tgz

在这两项下方,添加如下支持内容:

AddType application/x-httpd-php-source .phps?
AddType application/x-httpd-php .php

3.

原本是打算添加 libphp5.so 模块,因 PHP 已升级到 7 ,遂作罢。?
LoadModule php5_module modules/libphp5.so?(已过时)

4.

编写测试文件index.php内容如下

<?php phpinfo(); ?>
  • 1
  • 2
  • 3

然后?
放至Apache的默认的Web站点目录?DocumentRoot?之下?
#注释:默认路径为,/var/www/html

从PHP 7 中采纳的步骤

1.

添加最新的 libphp7.so 模块:

LoadModule php7_module modules/libphp7.so
  • 1

(附注,也可以统一写到 /etc/httpd/conf.module.d/00-base.conf 里面,进行统一管理。)

2.

结尾处,添加 .php 文件支持 (该功能似乎与?PHP 5.6?的第2步重复,但却是不冲突)

<FilesMatch .php$> SetHandler application/x-httpd-php </FilesMatch>
  • 1
  • 2
  • 3

?

可能出现的问题:

修改配置后,Apache发生故障,启动不了了

?

可以参见下面这篇文章,讲的非常详细

解决apache启动失败:Job for httpd.service failed.?
http://blog.csdn.net/ironali/article/details/45228699

①那篇文章,也提到了一个,万能的Apache调试方法

service httpd start

然后弹出这样提示:?
Job for httpd.servicefailed. See ‘systemctl status httpd.service‘ and ‘journalctl -xn‘ for details.

此时只要按照提示,输入

systemctl status httpd.service

就可以获知,详细的出错原因,?
比如:?
line 56 : LoadModule takes two arguments,a module name and the name of a shared object file to load it from?(提示,LoadModule这里,参数列表发生了错误)

②但是,仍然有一个天坑般的存在!

每一次修改后,尝试重新调试,是不能直接输入systemctl status httpd.service看结果的。

必须要:?

service httpd start

再?
systemctl status httpd.service

完整的走一遍,报错消息才会更新!!!

我一直傻乎乎的只用?systemctl status httpd.service?,浪费了近一个小时时间!




③另外,值得注意的是,不要在httpd.conf的一行配置后面,加?# 注释,很容易被程序理解为是最后一个新参数

?

④四大新手必须防范的坑!:

1. 如同②所讲的,systemctl?命令————>有着极大的显示延迟(或者是,只是回显Log调试记录)。所以,必须要?service httpd start?来进行刷新。刷新之后,重新?systemctl才能解决这一问题!

?

2. PHP 5.6 的安装攻略,和 PHP 7 的安装攻略——————>在两份攻略合并时的问题,必须要小心。——————>但是实际上两者很兼容???

?

3. 存在一个神奇的文件夹?conf.module.d/?,所有的?LoadModule xy.so?都可以统一放在这个文件夹下。
因为?/etc/httpd/conf/httpd.conf?这个配置文件,会?Include conf.module.d/*.conf?进行统一一键加载。

当然,直接在/etc/httpd/conf/httpd.conf?这个配置文件里,一个个?LoadModule za.conf也是可以的。(效果等同,而且 Apache启动时,会自动处理重复的?LoadModule 同名so

?

4. 切记切记!!!?httpd.conf这个文件,最好最好甚至说绝对不要在句尾写?# 注释!,
注释,最好是全部另起一行!

不然,很容易被当作最后一个参数(空格作祟)

?

?

6.进入Apache服务器端口下的测试页 phpinfo.php ,一切显示正常!

?

恭喜!




7.手动,将本地项目的文件夹,复制或移动到 /var/www/html 下

?

# mv /root/my /var/www/html 
  • 1
  • 2
  • 3

?

浏览器输入: 120.xx.136.147/my?
若能显示出项目的网页内容,则一切正常

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读