1. 程式人生 > >源碼編譯構建LAMP服務

源碼編譯構建LAMP服務

Language 模塊化 tps repos 開發者 關聯 盈利 group 主機

源碼編譯構建LAMP服務
####LAMP介紹####
LAMP 架構是目前成熟的企業網站應用模式之一,指的是協同工作的一整套系統和
相關軟件,能夠提供動態 Web 站點服務及其應用開發環境。LAMP 是一個縮寫詞,具
體包括 Linux 操作系統、Apache 網站服務器、MySQL 數據庫服務器、PHP(或 Perl、
Python)網頁編程語言。本章將以源碼編譯的方式搭建 LAMP 環境,能夠滿足企業定
制化的需求。
在構建 LAMP 平臺時,各組件的安裝順序依次為 Linux、Apache、MySQL、PHP。
其中 Apache 和 MySQL 的安裝並沒有嚴格的順序;而 PHP 環境的安裝一般放到最後,
負責溝通 Web 服務器和數據庫系統以協同工作。

####Apache 簡介####
“Apache HTTP Server”是開源軟件項目的傑出代表,基於標準的 HTTP 網絡協議提供
網頁瀏覽服務,在 Web 服務器領域中長期保持著超過半數的份額。Apache 服務器可以運
行在 Linux、UNIX、Windows 等多種操作系統平臺中。
Apache 服務器是針對之前出現的若幹個 Web 服務器程序進行整合、完善後形成的軟
件,其名稱來源於“A Patchy Server”,意思是“基於原有 Web 服務程序的代碼進行修改(補
丁)後形成的服務器程序”。
1995 年, Apache 服務程序發布了 1.0 版本,之後一直由“Apache Group”負責該項目

的管理和維護;直到 1999 年,在“Apache Group”的基礎上成立了 Apache 軟件基金會
(Apache Software Foundation,ASF)。目前,Apache 項目一直由 ASF 負責管理和維護。
ASF 是非盈利性質的組織,最初只負責“Apache Web”服務器項目的管理,隨著 Web
應用需求的不斷擴大,ASF 逐漸增加了許多與 Web 技術相關的開源軟件項目,因此 Apache
現在不僅僅代表著 Web 服務器,更廣泛地代表著 ASF 管理的眾多開源軟件項目。ASF 基
金會的官方網站是 http://www.apache.org/。
“Apache HTTP Server”是 ASF 旗下著名的軟件項目之一,其正式名稱是“httpd”,也就
是歷史上的 Apache 網站服務器。在後續內容中,若未作特殊說明,使用“Apache”或者“httpd”,
均指的是“Apache HTTP Server”。

####Apache 的主要特點####
1、開放源代碼:這是 Apache 服務器的重要特性之一,也是其他特性的基礎。
Apache 服務程序由全世界的眾多開發者共同維護,並且任何人都可以自由使
用,這充分體現了開源軟件的精神。

2、跨平臺應用:這個特性得益於 Apache 的源代碼開放。Apache 服務器可以運
行在絕大多數軟硬件平臺上,所有 UNIX 操作系統都可以運行 Apache 服務
器,甚至 Apache 服務器可以良好地運行在大多數 Windows 系統平臺中。
Apache 服務器的跨平臺特性使其具有被廣泛應用的條件。

3、支持各種Web 編程語言:Apache服務器可支持的網頁編程語言包括Perl、PHP、
Python、Java 等,甚至微軟的 ASP 技術也可以在 Apache 服務器中使用。支
持各種常用的 Web 編程語言使 Apache 具有更廣泛的應用領域。

4、模塊化設計:Apache 並沒有將所有的功能集中在單一的服務程序內部,而是
盡可能地通過標準的模塊實現專有的功能,這為 Apache 服務器帶來了良好的
擴展性。其他軟件開發商可以編寫標準的模塊程序,從而添加 Apache 本身
並不具有的其他功能。

5、運行非常穩定:Apache 服務器可用於構建具有大負載訪問量的 Web 站點,很
多知名的企業網站都使用 Apache 作為 Web 服務軟件。

6、良好的安全性:Apache 服務器具有相對較好的安全性,這是開源軟件共同具
有的特性。並且,Apache 的維護團隊會及時對已發現的漏洞提供修補程序,
為 Apache 的所有使用者提供盡可能安全的服務器程序。

