Ubuntu 16.04.4下安装apache服务:

一、首先,准备需要的预装环境

需要c++,make,gcc,apr  apr-util  pcre。(如果后面报错缺少什么组件,可以百度搜方法。有报错就是是学习的开始。)

插入一个小姿势:#echo $?   这个命令是检测报错的,返回值若是0,表明没有报错,否则就是报错。

先安装c++编译相关组件:

i、刚装好的Ubuntu系统中已经有GCC了,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,

安装了这个包会自动安装上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必须的软件和头文件的库。

安装所需要的软件包:

sudo apt-get install build-essential

ii、安装 Ubuntu Make

$sudo apt-get update

$sudo apt-get install ubuntu-make

iii、apache同时依赖apr  apr-util  pcre。

apr-util依赖apr。

所以安装顺序是apr,apr-util,pcre(这个只要在apache之前装就好),apache。

正戏开始:

1、下载pcre正则库:https://ftp.pcre.org/pub/pcre/ 

2、下载apr:http://apr.apache.org/download.cgi

3、下载apr-util:http://apr.apache.org/download.cgi

4、下好后在SSH端输入rz命令将压缩包文件放在工作需要的目录下,并解压至此,我的是/app。

 root@ubuntu:~# cd /app
root@ubuntu:/app# rz root@ubuntu:/app# tar zxvf apr-1.6..tar.gz
root@ubuntu:/app# tar zxvf apr-util-1.6..tar.gz
root@ubuntu:/app# tar zxvf pcre-8.00.tar.gz root@ubuntu:/app# ls (检查一下)
apr-1.6. apr-1.6..tar.gz apr-util-1.6. apr-util-1.6..tar.gz httpd-2.4. httpd-2.4..tar.gz pcre-8.00 pcre-8.00.tar.gz

5、然后一个一个进行编译安装:

PS: linux编译安装的步骤:配置(configure)、编译(make)、安装(make install)

①  cd到源码版压缩包解压后的目录。

i、如果不是源码版压缩包解压后的目录,会出现-bash: ./configure: No such file or directory的报错,因为没有 ./configure的路径。

ii、之前一直犯这个错误就是下的是二进制(可直接安装)的包,在这个包目录下./configure一直报错,就这个原因。

  运行此命令:./configure --prefix=/app/apr

i、./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,但并不是所有的tar包都是源代码的包。

ii、划重点:注意你下的包是不是源码包!!!

iii、 ./configure --prefix=:指定安装路径。若不指定prefix,则可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share。

③  运行:make && make install 命令 (Make:编译程序。最好分开执行。)

eg:

需要注意的是:

******配置apr-util的时候需要依赖前面的apr,所以是先装apr,再装apr-util,再装apache(apache同时依赖apr  apr-util  pcre)。

①  编译安装pcre:

root@ubuntu:/app/pcre-8.00# ./configure --prefix=/opt/pcre
root@ubuntu:/app/pcre-8.00# make 
root@ubuntu:/app/pcre-8.00# make install

②  编译安装apr(其实不用安装,后面说明原因,但学的时候先了解apache依赖环境!)

root@ubuntu:/app# cd apr-1.6.3

root@ubuntu:/app/apr-1.6.3# ./configure --prefix=/opt/apr (--prefix=后面是接你要安装服务的目录,我们公司是/opt这个目录。apr对应apr-1.6.3。后面还有apr-util,pcre,apache目录)

root@ubuntu:/app/apr-1.6.3# make
root@ubuntu:/app/apr-1.6.3# make install

③  编译安装apr-util:(其实不用安装,后面说明原因,但学的时候先了解apache依赖环境!)

root@ubuntu:/app/apr-util-1.6.1# ./configure --prefix=/opt/apr-util --wiht-apr=/opt/apr (注意,apr-util依赖apr)

