相信用惯了Windows的朋友一开始接触Linux是很崩溃的,因为很多东西都是通过命令行来完成的,包括安装绝大多数的开发工具以及环境,那么在Ubuntu下其实可以直接通过apt-get指令来安装apache和php,其实也是相当方便的,只要几行指令就可以完成。但是这里会出现一个问题,那就是没办法安装旧版本的php,比如到现在(2017年9月),使用上述指令Ubuntu会默认给你安装php7.1.8,那么当我们需要兼容一些低版本的代码时显然是不行的,这个时候我们就需要自己编译安装apache和php,在这里我以apache2.4 + php5.6为例进行配置。

其实在php的官方文档对安装过程有比较清楚的介绍,只不过中间可能会出现一些问题,这里我把最常见的问题做一个记录。

官方文档:http://php.net/manual/zh/install.unix.apache2.php

1.下载apache源码包,这里下载的是apache2.4

打开一个终端窗口,输入指令:

wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.27.tar.gz

等待下载完成。

2.下载php5.6的源码包

在终端输入指令:

wget http://hk1.php.net/get/php-5.6.31.tar.gz/from/this/mirror

等待下载完成,然后在终端输入

ls

我们可以看到(看到的内容不一定完全相同,但一定存在httpd-2.4.27.tar.gz和mirror)

这时我们在终端输入

mv mirror php.tar.gz
tar -zxvf httpd-2.4.27.tar.gz
tar -zxvf php.tar.gz

通过上面的指令,我们已经把刚刚下载的两个源码包解压出来,接下来我们就根据官方文档的指导进行编译安装。

3.编译安装apache

首先我们看看apache的官方文档:http://httpd.apache.org/docs/current/install.html

在这里,我们可以看到官方给出的几种依赖:

这里可以看到,我们需要APR、APR-UTIL、PCRE和其他的一些依赖,其中这三样是需要我们手动安装的。

这里表示APR和APR-UTIL可以使用系统内置的,也可以自己重新安装,重新安装的话可以直接将源码包放在srclib目录下,这里我测试过,Ubuntu使用这种方法安装会出现官方文档说的

On some platforms, you may have to install the corresponding -dev packages to allow httpd to build against your installed copy of APR and APR-Util.

所以我们接下来手动安装这三个东西,在安装APR之前必须安装libxml2-dev,否则会出现这个错误:

这里提示没有找到xml方法,所以先安装libxml2-dev:

sudo apt-get install libxml2-dev
APR:wget http://mirrors.hust.edu.cn/apache//apr/apr-1.6.2.tar.gz
APR-UTIL:wget http://mirrors.hust.edu.cn/apache//apr/apr-util-1.6.0.tar.gz
PCRE:wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz
tar -zxvf apr-1.6..tar.gz
cd apr-1.6.
./configure
sudo make && make install

运行完以上指令后,我们可以找到:

留意一下最后一行处的路径:/usr/local/apr,接下来将会用到这个路径。

cd ..
tar -zxvf apr-util-1.6..tar.gz
cd apr-util-1.6.
./configure --with-apr=/usr/local/apr/
sudo make && make install

执行完以上指令我们就会发现报错了:

这时候我们需要安装libexpat-dev

sudo apt-get install libexpat-dev
sudo make clean
sudo make && make install

这次执行完指令就安装成功了:

接下来安装PCRE:

cd ..
tar -zxvf pcre-8.41.tar.gz
cd pcre-8.41
./configure
sudo make && make install

依赖安装完成,下面开始编译安装apache2.4:

cd ..
cd httpd-2.4.
./configure --enable-so
sudo make && make install

执行完configure:

执行完make&&make install:

接下来启动服务器测试一下:

/usr/local/apache2/bin/apachectl start

打开浏览器,输入网址:http://localhost/,回车

出现这个画面说明apache2.4已经配置完成了,接下来关闭服务器,安装php。

/usr/local/apache2/bin/apachectl stop
cd ..
cd php-5.6.
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql

看到这个画面:

然后最后一步:

sudo make && make install

这就把php也安装完了,最后还要把php配置到apache上:

cp php.ini-development /usr/local/lib/php.ini

创建一个目录存放网站文件(随意创建,自己喜欢就好,但是一般用这个路径):

mkdir /var/www
mkdir /var/www/html

修改apache的配置文件:

sudo vi /usr/local/apache2/conf/http.conf

在末尾追加:

LoadModule php5_module modules/libphp5.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

修改

修改

在之前设置的网站目录下创建一个php文件:

vi /var/www/html/index.php
// 文件内容
<?php phpinfo(); ?>

启动apache服务器测试一下:

/usr/local/apache2/bin/apachectl start

打开浏览器:输入网址:http://localhost/,回车

OK,大功告成!