×××LAMP實驗
實驗環境:
1.虛擬機ip 192.168.32.20 ——————vm1與主機相連。內存3G(不得少於2G)
關閉核心防護,關閉防火墻,搭建以光盤為源的yum倉庫。
2.需要安裝的幾個軟件包:
Apache
技術分享圖片 技術分享圖片 技術分享圖片
mysql
技術分享圖片

Php
技術分享圖片 技術分享圖片
實驗規劃:
1.搭建apache服務
2.搭建mysql服務
3.構建PHP運行環境
4.部署phpmyadmin系統

實驗步驟:
1.實驗環境初步設置
[root@localhost ~]# systemctl stop firewalld ###零時關閉防火墻
[root@localhost ~]# systemctl disable firewalld ###永久關閉防火墻
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0 ###零時關閉核心防護
[root@localhost yum.repos.d]# sed -i ‘/SELINUX/s/=[a-z]/=disabled/g‘ /etc/sysconfig/selinux
###永久關閉核心防護
搭yum倉庫
[root@localhost ~]# mount /dev/cdrom /mnt ###掛載光盤
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir jlh
[root@localhost yum.repos.d]# mv C
jlh ###將裏面的配置文件移到jlh文件夾裏
[root@localhost yum.repos.d]# cp jlh/CentOS-Base.repo local.repo
[root@localhost yum.repos.d]# vi local.repo
[centos]
name=centos
baseurl=file:///mnt ###其yum下載源未mnt下
gpgcheck=0
enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

2.搭建apache服務
(1)將apache的服務三個包上傳到opt目錄下面
技術分享圖片