root@ubuntu:/app/apr-util-1.6.1# make
root@ubuntu:/app/apr-util-1.6.1# make install

  编译安装apache:(把下载下来到apr和apr-util解压到srclib目录下到apr和apr-util目录,注意目录名字要一致。不这样会报错,后面解释。

root@ubuntu:/app/httpd-2.4.33# ./configure --prefix=/opt/apache --with-apr=/opt/apr --with-apr-util=/opt/apr-util --with-pcre/opt/pcre (注意:apache同时依赖apr  apr-util  pcre)
root@ubuntu:/app/httpd-2.4.33# make 
root@ubuntu:/app/httpd-2.4.33# make install

Notic: 解释为什么前面其实不需要安装apr和apr-util:

到现在按照官方文档的说明应该就已经安装好了,但是我到make这步就报错了

collect2: error: ld returned 1 exit status
Makefile:48: recipe for target 'htpasswd' failed
make[2]: *** [htpasswd] Error 1
make[2]: Leaving directory '/etc/httpd-2.4.27/support'
/etc/httpd-2.4.27/build/rules.mk:75: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/etc/httpd-2.4.27/support'
/etc/httpd-2.4.27/build/rules.mk:75: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

这个错误是因为在httpd目录下的srclib目录里面没有apr和apr-util所导致的,但是./configure又不会报错,到make才会报错,

所以把下载下来到apr和apr-util解压到srclib目录下到apr和apr-util目录,注意目录名字要一致。

这就是之前说的不用安装apr和apr-util的原因,它会自动安装,手动安装后去指定安装路径是会报错的。重新生成make文件和make。

sudo ./configure --with-prce=/opt/pcre --with-included-apr    #其他参数请参照官方

sudo make
sudo make install

 
 
 
 
 
 
 

6、启动apache服务:

i、到/opt/apache/bin目录下,执行命令./httpd,再用ps aus| grep httpd命令检测服务端口是否开启。

ii、ubuntu下启动,重启,停止apache服务:

1、启动aoache服务

start apache 2 server

sudo /etc/init.d/apache2 start

2、重启apache服务

restart apache 2 Server

sudo /etc/init.d/apache2 restart

3、停止apache服务

stop apache 2 server

sudo /etc/init.d/apache2 stop

_______________________________

注:a、这里的sudo可要可不要.

b、假设系统中安装了nginx和apache服务器,访问127.0.0.1打开的服务器是nginx时,如果你不想用这个服务器,

而是apache时,就应当先关闭nginx服务器:sudo /etc/init.d/nginx stop  再开启apache服务器: sudo /etc/init.d/apache2 start .

c、当一个系统中安装了多个服务器时,这种命令写法只能生效一次,下次在启动系统时,还得重新运行上面的命令,如果想要永久性的只开启apache服务,则必须在文件中去设置。

知识扩展:

1、apache目录

bin:二进制执行文件-->httpd

conf:配置文件

logs:日志文件

2、本地ip:

127.0.0.1 :只有本机可以访问(ip协议)。

0.0.0.0  :局域网中访问ip也行。

localhost:只有本机可以访问(多种协议)。

3、命令扩展:

ps命令:ps aux| grep httpd 查看httpd服务状态。

pkill -9 进程名 :强制杀掉某进程。

tcp端口:netstat命令:netstat -lntp| grep 80 监听80端口状态。(在apache-conf配置文件中severname后面会显示服务端口)。

curl命令:

curl ipinfo.io :查询公网出口ip:

curl ip地址 :直接在curl命令后加上网址,就可以看到网页源码。

4、apache修改根目录:

修改/opt/apache/htdocs下的index.html文件。

这是公司ubuntu上安装apache全过程!^_^

Ubuntu 16.04.4下安装apache服务的更多相关文章

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

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

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

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

  3. Ubuntu 16.04 LTS 下安装MATLAB2015b 以及Matlab system error解决办法

    下载MATLAB2015b破解版 操作系统:Ubuntu 16.o4 LTS 程序文件:Matlab2015b-glnxa64破解版 解压提取文件:在ubuntu系统下可以直接提取压缩文件,得到三个文 ...

  4. Ubuntu 16.04系统下安装RapidSVN版本控制器及配置diff,editor,merge和exploer工具

    在Window下我们使用TortoiseSVN(小乌龟),可以很方便地进行查看.比较.更新.提交.回滚等SVN版本控制操作. 在Linux下我们可以使用RapidSVN.RapidSVN是一款轻量级的 ...

  5. Ubuntu 16.04 LTS 下安装 ibus-rime 输入法

    搜 Linux 下粤拼输入法的时候发现了 Rime,由于 fcitx 下的拼音输入体验实在不太好(搜狗是在我的电脑上完全坏掉了,调不出来,配置文件的问题一直没解决:谷歌是好过没有),于是安装 ibus ...

  6. ubuntu 16.04 docker下安装klee环境

    手动构建docker映象: 从github上获取klee源码 git clone https://github.com/klee/klee.git cd klee 使用存储库根目录中dockerfil ...

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

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

  8. Ubuntu 16.04非编译安装Zabbix 3.2----服务端和客户端win的配置

    控服务器 - 什么是Zabbix Zabbix是企业级开源分布式监控服务器解决方案. 该软件监控网络的不同参数和服务器的完整性,还允许为任何事件配置基于电子邮件的警报. Zabbix根据存储在数据库( ...

  9. Ubuntu 16.04 LTS 降级安装GCC 4.8

    转载自https://www.linuxidc.com/Linux/2017-03/142299.htm Ubuntu 16.04 LTS 降级安装GCC 4.8 [日期:2017-03-28] 来源 ...

随机推荐

  1. 02-11Android学习进度报告十一

    今天我学习了BaseAdapter优化的知识,主要是View方面的优化. 首先是复用复用ConvertView 代码示例: @Override public View getView(int posi ...

  2. 【协作式原创】查漏补缺之Golang中mutex源码实现

    概览最简单版的mutex(go1.3版本) 预备知识 主要结构体 type Mutex struct { state int32 // 指代mutex锁当前的状态 sema uint32 // 信号量 ...

  3. android 支持上拉加载,下拉刷新的列表控件SwipeRefreshLayout的二次封装

    上拉加载,下拉刷新的列表控件,大家一定都封装过,或者使用过 源代码,我会在最后贴出来 这篇代码主要是为了解决两个问题 1.滑动冲突得问题 2.listview无数据时,无数据布局的展示问题 下方列出的 ...

  4. Flask程序相关配置加载的三种方式

    方式一:从对象中加载配置 1.定义配置类,在配置类中添加相应的配置 2.通过app.config.from_object(配置类)进行加载 代码如下: from flask import Flask ...

  5. unity优化-内存(网上整理)

    内存优化内存的开销无外乎以下三大部分:1.资源内存占用:2.引擎模块自身内存占用:3.托管堆内存占用.在一个较为复杂的大中型项目中,资源的内存占用往往占据了总体内存的70%以上.因此,资源使用是否恰当 ...

  6. linux目录与路径

    1.相对路径和绝对路径 绝对路径:一定是从根目录开始,如:/usr/share/doc 相对路径:如果想从/usr/share/doc/到/usr/share/man下,可以写成 cd ../man, ...

  7. Caffe2 玩玩回归(Toy Regression)[5]

    前言 这一节将讲述如何使用Caffe2的特征进行简单的线性回归学习.主要分为以下几步: - 生成随机数据作为模型的输入 - 用这些数据创建网络 - 自动训练模型 - 查看梯度递减的结果和学习过程中网络 ...

  8. 【转】Python中*args和**kwargs的区别

    一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 例子一: 输出结果以元组的形式展示 def function(*args): print(args, type(args) ...

  9. pwn之ret2libc

    0×01 利用思路 ret2libc 这种攻击方式主要是针对 动态链接(Dynamic linking) 编译的程序,因为正常情况下是无法在程序中找到像 system() .execve() 这种系统 ...

  10. 各种STL的基本用法

    目录 STL及一些常用函数的基本用法 1.vector(向量)的基本用法 2.queue(队列)的基本用法 3.stack(栈)的基本操作 4.set(集合)的基本用法 5.map(映射)的基本用法 ...