1.安装所有 apache 需要用的到的软件
#安装 apache 需要的依赖到的软件
yum install -y wget gcc make apr-devel apr-util-devel pcre-devel
2.去网上下载 apache 源码安装压缩包文件到本地
#定位目录到最上层的根目录
-> cd /
#在更目录下创建一个 download 文件夹 mkdir 命令是用来创建文件夹的
-> mkdir download
#定位目录到 根目录的 download 文件夹下
-> cd /download
#运行 wget 加 要下载文件的网址, 下载文件到当前目录 , 如果下载带https://下载不了的话可以加 --no-check-certificate 参数
-> wget http://apache.mirror.cdnetworks.com//httpd/httpd-2.4.39.tar.gz
具体的 apache 源码安装压缩包文件地址请去官网获取 http://httpd.apache.org/download.cgi#apache24
3.把文件从压缩包中解压出来
# -z : 有gzip属性的
# -x : 解压
# -v : 显示所有过程
# -f : 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名
# tar 的详细请看 [https://www.cnblogs.com/manong--/p/8012324.html]
->tar -zxvf httpd-2.4.39.tar.gz
4. 定位目录到解压出来的 httpd-2.4.39 文件夹下
->cd httpd-2.4.39
5.再构建 apache 程序之前,要先来做一下 apache 的编译配置
#--prefix=/usr/local/apache2 构建安装程序的时候把这个程序安装在 /usr/local/apache2 目录下
#--enable-mods-shared=most 动态编译 most (大多数, all 是最大化支持) 模块 , 意思是对于大多数apache模块来说, 以后启用模块, 要先loadmoule来加载,然后再<ifmodule></ifmodule>配置
#--enable-so 保留以后的扩展DSO能力 [动态编译(DSO)]
#更加详细的配置介绍请看这个文章 [https://www.cnblogs.com/52php/p/5668845.html 和 http://httpd.apache.org/docs/2.4/programs/configure.html]
->./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-so
6.编译安装
#如果 ./configure 没有报错的话,执行下面的语句就要开始安装 apache 了
->make && make install
#如果没报错 就大功告成了
7.更改一下 apache 的运行配置文件,要不启动服务会报错
->vi /usr/local/apache2/conf/httpd.conf
找到 '#ServerName xxxxxxxxx:80' 改成 'ServerName localhost:80' 记住要把前面的 '#' 号去掉
然后保存退出
8.添加开机启动
# 创建一个叫 http.service 的文件, 这个文件就是用来开机启动的,必须创建在 /usr/lib/systemd/system/ 目录下
->vi /usr/lib/systemd/system/httpd.service
---------------------------------------------------------------------------
[Unit]
# 描述文件这个创建的服务是用来干什么用的
Description=apache service
# 这个服务要在 network.target 网络创建后才开启
After=network.target
[Service]
# forking 的意思是,ExecStart字段以fork()方式启动,此时父进程将退出,子进程将成为主进程(后台运行)。一般都设置为forking
Type=forking
# 开启 必须是绝对路径才行 /usr/local/apache2/bin/ 就是你上面 apache 安装的路径
ExecStart=/usr/local/apache2/bin/apachectl start
# 重载
ExecReload=/usr/local/apache2/bin/apachectl restart
# 停止
ExecStop=/usr/local/apache2/bin/apachectl stop
[Install]
# 这个比较重要 , 表示多用户命令行状态 (也代表启动的顺序 在 multi-user.target 的阶段启动这个服务), 还有一个用的多的是 graphical.target: 表示图形用户状体,它依赖于multi-user.target
WantedBy=multi-user.target
---------------------------------------------------------------------------
# vi 编辑完成后,保存退出 (vi 编辑不会的请百度一下) 然后执行 systemctl deamon-reload 用来让 systemctl 重新载入一下配置, 把你创建的 service 也载入进去
->systemctl deamon-reload
# 最后执行 systemctl start httpd.service 或者 systemctl start httpd 都行, 来开启 apache 服务
->systemctl start httpd
# 如果不报错说明你已经成功了, 最后一步把 这个创建的 httpd.service 服务添加到开机启动里面
->systemctl enable httpd
# end 完事了 大功告成 下面是一些 systemctl 基本命令
# systemctl daemon-reload 重载系统服务
# systemctl enable *.service 设置某服务开机启动
# systemctl disable cups.service 停止开机启动
# systemctl start *.service 启动某服务
# systemctl stop *.service 停止某服务
# systemctl reload *.service 重启某服务
# systemctl status *.service 查看服务状态
# 更多 systemctl 请查看 [https://www.jianshu.com/p/fa7e7b93eeb4]
9.验证一下 apache 是否能正常运行了
->curl localhost
#返回 '<html><body><h1>It works!</h1></body></html>' 说明正常
ps:
用虚拟机的小伙伴 : 用windows 共享目录给 linux, 会有磁盘格式不一致的问题 , 会报 : ln: failed to create symbolic link ‘xxxxx’ 问题
解决方法:把 httpd-2.4.39.tar.gz 文件解压到 linux 的其他目录下, 不要用共享目录