技術分享圖片
(2)解壓壓縮包
[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 ###將該壓縮文件解壓到當前目錄下面
查看
技術分享圖片
(3)將安裝http所需要的插件移到http/scrlib目錄中
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
###將解壓好的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-util-1.6.0 插件移到httpd-2.4.29/srclib目錄下的/apr-util 文件中
(4)配置(自定義個性化配置)

[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
./configure \ ###配置你的安裝選項,生成編譯時所需的Makefile文件
--prefix=/usr/local/httpd \ ###指定將httpd程序安裝到/usr/local/httpd目錄下
--enable-so \ ###啟用動態加載模塊功能,使 httpd 具備進一步擴展功能的能力。
--enable-rewrite \ ###啟用網頁地址重寫功能,用於網站優化及目錄遷移
--enable-charset-lite \ ###啟用字符集支持,以便支持使用各種字符集編碼的網頁
--enable-cgi ###啟用CGI腳本程序支持,便於擴展網站的應用訪問能力
(5)編譯及安裝
[root@localhost httpd-2.4.29]# make -j2 ###編譯,-j2,雙線程編譯,安裝起來更快。
技術分享圖片

[root@localhost httpd-2.4.29]# make install ###安裝
技術分享圖片
(6)優化執行路徑
執行程序文件的原路徑不在PATH環境變量中,做個軟鏈接使其可以執行
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
[root@localhost httpd-2.4.29]# httpd -v ###查看版本
Server version: Apache/2.4.29 (Unix)
Server built: Feb 21 2019 06:12:43
(7)將 httpd 服務添加到系統服務中
[root@localhost httpd-2.4.29]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.29]# vi /etc/init.d/httpd ###編輯配置文件

技術分享圖片
[root@localhost httpd-2.4.29]# chkconfig --add httpd ###添加為系統服務,將httpd加入到SERVICE管理器
[root@localhost httpd-2.4.29]# chkconfig --list httpd
######查看http服務自啟狀態 該輸出結果只顯示Sysv服務,
並不包含原生 systemd 服務。SysV 配置數據可能被原生 systemd 配置覆蓋
技術分享圖片

(8)建立[service].service 配置文件添加系統給服務
在/lib/systemd/system/目錄下,建立一個以.service 結尾的單元(unit)配置文件,
用於控制由 systemd 管理或監控的 httpd 服務
[root@localhost httpd-2.4.29]# cd /lib/systemd/system/ ###進入/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
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
(9)啟動httpd.service服務
[root@localhost system]# systemctl start httpd.service ###臨時啟動
[root@localhost system]# systemctl enable httpd.service ###永久啟動
[root@localhost system]# systemctl is-enabled httpd.service ###檢查HTTP單元是否啟動
enabled
(10)編輯httpd主配置文件
[root@localhost system]# vi /usr/local/httpd/conf/httpd.conf
技術分享圖片
(11)重啟服務
[root@localhost system]# systemctl restart httpd
[root@localhost system]# httpd -t ###檢查http服務狀態,看是否有語法錯誤
Syntax OK
[root@localhost system]# apachectl -t ###檢查apachectl服務狀態,看是否有語法錯誤
Syntax OK
[root@localhost system]# netstat -anpt | grep 80 ###查看httpd服務運行狀態
tcp6 0 0 :::80 :::* LISTEN 67327/h
[root@localhost system]# vi /usr/local/httpd/htdocs/index.html
技術分享圖片
####網頁默認顯示內容為:/usr/local/httpd/htdocs/index.html
Yum安裝的在/var/www/html/index.htmll裏面
(12)瀏覽器驗證
技術分享圖片
3.搭建mysql服務
(1)安裝編譯工具與插件
[root@localhost system]# yum -y install \

ncurses \
ncurses-devel \
bison \
cmake
技術分享圖片

(2) 建立數據庫程序用戶
[root@localhost system]# useradd -s /sbin/nologin mysql
(3)上傳mysql-boost-5.7.20.tar.gz到opt目錄下
技術分享圖片
(4)解壓mysql安裝包
[root@localhost system]# cd /opt ###進入opt目錄
[root@localhost opt]# tar xf mysql-boost-5.7.20.tar.gz ### 解壓軟件包
[root@localhost opt]# cd /opt/mysql-5.7.20/ ###進入到 /opt/mysql-5.7.20/裏
(5)配置(個性化配置及優化項目)
[root@localhost mysql-5.7.20]# cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
####配置選項含義###
#1、DCMAKE_INSTALL_PREFIX:指定將 mysql 數據庫程序安裝到某目錄下,
如目錄/usr/local/ mysql。
#2、DSYSCONFDIR:指定初始化參數文件目錄
#3、DDEFAULT_CHARSET:指定默認使用的字符集編碼,如 utf8。
#4、DDEFAULT_COLLATION:指定默認使用的字符集校對規則,utf8_general_ci
是適用於 UTF-8 字符集的通用規則。
#5、DWITH_EXTRA_CHARSETS:指定額外支持的其他字符集編碼。

------註意:如果在CMAKE的過程中有報錯,當報錯解決後,需要把源碼目錄中的CMakeCache.txt文件刪除,然後再重新CMAKE,否則錯誤依舊------------

(6) 編譯、編譯安裝
[root@localhost mysql-5.7.20]#make -j2 ###編譯
技術分享圖片
[root@localhost mysql-5.7.20]# make install ###安裝
技術分享圖片
[root@localhost mysql-5.7.20]#chown -R mysql:mysql /usr/local/mysql/
###對數據庫目錄進行權限設置
(7) 編輯mysql主配置文 件 (裏面內容不要刪除,追加,如果刪除了,瀏覽器訪問時,root登不進去,需要重新授權)
[root@localhost mysql-5.7.20]#vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
技術分享圖片
[root@localhost mysql-5.7.20]# chown mysql:mysql /etc/my.cnf ###改屬組
(8)設置環境變量
[root@localhost mysql-5.7.20]#echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH‘ >> /etc/profile
###把這兩個路徑添加到環境變量中,並放到profile文件中使之開機自運行,否則不生效
[root@localhost mysql-5.7.20]#echo ‘export PATH‘ >> /etc/profile
###設為全局變量,使它使用環境更廣
[root@localhost mysql-5.7.20]#source /etc/profile
###立即生效
(9)配置初始化
[root@localhost mysql-5.7.20]#cd /usr/local/mysql/
[root@localhost mysql]#[root@localhost mysql]# bin/mysqld \

--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

技術分享圖片
(10)添加系統服務
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]# systemctl daemon-reload
(11)查看服務運行狀態
[root@localhost mysql]# systemctl start mysqld ###啟動服務
[root@localhost mysql]# netstat -anpt | grep 3306 ###查看狀態
tcp6 0 0 :::3306 :::* LISTEN 86794/mysqld
[root@localhost mysql]# systemctl enable mysqld ###設置開機啟動
(12)訪問數據庫操作
[root@localhost mysql]# mysqladmin -u root -p password
剛開始沒密碼是空的直接回車,然後輸入密碼abc123,在此確認abc123,這是在root賬戶下運行的
技術分享圖片
[root@localhost mysql]# mysqladmin -u root -p password ###登入數據庫

技術分享圖片
技術分享圖片

