1.安裝所有 apache 需要用的到的軟件
#安裝 apache 需要的依賴到的軟件
yum install -y wget gcc make apr-devel apr-util-devel pcre-devel
2.去網(wǎng)上下載 apache 源碼安裝壓縮包文件到本地
#定位目錄到最上層的根目錄
-> cd /
#在更目錄下創(chuàng)建一個(gè) download 文件夾 mkdir 命令是用來創(chuàng)建文件夾的
-> mkdir download
#定位目錄到 根目錄的 download 文件夾下
-> cd /download
#運(yùn)行 wget 加 要下載文件的網(wǎng)址, 下載文件到當(dāng)前目錄 , 如果下載帶https://下載不了的話可以加 --no-check-certificate 參數(shù)
-> wget http://apache.mirror.cdnetworks.com//httpd/httpd-2.4.39.tar.gz
具體的 apache 源碼安裝壓縮包文件地址請(qǐng)去官網(wǎng)獲取 http://httpd.apache.org/download.cgi#apache24
image.png
3.把文件從壓縮包中解壓出來
# -z : 有g(shù)zip屬性的
# -x : 解壓
# -v : 顯示所有過程
# -f : 使用檔案名字窘行,切記亏推,這個(gè)參數(shù)是最后一個(gè)參數(shù)矾端,后面只能接檔案名
# tar 的詳細(xì)請(qǐng)看 [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.再構(gòu)建 apache 程序之前,要先來做一下 apache 的編譯配置
#--prefix=/usr/local/apache2 構(gòu)建安裝程序的時(shí)候把這個(gè)程序安裝在 /usr/local/apache2 目錄下
#--enable-mods-shared=most 動(dòng)態(tài)編譯 most (大多數(shù), all 是最大化支持) 模塊 , 意思是對(duì)于大多數(shù)apache模塊來說, 以后啟用模塊, 要先loadmoule來加載蚊逢,然后再<ifmodule></ifmodule>配置
#--enable-so 保留以后的擴(kuò)展DSO能力 [動(dòng)態(tài)編譯(DSO)]
#更加詳細(xì)的配置介紹請(qǐng)看這個(gè)文章 [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 沒有報(bào)錯(cuò)的話,執(zhí)行下面的語句就要開始安裝 apache 了
->make && make install
#如果沒報(bào)錯(cuò) 就大功告成了
7.更改一下 apache 的運(yùn)行配置文件,要不啟動(dòng)服務(wù)會(huì)報(bào)錯(cuò)
->vi /usr/local/apache2/conf/httpd.conf
找到 '#ServerName xxxxxxxxx:80' 改成 'ServerName localhost:80' 記住要把前面的 '#' 號(hào)去掉
然后保存退出
8.添加開機(jī)啟動(dòng)
# 創(chuàng)建一個(gè)叫 http.service 的文件, 這個(gè)文件就是用來開機(jī)啟動(dòng)的,必須創(chuàng)建在 /usr/lib/systemd/system/ 目錄下
->vi /usr/lib/systemd/system/httpd.service
---------------------------------------------------------------------------
[Unit]
# 描述文件這個(gè)創(chuàng)建的服務(wù)是用來干什么用的
Description=apache service
# 這個(gè)服務(wù)要在 network.target 網(wǎng)絡(luò)創(chuàng)建后才開啟
After=network.target
[Service]
# forking 的意思是,ExecStart字段以fork()方式啟動(dòng)涨醋,此時(shí)父進(jìn)程將退出友题,子進(jìn)程將成為主進(jìn)程(后臺(tái)運(yùn)行)功蜓。一般都設(shè)置為forking
Type=forking
# 開啟 必須是絕對(duì)路徑才行 /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]
# 這個(gè)比較重要 , 表示多用戶命令行狀態(tài) (也代表啟動(dòng)的順序 在 multi-user.target 的階段啟動(dòng)這個(gè)服務(wù)), 還有一個(gè)用的多的是 graphical.target: 表示圖形用戶狀體园爷,它依賴于multi-user.target
WantedBy=multi-user.target
---------------------------------------------------------------------------
# vi 編輯完成后,保存退出 (vi 編輯不會(huì)的請(qǐng)百度一下) 然后執(zhí)行 systemctl deamon-reload 用來讓 systemctl 重新載入一下配置, 把你創(chuàng)建的 service 也載入進(jìn)去
->systemctl deamon-reload
# 最后執(zhí)行 systemctl start httpd.service 或者 systemctl start httpd 都行, 來開啟 apache 服務(wù)
->systemctl start httpd
# 如果不報(bào)錯(cuò)說明你已經(jīng)成功了, 最后一步把 這個(gè)創(chuàng)建的 httpd.service 服務(wù)添加到開機(jī)啟動(dòng)里面
->systemctl enable httpd
# end 完事了 大功告成 下面是一些 systemctl 基本命令
# systemctl daemon-reload 重載系統(tǒng)服務(wù)
# systemctl enable *.service 設(shè)置某服務(wù)開機(jī)啟動(dòng)
# systemctl disable cups.service 停止開機(jī)啟動(dòng)
# systemctl start *.service 啟動(dòng)某服務(wù)
# systemctl stop *.service 停止某服務(wù)
# systemctl reload *.service 重啟某服務(wù)
# systemctl status *.service 查看服務(wù)狀態(tài)
# 更多 systemctl 請(qǐng)查看 [http://www.reibang.com/p/fa7e7b93eeb4]
9.驗(yàn)證一下 apache 是否能正常運(yùn)行了
->curl localhost
#返回 '<html><body><h1>It works!</h1></body></html>' 說明正常
ps:
用虛擬機(jī)的小伙伴 : 用windows 共享目錄給 linux, 會(huì)有磁盤格式不一致的問題 , 會(huì)報(bào) : ln: failed to create symbolic link ‘xxxxx’ 問題
解決方法:把 httpd-2.4.39.tar.gz 文件解壓到 linux 的其他目錄下, 不要用共享目錄