Ubuntu 16.04 环境下配置apache2.4 + php5.6的更多相关文章

  1. Ubuntu 12.04环境下配置Postgresql和phppgadmin

    Ubuntu 12.04环境下配置Postgresql 9.1 和phppgadmin 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/zjianb ...

  2. Linux从入门到适应(四):Ubuntu 16.04环境下,安装Nvidia驱动,cuda9.2和 cudnn

    在安装深度学习框架之前,cuda和cudnn是必须要提前安装的,现在按照流程而nvidia驱动的版本和cuda版本有这一些对应关系,所以需要按照版本进行安装,现在说一下如何安装: 1 安装nvidia ...

  3. 解决Ubuntu 16.04 环境下Python 无法显示中文的问题

    一.下载中文字体(https://pan.baidu.com/s/1EqabwENMxR2WJrHfKvyrIw 这里下载多是SImhei字体) 安装字体:解压:unzip SimHei.zip拷贝字 ...

  4. Ubuntu 16.04.5下FFmpeg编译与开发环境搭建

    PC环境: Ubuntu 18.04 上面只要安装下面的提示安装即可,基本上不必再下载依赖库的源代码进行编译和安装 编译步骤: 1, 安装相关工具: sudo apt  install -y auto ...

  5. Ubuntu 16.04.4下安装apache服务

     Ubuntu 16.04.4下安装apache服务: 一.首先,准备需要的预装环境 需要c++,make,gcc,apr  apr-util  pcre.(如果后面报错缺少什么组件,可以百度搜方法. ...

  6. Ubuntu 16.04系统下安装Discuz出现“HTTP ERROR 500”目前无法处理此请求

    问题:当我们在Ubuntu 16.04系统下安装Disucz X3时,修改好文件的权限,浏览器输入地址安装时出现如下图所示问题: 问题查询: 在终端输入: tail -f /var/log/apach ...

  7. 如何在Ubuntu 16.04上安装配置Redis

    如何在Ubuntu 16.04上安装配置Redis Redis是一个内存中的键值存储,以其灵活性,性能和广泛的语言支持而闻名.在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Re ...

  8. 在Ubuntu 16.04 LTS下编译安装OpenCV 4.1.1

    目录 一 安装前的准备 二 编译并安装OpenCV 4.1.1 注:原创不易,转载请务必注明原作者和出处,感谢支持! OpenCV目前(2019-8-1)的最新版本为4.1.1.本文将介绍如何在Ubu ...

  9. Ubuntu 16.04系统下安装PHP5.6*

    Ubuntu 16.04系统默认php7,并没有php5*的包,所以需要自己安装: 方法: 1.删除所有的php包列出安装的php包,dpkg -l | grep php| awk '{print $ ...

随机推荐

  1. ApiCloud开发的注意事项

    1. 引擎或模块问题:遇到应用层无法解决的问题,如果能确定需要引擎和模块支持的,不要自己想办法绕过去,要第一时间在开发者社区提交问题,或找APICloud项目经理提出. !!!注意!!!: 在开发者社 ...

  2. 探索 | “中医+AI”会诊电力设备故障

    在 AlphaGo 成功挑战围棋世界冠军后,人工智能(AI)“深度学习”家喻户晓.电力企业有机会着眼自身战略,利用落地的 AI 技术和应用聚焦业务流程优化.效率提升以及对全新机遇的发掘.本文针对设备故 ...

  3. Linux文件系统目录

    Linux操作系统目录呈树形结构,文件系统只有一个根目录,其余文件都是从根目录下延伸出来的 上图是一个Linux文件系统目录的展现,现在我们来看一下文件系统目录下相关目录及其功能 根目录( / ) L ...

  4. 学号 20175212 《Java程序设计》第4周学习总结

    学号 20175212 <Java程序设计>第4周学习总结 教材学习内容总结 一. 子类与父类 父类中的private和友好访问权限的成员变量不会被子类继承.子类只继承父类中的protec ...

  5. easyui tagbox 自动触发回车事件

    新版本的 easyui 加入了 tagbox 控件,允许用户通过回车分隔的方式输入多项数据.但这个控件有一些不便,就是每输入完一项必须按回车键确认,用户很容易在输入完最后一项后忘记按回车就直接提交表单 ...

  6. 小白的python之路11/15 awk 77-78

    awk -F指定分隔符  eg下图指定 : 为分隔符,$1 $4 NF表示以分隔符为表准,该行分了几段    $NF表示取最后一段 正则表达式 表示打印第一个开头的用户名awk -F: '/nolog ...

  7. Ehlib 学习

    似乎是为了垂直滚动条 SumList.Active := True; SumList.VirtualRecords := True; TDBGridEh 设计时 It is useful to use ...

  8. Shell脚本 自动部署 SpringBoot 应用

    公司项目使用了SpringBoot.开发的应用需要自动上传到服务器.虽然目前对热部署还没完全掌握.先使用shell简化一下部署吧. # 上传密钥 sshLoginKey=/f/MyFile/root. ...

  9. es6 - 一共有 6 种声明变量的方法(var, function, let, const, class, import)

    var命令和function命令声明的全局变量,依旧是顶层对象的属性:let命令.const命令.class命令声明的全局变量,不属于顶层对象的属性.也就是说,从 ES6 开始,全局变量将逐步与顶层对 ...

  10. VM虚拟机拍摄快照时出错或者克隆失败解决办法

    在换了固态硬盘后,下载好VM,装虚拟机,结果克隆虚拟机和拍摄快照时出问题了. 拍摄快照时出错或者隆失败出现参数错误如图: 所提供的参数中有一个无效参数 解决办法 出现这个问题一般是在机械硬盘的电脑上面 ...