4.構建PHP運行環境
(1)上傳php-7.1.10.tar.bz2包到opt目錄下
技術分享圖片
(2)安裝所需要的工具
[root@localhost php-7.1.10]# yum -y install \

libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel
(3)解壓壓縮包
[root@localhost opt]# tar xf php-7.1.10.tar.bz2
(4) 配置個性化配置
[root@localhost opt]# cd php-7.1.10
[root@localhost php-7.1.10]# ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
技術分享圖片

(5)編譯及安裝
[root@localhost php-7.1.10]#make -j3 ###編譯
技術分享圖片
[root@localhost php-7.1.10]#make install ###安裝
技術分享圖片

(6)拷貝php配置文件
[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
###從php源碼中復制 php.ini--development 到php安裝目錄的lib目錄下改名為php.ini
[root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini ###編輯該配置文件
###本地數據庫一般是通過socket文件連接,而本地數據庫的socket文件如果不在默認路徑,就必須告訴php從哪裏讀取socket文件。將php與mysql關聯.

技術分享圖片
技術分享圖片

[root@localhost php-7.1.10]# /usr/local/php/bin/php -m ###驗證安裝模塊
技術分享圖片

(6)修改apache配置文件,關聯php與apache服務
[root@localhost php-7.1.10]# vi /etc/httpd.conf
技術分享圖片
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
技術分享圖片
默認主頁加上index.php,並放在index.html前,支持php的首頁文件
[root@localhost php-7.1.10]# rm -f /usr/local/httpd/htdocs/index.html
###刪除器默認的首頁文件
(7)網站加目錄裏寫php測試頁
[root@localhost php-7.1.10]# vi /usr/local/httpd/htdocs/index.php
技術分享圖片
[root@localhost php-7.1.10]# systemctl restart httpd ###重新啟動http服務
(8)瀏覽器測試,輸入http://192.168.32.20
技術分享圖片
(10)修改設置mysql密碼,並創建用戶,設置權限
[root@localhost php-7.1.10]# mysqladmin -uroot -p password
技術分享圖片

進入到數據庫中
技術分享圖片
創建數據庫mantis,並相應的用戶分配權限
技術分享圖片
CREATE DATABASE myadm; ####創建數據庫myadm
GRANT all ON myadm. TO ‘myadm‘@‘%‘ IDENTIFIED BY ‘admin123‘; ###授權
GRANT all ON myadm.
TO ‘myadm‘@‘localhost‘ IDENTIFIED BY ‘admin123‘;
flush privileges; ### 刷新權限
配置文件

mysql> exit 退出
Bye

(11)編輯/usr/local/httpd/htdocs/index.php文件

技術分享圖片

[root@localhost php-7.1.10]# systemctl restart httpd 在啟動http服務

(13)測試
技術分享圖片
5.部署phpmyadmin系統 phpMyAdmin是一個使用PHP語言編寫,用來管理MYSQL數據庫的Web應用系統
(1)上傳軟件包phpMyAdmin-4.7.6-all-languages.zip
技術分享圖片
![](https://s1.51cto.com/images/blog/201902/23/cbb46543155818aee4b1f1d7fe27b166.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk
技術分享圖片
(2)解壓壓縮包
[root@localhost opt]# unzip phpMyAdmin-4.7.6-all-languages.zip -d /opt/
###註意軟件包格式,是zip格式,用unzip解壓
技術分享圖片
[root@localhost opt]# mv phpMyAdmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm
###將解壓的插件移到apache目錄中
[root@localhost opt]# cd /usr/local/httpd/htdocs/myadm
(3)創建phpMyadmin的配置文件並編輯配置文件
[root@localhost opt]# cd /usr/local/httpd/htdocs/myadm
[root@localhost myadm]# cp config.sample.inc.php config.inc.php
###復制配置文件內容到 config.inc.php中
[root@localhost myadm]# vi config.inc.php 編輯該配置文件

技術分享圖片
(4)重新啟動apache服務
[root@localhost myadm]# systemctl stop httpd
[root@localhost myadm]# systemctl start httpd

6.登錄測試
在瀏覽器中訪問http://192.168.32.20/myadm
技術分享圖片
解決辦法,在數據庫中可root授權。
[root@localhost myadm]# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON . TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘; ###添加root授權協議。
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges; ###刷新
Query OK, 0 rows affected (0.00 sec)

再次測試
技術分享圖片

源碼編譯構建LAMP服務