原始碼編譯安裝Apache服務

2020-09-29 15:00:34


前言

Apache原始碼編譯安裝


提示:以下是本篇文章正文內容,下面案例可供參考

一、Apache簡介

在這裡插入圖片描述
在這裡插入圖片描述

二、Apache網站服務原始碼編譯安裝

1.安裝Apache所需軟體

:操作如下所示

apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
httpd-2.4.29.tar.gz

##將上面3個包傳到opt目錄下##
cd /opt
ll
總用量 8020
-rw-r--r--  1 root root 1071074 84 17:33 apr-1.6.2.tar.gz
-rw-r--r--  1 root root  565507 84 17:33 apr-util-1.6.0.tar.gz
-rw-r--r--  1 root root 6567926 84 17:33 httpd-2.4.29.tar.bz2
-rw-r--r--  1 root root 6567926 84 17:33 httpd-2.4.29.tar.bz2

解壓安裝包

tar xf apr-1.6.2.tar.gz
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz2

為了實現Apache服務跨平臺,必須移動下面倆個目錄

mv apr-1.6.2 httpd-2.4.29/srclib/apr
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

2.安裝環境

yum -y install \  
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl

gcc ,gcc-c++ 是原始碼編譯器( 作用:將輸入的程式碼解析成電腦能識別的語言)
make 是可以將組態檔構建出二進位制檔案 遞給電腦
pcre-devel 支援正規表示式
expat-devel 使網站能解析標籤語言的工具
perl 一種擁有各種語言功能的夢幻指令碼語言


3.configure設定

cd /opt/httpd-2.4.29/
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

–prefix:指定將 httpd 服務程式安裝到哪個目錄下,如/usr/local/httpd
–enable-so:開啟HTTP的核心模組
–enable-rewrite:啟用網頁地址重寫功能,用於網站優化及目錄遷移維護。
–enable-charset-lite:啟動字元集支援,以便支援使用各種字元集編碼的網
–enable-cgi:支援多種語言,對語言進行規範設

4.make編譯安裝

make && make install                 
make -j3   然後make install   -j3是你核心數,最大不要超過虛擬機器器的核心數

####優化執行路徑####
ln -s /usr/local/httpd/conf/httpd.conf /etc/ ##簡化組態檔的地址
ln -s /usr/local/httpd/bin/* /usr/local/bin/ ##將http執行檔案放入系統中便於管理
httpd -v ###檢視下HTTP版本

5.設定啟動指令碼

方法一:

[root@localhost bin]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[root@localhost httpd]# cd bin
[root@localhost bin]# ls
ab            apu-1-config  dbmmanage    fcgistarter   htdigest  httxt2dbm
apachectl     apxs          envvars      htcacheclean  htpasswd  logresolve
apr-1-config  checkgid      envvars-std  htdbm         httpd     rotatelogs
[root@localhost bin]# cp apachectl /etc/init.d/httpd '//將啟動指令碼複製到/etc/init.d/初始化指令碼檔案中,並重新命名為httpd'
[root@localhost bin]# cd /etc/init.d/
[root@localhost init.d]# ls
functions  httpd  netconsole  network  README
[root@localhost init.d]# vim httpd 
#!/bin/sh '//在行首插入下兩行內容,並儲存退出'
# chkconfig: 35 85 21   '//35級別自動執行  第85個啟動 第21個關閉'
# description: Apache is a World Wide Web server
#
#...省略內容
[root@localhost init.d]# chkconfig --add httpd  '//將httpd加入到SERVICE管理器'
[root@localhost init.d]# chkconfig --list httpd       ###檢視http服務自啟狀態 該輸出結果只顯示Sysv服務,並不包含原生 systemd 服務。SysV 設定資料可能被原生 systemd 設定覆蓋    

方法二:建立[service].service 組態檔新增系統給服務
在/lib/systemd/system/目錄下,建立一個以.service 結尾的單元(unit)組態檔,用於控制由 systemd 管理或監控的 httpd 服務

cd /lib/systemd/system/
##建立組態檔##
vim httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

驗證組態檔的語法(兩種方式)
(1)httpd -t
(2)apachectl -t

[root@localhost system]# systemctl start httpd.service
[root@localhost system]# systemctl enable httpd.service ###開機自啟http
[root@localhost system]# systemctl is-enabled httpd.service ###檢查HTTP單元是否啟動

6.開啟Http伺服器埠

vi /usr/local/httpd/conf/httpd.conf
ServerName www.51xit.top:80  ###更改下
systemctl restart httpd      ####重新啟動httpd服務

如何檢視服務是否起來?

ps aux | grep httpd ##檢視程序

netstat -ntap | grep 80 ##檢視埠
tcp 0 0 192.168.197.139:80 0.0.0.0:* LISTEN 69155/httpd

測試

關閉防火牆

systemctl stop firewalld.service
setenforce 0    檢視核心防護

登入驗證,Apache服務啟動成功
在這裡插入圖片描述