LAMP架構——編譯安裝Apache,每個步驟都有詳細解釋

2020-09-29 17:00:59

前言

LAMP是指一組通常一起使用來執行動態網站或者伺服器的自由軟體名稱首字母縮寫:

  • Linux,作業系統
  • Apache,網頁伺服器
  • MariaDB或MySQL,資料庫管理系統(或者資料庫伺服器)
  • PHP、Perl或Python,指令碼語言

一、LAMP平臺的編譯安裝

1.1 LAMP概述

LAMP架構是目前成熟的企業網站應用模式之一,指的是協同工作的一整臺系統和相關軟體,能夠提供動態web站點服務及其應用開發環境

1.2 搭建LAMP平臺順序

在構建LAMP平臺時,各元件的安裝順序依次為Linux,Apache,MySQL,PHP。其中Apache和MySQL的安裝並沒有嚴格的順序要求,而PHP環境的安裝一般放到最後,負責溝通web伺服器和資料庫系統以協同工作

1.3 編譯安裝的優點

  • 具有較大的自由度,功能可客製化
  • 可及時獲得最新的軟體版本
  • 普遍適用於大多數Linux版本,便於一直使用

1.4 編譯安裝過程

原始碼編譯安裝程式的基本過程

  • 解包
    開源軟體的原始碼包一般為 TarBall 形式,擴充套件名為「.tar.gz」或「.tar.bz2」,都可以使用 tar 命令進行解壓釋放。對於只有「.gz」擴充套件名的原始碼包,表示只經過壓縮而並未使用 tar 歸檔, 這樣的檔案只需使用 gzip 進行解壓縮即可。在 Linux 作業系統中,通常將各種軟體的原始碼目錄儲存到「/usr/src/」目錄中,以便於集中管理。釋放後的軟體包目錄一般包括軟體名和版本資訊(如 httpd-2.4.25)。解包前先安裝編譯環境和依賴包。
  • 設定
    在編譯應用程式之前,需要進入原始碼目錄,通過目錄下的指令碼檢查安裝環境,並且對 軟體的安裝目錄、功能選擇等引數進行預先設定。
    環境檢查與設定工作通常由原始碼目錄中的 configure 指令碼檔案來完成,可用的各種設定引數可以通過在原始碼目錄中執行「./configure --help」命令進行檢視。對不同的軟體程式來說,其設定引數存在區別,但是有一個「–prefix」形式的引數卻是大多數開源軟體通用的, 該設定引數用於指定軟體包安裝的目標資料夾。如果沒有指定任何設定引數,「configure」指令碼將採用軟體預設的值進行設定。
  • 編譯
    編譯的過程主要是根據 Makefile 檔案內的設定資訊(若上一步的設定操作失敗,將無法進行編譯),將原始碼檔案進行編譯生成二進位制的程式模組、動態連結庫、可執行檔案等。 設定完成後,只要在原始碼目錄中執行「make」命令即可執行編譯操作。編譯的過程比設定過程需要更長的時間,期間同樣會顯示大量的執行過程資訊。
  • 安裝
    編譯完成以後,就可以執行如下的「make install」命令將軟體的執行程式、組態檔、幫助檔案等相關檔案複製到 Linux 作業系統中了,即應用程式的最後「安裝」過程。安裝過程需要的時間相對要短一些,期間也會顯示安裝的過程資訊。

二、編譯安裝Apache

2.1 Apache簡介

2.2.1 Apache起源

  • 源於A Patchy Server,著名的開源web服務軟體
  • 1955年時,釋出Apache服務程式的1.0版本
  • 由Apache軟體基金會(ASF)負責維護
  • 最新的名稱為「Apache HTTP Server」
  • 官方站點:http://httpd.apache.org/

2.2.2 主要特點

  • 開放原始碼,跨平臺應用
  • 支援多種網頁程式語言
  • 模組化設計,執行穩定,良好的安全性

2.2.3 軟體版本

1.X

  • 目前最高版本是1.3,執行穩定
  • 向下相容性較好,但缺乏一些較新的功能

2.X

  • 目前最高的版本是2.4
  • 具有更多的特性
  • 與1.X相比,設定管理風格存在較大差異

2.3 原始碼編譯安裝過程

2.3.1 準備工作

安裝Apache所需軟體:可以從官網下載
下載地址:http://httpd.apache.org/download.cgi

  • apr-1.6.2.tar.gz
  • apr-util-1.6.0.tar.gz
  • httpd-2.4.29.tar.gz
    然後將上面3個包傳到opt目錄下,我這裡使用的是Xftp工具傳輸
    xftp傳輸安裝包
    傳輸完成後進入opt目錄下檢視安裝包
[root@localhost ~]# cd /opt
[root@localhost 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
drwxr-xr-x. 2 root root       6 326 2015 rh

解壓安裝包

[root@localhost opt]# tar xf apr-1.6.2.tar.gz
[root@localhost opt]# tar xf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar xf httpd-2.4.29.tar.bz2

將跨平臺元件包移動到原始碼包目錄下

[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util 

注:apr和apr-util是跨平臺工具包,放到httpd下面,為上層的應用程式提供一個可以跨越多作業系統平臺使用的底層支援介面庫,更好的支援各種程式語言的使用

2.3.2 安裝依賴性關係包

[root@localhost opt]# 
yum -y install \
gcc \              ##c語言的原始碼編譯器
gcc-c++ \          ##c++原始碼編譯器
make \             ##make工具用於將原始碼檔案轉化成二進位制可執行性檔案
pcre-devel \       ##支援正規表示式
expat-devel \      ##支援標籤性語言,識別xml格式的檔案
perl               ##支援perl語言

2.3.3 configure設定

[root@localhost opt]# 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啟用動態載入模組支援,使 httpd 具備進一步擴充套件功能的能力。
–enable-rewrite啟用網頁地址重寫功能,用於網站優化及目錄遷移維護。
–enable-charset-lite啟動字元集支援,以便支援使用各種字元集編碼的網
–enable-cgi啟用 CGI 指令碼程式支援,便於擴充套件網站的應用存取能力。

2.3.4 make編譯和make install

[root@localhost httpd-2.4.29]# make -j3  ##-j3是你核心數,最大不要超過虛擬機器器的核心數
[root@localhost httpd-2.4.29]# make install

此命令步驟也可以寫為

[root@localhost httpd-2.4.29]# make -j3 && make install
命令解釋說明
make將原始碼轉化成可執行性二進位制檔案
make install安裝

2.3.5 優化執行路徑

[root@host3 httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
##做一個組態檔的軟連結,方便呼叫和對組態檔的修改
[root@host3 httpd-2.4.29]# ln -s /usr/local/httpd/bin/ * /usr/local/bin
##將http的bin目錄下的命令進行軟連結,放到環境變數的目錄下,方便命令在全域性的使用
[root@host3 httpd-2.4.29]#  httpd -v 
##檢視下當前http版本

2.3.6新增 httpd 系統服務

[root@localhost system]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost system]# vi /etc/init.d/httpd    ###插入以下程式碼
#chkconfig: 35 85 21                                                
#description: Apache is a World Wide Web server
 //35級別自動執行  第85個啟動 第21個關閉
[root@localhost system]# chkconfig --add httpd     ###新增為系統服務
[root@localhost system]# chkconfig --list httpd       ###檢視http服務自啟狀態 該輸出結果只顯示Sysv服務,
並不包含原生 systemd 服務。SysV 設定資料可能被原生 systemd 設定覆蓋

在/lib/systemd/system/目錄下,建立一個以.service 結尾的單元(unit)組態檔,用於控制由 systemd 管理或監控的 httpd 服務

[root@localhost ~]# cd /lib/systemd/system/
[root@localhost system]# vim httpd.service
[Unit]
Description=The Apache HTTP Server					//描述
After=network.target								//描述服務類別
[Service]
Type=forking										//後臺執行形式
PIDFile=/usr/local/httpd/logs/httpd.pid				//PID檔案位置
ExecStart= /usr/local/bin/apachectl $OPTIONS		//啟動服務
ExecrReload= /bin/kill -HUP $MAINPID			 	//根據PID過載設定
[Install]
WantedBy=multi-user.target

2.3.7httpd.conf修改組態檔

[root@localhost system]# vi /usr/local/httpd/conf/httpd.conf
ServerName www.51xit.top:80  ###這一行更改下

2.3.8 關閉防火牆,開啟httpd服務

[root@localhost init.d]# systemctl stop firewalld.service
[root@localhost init.d]# setenforce 0
[root@localhost system]# systemctl start httpd.service   ##啟動httpd服務
[root@localhost system]# systemctl enable httpd.service         ##開機自啟http
[root@localhost system]# systemctl is-enabled httpd.service   ##檢查HTTP單元是否啟動

此時http服務已開啟

2.3.9 驗證

[root@host3 system]# netstat -anpt | grep 80
tcp        0      0 192.168.197.139:80      0.0.0.0:*               LISTEN      69155/httpd
##在生產環境中不適用netstst命令,而是使用lsof命令

登陸網頁
試驗驗證
驗證成功!