個人對原始碼編譯構建LAMP架構認識
原始碼編譯構建LAMP架構
目錄
一、LAMP介紹
LAMP 架構是目前成熟的企業網站應用模式之一,指的是協同工作的一整套系統和相關軟體,能夠提供動態 Web 站點服務及其應用開發環境。LAMP 是一個縮寫詞,具體包括 Linux 作業系統、Apache 網站伺服器、MySQL 資料庫伺服器、PHP(或 Perl、Python)網頁程式語言。本章將以原始碼編譯的方式搭建 LAMP 環境,能夠滿足企業定製化的需求。在構建 LAMP 平臺時,各元件的安裝順序依次為 Linux、Apache、MySQL、PHP。其中 Apache 和 MySQL 的安裝並沒有嚴格的順序;而 PHP 環境的安裝一般放到最後,負責溝通 Web 伺服器和資料庫系統以協同工作。
二、Apache簡介
2.1、“Apache HTTP Server”是開源軟體專案的傑出代表,基於標準的 HTTP 網路協議提供網頁瀏覽服務,在 Web 伺服器領域中長期保持著超過半數的份額。Apache 伺服器可以執行在 Linux、UNIX、Windows 等多種作業系統平臺中。
2.2、Apache 伺服器是針對之前出現的若干個 Web 伺服器程式進行整合、完善後形成的軟體,其名稱來源於“A Patchy Server”,意思是“基於原有 Web 服務程式的程式碼進行修改(補丁)後形成的伺服器程式”。
2.3、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 基金會的官方網站是
2.4、“Apache HTTP Server”是 ASF 旗下著名的軟體專案之一,其正式名稱是“httpd”,也就是歷史上的 Apache 網站伺服器。在後續內容中,若未作特殊說明,使用“Apache”或者“httpd”,均指的是“Apache HTTP Server”。
三、Apache特點
3.1、開放原始碼:這是 Apache 伺服器的重要特性之一,也是其他特性的基礎。Apache 服務程式由全世界的眾多開發者共同維護,並且任何人都可以自由使用,這充分體現了開源軟體的精神。
3.2、跨平臺應用:這個特性得益於 Apache 的原始碼開放。Apache 伺服器可以執行在絕大多數軟硬體平臺上,所有 UNIX 作業系統都可以執行 Apache 伺服器,甚至 Apache 伺服器可以良好地執行在大多數 Windows 系統平臺中。Apache 伺服器的跨平臺特性使其具有被廣泛應用的條件。
3.3、支援各種Web 程式語言:Apache伺服器可支援的網頁程式語言包括PerlPHP、
Python、Java 等,甚至微軟的 ASP 技術也可以在 Apache 伺服器中使用。支援各種常用的 Web 程式語言使 Apache 具有更廣泛的應用領域。
3.4、模組化設計:Apache 並沒有將所有的功能集中在單一的服務程式內部,而是儘可能地通過標準的模組實現專有的功能,這為 Apache 伺服器帶來了良好的擴充套件性。其他軟體開發商可以編寫標準的模組程式,從而新增 Apache 本身並不具有的其他功能。
3.5、執行非常穩定:Apache 伺服器可用於構建具有大負載訪問量的 Web 站點,很多知名的企業網站都使用 Apache 作為 Web 服務軟體。
3.6、良好的安全性:Apache 伺服器具有相對較好的安全性,這是開源軟體共同具有的特性。並且,Apache 的維護團隊會及時對已發現的漏洞提供修補程式,為 Apache 的所有使用者提供儘可能安全的伺服器程式。
四、搭建LAMP
4.1、搭建YUM倉庫
1 [[email protected] ~]# mount /dev/cdrom /mnt 2 [[email protected] ~]# cd /etc/yum.repos.d/ 3 [[email protected] yum.repos.d]# ll 4 [[email protected] yum.repos.d]# mkdir backup 5 [[email protected] yum.repos.d]# mv C* backup/ 6 [[email protected] yum.repos.d]# cp backup/CentOS-Base.repo local.repo 7 [[email protected] yum.repos.d]# vi local.repo
1 [centos] 2 name=centos 3 baseurl=file:///mnt 4 gpgcheck=0 5 enabled=1 6 #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[[email protected] yum.repos.d]# yum clean all [[email protected] yum.repos.d]# yum makecache [[email protected] yum.repos.d]# systemctl stop firewalld [[email protected] yum.repos.d]# setenforce 0
4.2、編譯安裝HTTP服務
4.2.1、利用xftp連線虛擬機器,將上面軟體包傳到/opt目錄下
軟體包說明:apr-1.6.2.tar.gz、apr-util-1.6.0.tar.gz(工具)是跨平臺的元件包
要測APR給tomcat帶來的好處最好的方法是在慢速網路上(模擬Internet),將Tomcat執行緒數開到300以上的水平,然後模擬一大堆併發請求。如果不配APR,基本上300個執行緒狠快就會用滿,以後的請求就只好等待。但是配上APR之後,併發的執行緒數量明顯下降,從原來的300可能會馬上下降到只有幾十,新的請求會毫無阻塞的進來。
APR對於Tomcat最大的作用就是socket排程。你在區域網環境測,就算是400個併發,也是一瞬間就處理/傳輸完畢,但是在真實的Internet環境下,頁面處理時間只佔0.1%都不到,絕大部分時間都用來頁面傳輸。如果不用APR,一個執行緒同一時間只能處理一個使用者,勢必會造成阻塞。所以生產環境下用apr是非常必要的。
4.2.2、解壓縮軟體包
1 [[email protected] ~]# cd /opt 2 [[email protected] opt]# ll 3 [[email protected] opt]# tar xf apr-1.6.2.tar.gz 4 [[email protected] opt]# tar xf apr-util-1.6.0.tar.gz 5 [[email protected] opt]# tar xf httpd-2.4.29.tar.bz2 ###yum -y install bzip2 6 [[email protected] opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr 7 [[email protected] opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
yum -y install \ gcc \ gcc-c++ \ make \ pcre-devel \ expat-devel \ perl
依賴環境包包說明:
gcc ###C語言的編譯器
gcc-c++ ###C++的編譯器
make ###原始碼編譯(原始碼轉換成二進位制檔案)
pcre-devel ###支援正則表示式
expat-devel ###網站解析HTML檔案
perl ###perl編譯器
4.2.4、./configure
1 [[email protected] opt]# cd /opt/httpd-2.4.29/ 2 ./configure \ 3 --prefix=/usr/local/httpd \ 4 --enable-so \ 5 --enable-rewrite \ 6 --enable-charset-lite \ 7 --enable-cgi
配置模組解釋:
--prefix:指定將 httpd 服務程式安裝到哪個目錄下,如/usr/local/httpd
--enable-so:啟用動態載入模組支援,使 httpd 具備進一步擴充套件功能的能力。
--enable-rewrite:啟用網頁地址重寫功能,用於網站優化及目錄遷移維護。
--enable-charset-lite:啟動字符集支援,以便支援使用各種字符集編碼
--enable-cgi:啟用 CGI 指令碼程式支援,便於擴充套件網站的應用訪問能力。
4.2.5、編譯及安裝並優化執行路徑
1 make && make install ###先make -j3 然後make install -j3是你核心數,最大不要超過虛擬機器的核心數 2 ####優化執行路徑#### 3 ln -s /usr/local/httpd/conf/httpd.conf /etc/ 4 ln -s /usr/local/httpd/bin/* /usr/local/bin/ 5 httpd -v ###檢視下HTTP版本
4.2.6、建立[service].service 配置檔案新增系統給服務
在/lib/systemd/system/目錄下,建立一個以.service 結尾的單元(unit)配置檔案,用於控制由 systemd 管理或監控的 httpd 服務
1 [[email protected] ~]# cd /lib/systemd/system/ 2 [[email protected] system]# vim httpd.service
1 [Unit] 2 Description=The Apache HTTP Server 3 After=network.target 4 [Service] 5 Type=forking 6 PIDFile=/usr/local/httpd/logs/httpd.pid 7 ExecStart= /usr/local/bin/apachectl $OPTIONS 8 ExecrReload= /bin/kill -HUP $MAINPID 9 [Install] 10 WantedBy=multi-user.target
4.2.7、開啟服務,設定開機自啟,檢查HTTP單元開機啟動狀態
1 [[email protected] system]# systemctl start httpd.service 2 [[email protected] system]# systemctl enable httpd.service ###開機自啟http 3 [[email protected] system]# systemctl is-enabled httpd.service ###檢查HTTP單元是否啟動
4.2.8、httpd.conf修改配置檔案並重啟服務
1 [[email protected] system]# vi /etc/httpd.conf 2 ServerName www.xuhao.com:80 3 [[email protected] system]# systemcti restart httpd
4.2.9、主機測試
在windows中新增主機對映記錄,在C:\Windows\System32\drivers\etc目錄下有個hosts檔案,以記事本方式開啟並在末尾新增,開啟瀏覽器測試
httpd.conf配置檔案解讀
全域性配置項
全域性配置決定 httpd 伺服器的全域性執行引數,使用“關鍵字 值”的配置格式。例如,配置網站名稱時使用的“ServerName www.kgc.com”,其中“ServerName”為配置關鍵字,而“www.kgc.com”為對應的值。 每一條全域性配置都是一項獨立的配置,不需要包含在其他任務區域中。以下列出了 httpd.conf 檔案中最常用的一些全域性配置項
1 ServerRoot "/usr/local/httpd" 2 Listen 80 3 User daemon 4 Group daemon 5 ServerAdmin [email protected] 6 ServerName www.kgc.com 7 DocumentRoot "/usr/local/httpd/htdocs" 8 DirectoryIndex index.htmlindex.php 9 ErrorLog "logs/error_log" 10 LogLevel warn 11 CustomLog logs/access_log 12 common PidFile logs/httpd.pid 13 AddDefaultCharset UTF-8 14 Include conf/extra/httpd-default.conf
在上述設定行中,各全域性配置項的含義如下:
ServerRoot:設定 httpd 伺服器的根目錄,該目錄下包括了執行 Web 站點必需的子目錄和檔案。預設的根目錄為/usr/local/httpd,與 httpd 的安裝目錄相同。在httpd.conf 配置檔案中,如果指定目錄或檔案位置時不使用絕對路徑,則目錄或文位置都認為是在伺服器的根目錄下
Listen:設定 httpd 伺服器監聽的網路埠號,預設為 80
User:設定執行 httpd 程序時的使用者身份,預設為 daemon
Group:設定執行 httpd 程序時的組身份,預設為 daemon
ServerAdmin:設定 httpd 伺服器的管理員 E-mail 地址,可以通過此 E-mail 地址及 時聯絡 Web 站點的管理員
ServerName:設定 Web 站點的完整主機名(主機名+域名)
DocumentRoot:設定網站根目錄,即網頁文件在系統中的實際存放路徑。此配置 項比較容易和 ServerRoot 混淆,需要格外注意
DirectoryIndex:設定網站的預設索引頁(首頁),可以設定多個首頁檔案,以空格 分開,預設的首頁檔案為 index.html
ErrorLog:設定錯誤日誌檔案的路徑,預設路徑為 logs/error_log。LogLevel:設定記錄日誌的級別,預設級別為 warn(警告)
CustomLog:設定訪問日誌檔案的路徑、日誌型別,預設路徑為 logs/access_log,使用的型別為 common(通用格式)
PidFile:設定用於儲存 httpd 程序號(PID)的檔案,預設儲存地址為 logs/httpd.pid, logs 目錄位於 Apache 的伺服器根目錄下
AddDefaultCharset:設定站點中的網頁預設使用的字符集編碼,如 UTF-8、gb2312 Include:包含另一個配置檔案的內容,可以實現將一些特殊功能的配置放到一個單 獨的檔案中,再使用 Include 配置項將其包含到 httpd.conf 檔案中,這樣便於獨立 進行配置功能的維護而不影響主配置檔案。 以上配置項是 httpd.conf 檔案中主要的全域性配置項。還有其他很多配置項
區域配置項
除了全域性配置項以外,httpd.conf 檔案中的大多數配置是包括在區域中的。區域配置使用一對組合標記,限定了配置項的作用範圍。例如,最常見的目錄區域配置
1 <Directory /> ###定義"/"目錄區域的開始 2 Options FollowSymLinks ###控制選項,允許使用符號連結 3 AllowOverride None ###不允許隱含控制檔案中的覆蓋配置 4 Require all denied ###禁止任何人訪問此區域 5 </Directory> ###定義"/"目錄區域的結束
4.3、構建虛擬主機
虛擬 Web 主機指的是在同一臺伺服器中執行多個 Web 站點,其中的每一個站點實際上並不獨立佔用整個伺服器,因此被稱為“虛擬”Web 主機。通過虛擬 Web 主機服務可以充分利用伺服器的硬體資源,從而大大降低網站構建及執行成本。使用 httpd 可以非常方便地構建虛擬主機伺服器,只需要執行一個 httpd 服務就能夠同時支撐大量的 Web 站點。httpd 支援的虛擬主機型別包括以下三種。
4.3.1、基於域名:為每個虛擬主機使用不同的域名,但是其對應的 IP 地址是相同的。例如,www.51xit.top 和 www.52xit.top 站點的 IP 地址都是 192.168.100.41。這是使用最為普遍的虛擬 Web 主機型別。
4.3.2、基於 IP 地址:為每個虛擬主機使用不同的域名,且各自對應的 IP 地址也不相同。這種方式需要為伺服器配備多個網路介面,因此應用並不是非常廣泛。(安全)
4.3.3、基於埠:這種方式並不使用域名、IP 地址來區分不同的站點內容,而是使用了不同的TCP 埠號,因此使用者在瀏覽不同的虛擬站點時需要同時指定埠號才能訪問
4.3.1、基於域名
在部署環境中DNS需要修改下A記錄,在本案中我們採用hosts對映的方式做域名解析,為虛擬主機準備網頁文件
1 [[email protected] system] mkdir -p /opt/www/html/51xit.top
2 [[email protected] system] mkdir -p /opt/www/html/52xit.top
3 [[email protected] system] echo "<h1>www.51xit.top</h1>" > /opt/www/html/51xit.top/index.html
4 [[email protected] system] echo "<h1>www.52xit.top</h1>" > /opt/www/html/52xit.top/index.html
新增虛擬主機配置
1)虛擬主機區域:使用<VirtualHost 監聽地址>……</VirtualHost>區域配置,為每一個虛擬 Web 主機建立獨立的配置內容。其中至少應包括虛擬主機的網站名稱、網頁根目錄的配置項;其他(如管理郵箱、訪問日誌等)配置項可根據實際需要新增。
2)目錄許可權:使用<Directory 目錄位置>……</Directory>區域配置,為每一個虛擬 Web 主機的網站目錄設定訪問許可權,如允許任何人訪問。目錄訪問可以繼承其父目錄的授權許可,因此可以採取直接為父資料夾授權訪問許可權的方法來簡化配置當虛擬Web 主機的數量較多時,建議使用獨立的虛擬主機配置檔案,然後在 httpd.conf檔案中通過 Include 載入這些配置。這樣可以將對 httpd.conf 檔案的改動減至最少,更方便配置內容的維護。
1 [[email protected] ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
1 <VirtualHost *:80> 2 DocumentRoot "/opt/www/html/51xit.top" 3 ServerName www.51xit.top 4 ErrorLog "logs/www.51xit.top.error_log" 5 CustomLog "logs/www.51xit.top.access_log" common 6 <Directory "/opt/www/html"> 7 Require all granted 8 </Directory> 9 </VirtualHost> 10 11 <VirtualHost *:80> 12 DocumentRoot "/opt/www/html/52xit.top" 13 ServerName www.52xit.top 14 ErrorLog "logs/www.52xit.top.error_log" 15 CustomLog "logs/www.52xit.top.access_log" common 16 <Directory "/opt/www/html"> 17 Require all granted 18 </Directory> 19 </VirtualHost>
[[email protected] ~]# vim /usr/local/httpd/conf/httpd.conf Include conf/extra/httpd-vhosts.conf 去掉#載入獨立的配置檔案 #ServerName www.xuhao.com:80 [[email protected] ~]# systemctl restart httpd ####重啟服務使新配置生效 驗證 更改客戶機hosts對映關係 192.168.100.41 www.51xit.top www.52xit.top 登入客戶機訪問www.51xit.top 在訪問www.52xit.top
4.3.2、基於 IP 地址
主機上有2塊網絡卡
VM1網絡卡:192.168.100.41
VM1網絡卡:192.168.100.42
新增另外一塊網絡卡VM1 配置ens36網絡卡
1 [[email protected] 51xit.top]# nmcli connection 2 NAME UUID TYPE DEVICE 3 ens33 49511b41-e51a-41f0-a43e-d13274d3ce10 ethernet ens33 4 virbr0 2526d384-aa95-4b4c-9c39-226fc07a2844 bridge virbr0 5 有線連線 1 816178ee-807e-3499-9d19-20507cbb8ad3 ethernet ens36 6 複製UUID值 這裡值 根據你實際情況來 7 [[email protected] 51xit.top]# cd /etc/sysconfig/network-scripts/ 8 [[email protected] network-scripts]# ll 9 總用量 252 10 -rw-r--r--. 1 root root 349 2月 20 17:27 ifcfg-ens33 11 [[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-ens36 12 [[email protected] network-scripts]# vi ifcfg-ens36 13 TYPE=Ethernet 14 PROXY_METHOD=none 15 BROWSER_ONLY=no 16 BOOTPROTO=none 17 DEFROUTE=yes 18 IPV4_FAILURE_FATAL=no 19 IPV6INIT=no 20 IPV6_AUTOCONF=yes 21 IPV6_DEFROUTE=yes 22 IPV6_FAILURE_FATAL=no 23 IPV6_ADDR_GEN_MODE=stable-privacy 24 NAME=ens36 ###更改為ens36 25 UUID=816178ee-807e-3499-9d19-20507cbb8ad3 ###更改UUID值 26 DEVICE=ens36 ###更改為ens36 27 ONBOOT=yes 28 IPADDR=192.168.100.42 ###更改IP地址 29 PREFIX=24 30 GATEWAY=192.168.100.1 31 IPV6_PRIVACY=no 32 [[email protected] network-scripts]# systemctl restart network 33 [[email protected] network-scripts]# ifdown ens36 34 [[email protected] network-scripts]# ifup ens36 35 [[email protected] ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
1 <VirtualHost 192.168.100.41:80> ####設定 51xit.top 虛擬站點區域 2 DocumentRoot "/opt/www/html/51xit.top" 3 ServerName www.51xit.top 4 ...... 5 </VirtualHost> 6 7 <VirtualHost 192.168.100.42:80> ####設定 52xit.top 虛擬站點區域 8 DocumentRoot "/opt/www/html/52xit.top" 9 ServerName www.52xit.top 10 ...... 11 </VirtualHost> 12 [[email protected] ~]# vim /usr/local/httpd/conf/httpd.conf 13 Include conf/extra/httpd-vhosts.conf ####載入獨立的配置檔案 14 [[email protected] ~]# systemctl restart httpd ####重啟服務使新配置生效
驗證
更改客戶機hosts對映關係
192.168.100.41 www.51xit.top
192.168.100.42 www.52xit.top
登入客戶機訪問www.51xit.top 在訪問www.52xit.top
4.3.3、基於埠
1 [[email protected] ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
2 <VirtualHost 192.168.100.41:80> ####設定 51xit.top 虛擬站點區域
3 DocumentRoot "/opt/www/html/51xit.top"
4 ServerName www.51xit.top
5 </VirtualHost>
6
7
8 <VirtualHost 192.168.100.41:8080> ####設定 52xit.top 虛擬站點區域
9 DocumentRoot "/opt/www/html/52xit.top"
10 ServerName www.52xit.top
11 </VirtualHost>
12 [[email protected] ~]# vi /usr/local/httpd/conf/httpd.conf ####省略部分內容
13 Include conf/extra/httpd-vhosts.conf ####載入獨立的配置檔案
14 Listen 192.168.100.41:80 ####監聽 80 埠
15 Listen 192.168.100.41:8080 ####監聽 8080 埠
16 [[email protected] ~]# systemctl restart httpd ####重啟服務使新配置生效
驗證
更改客戶機hosts對映關係
192.168.100.41 www.51xit.top www.52xit.top
4.4、安裝mysql
4.4.1、安裝環境
1 yum -y install \ 2 ncurses \ 3 ncurses-devel \ 4 bison \ 5 cmake
4.4.2、上傳mysql-boost-5.7.20.tar.gz到/opt目錄下並解壓縮
1 useradd -s /sbin/nologin mysql 2 cd /opt 3 tar xf mysql-boost-5.7.20.tar.gz 4 cd /opt/mysql-5.7.20/
4.4.3、新增配置選項
1 cmake \ 2 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 3 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ 4 -DSYSCONFDIR=/etc \ 5 -DSYSTEMD_PID_DIR=/usr/local/mysql \ 6 -DDEFAULT_CHARSET=utf8 \ 7 -DDEFAULT_COLLATION=utf8_general_ci \ 8 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ 9 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ 10 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 11 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ 12 -DMYSQL_DATADIR=/usr/local/mysql/data \ 13 -DWITH_BOOST=boost \ 14 -DWITH_SYSTEMD=1
配置選項含義
1、DCMAKE_INSTALL_PREFIX:指定將 mysql 資料庫程式安裝到某目錄下,
如目錄/usr/local/ mysql。
2、DMYSQL_UNIX_ADDR:指定套接字檔案的儲存路徑,資料庫連線的檔案
3、DSYSCONFDIR:指定初始化引數檔案目錄
3、DDEFAULT_CHARSET:指定預設使用的字符集編碼,如 utf8。
5、DDEFAULT_COLLATION:指定預設使用的字符集校對規則,utf8_general_ci 是適用於 UTF-8 字符集的通用規則。
6、DWITH_INNOBASE_STORAGE_ENGINE=1 :安裝INNOBASE儲存引擎
7、DWITH_ARCHIVE_STORAGE_ENGINE=1 :安裝ARCHIVE儲存引擎
8、DWITH_BLACKHOLE_STORAGE_ENGINE=1 :安裝BLACKHOLE儲存引擎
9、DWITH_PERFSCHEMA_STORAGE_ENGINE :安裝PERFSCHEMA儲存引擎
其它常用的選項:
-DMYSQL_TCP_PORT=3306 設定預設埠的
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock MySQL程序間通訊的套接字的位置
-DENABLED_LOCAL_INFILE=1 是否啟動本地的LOCAL_INFILE
-DEXTRA_CHARSETS=all 支援哪些額外的字符集
-DDEFAULT_CHARSET=utf8 預設字符集
-DDEFAULT_COLLATION=utf8_general_ci 預設的字符集排序規則
-DWITH_DEBUG=0 是否啟動DEBUG功能
-DENABLE_PROFILING=1 是否啟用效能分析功能
4.4.4、編譯安裝及資料庫目錄進行許可權調整
1 make && make install 2 chown -R mysql:mysql /usr/local/mysql/
4.4.5、建立調整配置檔案
1 vi /etc/my.cnf
1 [client] 2 port = 3306 3 default-character-set=utf8 4 socket = /usr/local/mysql/mysql.sock 5 6 [mysql] 7 port = 3306 8 default-character-set=utf8 9 socket = /usr/local/mysql/mysql.sock 10 11 [mysqld] 12 user = mysql 13 basedir = /usr/local/mysql 14 datadir = /usr/local/mysql/data 15 port = 3306 16 character_set_server=utf8 17 pid-file = /usr/local/mysql/mysqld.pid 18 socket = /usr/local/mysql/mysql.sock 19 server-id = 1 20 21 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
1 chown mysql:mysql /etc/my.cnf
4.4.6、設定環境變數
1 echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile 2 echo 'export PATH' >> /etc/profile 3 source /etc/profile
4.4.7、安裝及開啟服務
1 cd /usr/local/mysql/ 2 bin/mysqld \ 3 --initialize-insecure \ 4 --user=mysql \ 5 --basedir=/usr/local/mysql \ 6 --datadir=/usr/local/mysql/data
1 cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ 2 systemctl enable mysqld 3 systemctl start mysqld 4 systemctl status mysqld 5 netstat -anpt | grep 3306
mysqladmin -u root -p password //剛開始沒密碼是空的直接回車,然後輸入密碼abc123,在此確認abc123,這是在root賬戶下執行的
mysql -u root -p ##這個命令敲下,提示要輸入密碼,這個就是剛才設定的密碼abc123
4.5、安裝PHP
4.5.1、安裝PHP環境
1 yum -y install \ 2 libjpeg \ 3 libjpeg-devel \ 4 libpng libpng-devel \ 5 freetype freetype-devel \ 6 libxml2 \ 7 libxml2-devel \ 8 zlib zlib-devel \ 9 curl curl-devel \ 10 openssl openssl-devel
4.5.2、上傳php-7.1.10.tar.bz2包到opt目錄下
4.5.3、解壓縮並安裝
1 cd /opt 2 tar xjvf php-7.1.10.tar.bz2 3 cd php-7.1.10 4 ./configure \ 5 --prefix=/usr/local/php \ 6 --with-apxs2=/usr/local/httpd/bin/apxs \ 7 --with-mysql-sock=/usr/local/mysql/mysql.sock \ 8 --with-mysqli \ 9 --with-zlib \ 10 --with-curl \ 11 --with-gd \ 12 --with-jpeg-dir \ 13 --with-png-dir \ 14 --with-freetype-dir \ 15 --with-openssl \ 16 --enable-mbstring \ 17 --enable-xml \ 18 --enable-session \ 19 --enable-ftp \ 20 --enable-pdo \ 21 --enable-tokenizer \ 22 --enable-zip
1 make && make install
編譯詳解:
1、prefix=/usr/local/php ###指定將 PHP 程式安裝到哪個目錄下
2、with-apxs2=/usr/local/httpd/bin/apxs ###設定 Apache HTTP Server 提供的 apxs 模組支援程式的檔案位置
3、with-mysql-sock=/usr/local/mysql/mysql.sock ###指定mysql的mysql.sock位置
4、with-mysqli ###mysqli擴充套件技術不僅可以呼叫MySQL的儲存過程、處理MySQL事務,而且還可以使訪問資料庫工作變得更加穩定。
5、with-zlib ###支援zlib功能--壓縮流
6、with-curl ###開啟curl擴充套件功能
libcurl目前支援http、https、ftp、gopher、telnet、dict、file和ldap協議。libcurl同時也支援HTTPS認證、HTTP POST、HTTP PUT、 FTP 上傳(這個也能通過PHP的FTP擴充套件完成)、HTTP 基於表單的上傳、代理、cookies和使用者名稱+密碼的認證。PHP中使用cURL實現Get和Post請求的方法
7、with-gd ###啟用gd庫的支援
8、with-jpeg-dir ###要啟用 jpeg 的支援
9、with-png-dir ###要啟用png的支援
10、enable-mbstring ###啟用多位元組字串功能,以便支援中文等程式碼。
4.5.4、配置檔案
evelopment /usr/local/php/lib/php.ini ###將php.ini-development開發樣板,複製到生產環境中去
1 vi /usr/local/php/lib/php.ini 2 mysqli.default_socket = /usr/local/mysql/mysql.sock 3 date.timezone = Asia/Shanghai
1 /usr/local/php/bin/php -m //驗證安裝的模組 2 vi /etc/httpd.conf ####在合適位置新增 3 AddType application/x-httpd-php .php 4 AddType application/x-httpd-php-source .phps 5 DirectoryIndex index.php index.html
如果開啟了虛擬主機功能,需要在主配置檔案裡將其註釋掉
4.5.5、刪除預設測試網頁並新建
1 rm -f /usr/local/httpd/htdocs/index.html 2 vi /usr/local/httpd/htdocs/index.php 3 <?php 4 phpinfo(); 5 ?>
4.5.6、重啟服務
1 systemctl restart httpd
4.5.7、下面測試資料庫工作是否正常(未設定密碼直接按回車進入)
1 mysql -u root -p 2 3 CREATE DATABASE myadm; 4 GRANT all ON myadm.* TO 'myadm'@'%' IDENTIFIED BY 'admin123'; 5 GRANT all ON myadm.* TO 'myadm'@'localhost' IDENTIFIED BY 'admin123'; 6 flush privileges;
1 vi /usr/local/httpd/htdocs/index.php 2 3 <?php 4 $link=mysqli_connect('20.0.0.10','myadm','admin123'); 5 if($link) echo "<h1>Success!!</h1>"; 6 else echo "Fail!!"; 7 ?>
4.6、安裝phpMyAdmin
4.6.1、上傳phpMyAdmin-4.7.6-all-languages.zip到opt下面
4.6.2、安裝
1 cd /opt 2 unzip phpMyAdmin-4.7.6-all-languages.zip 3 mv phpMyadmin-4.7.6-all-languages /usr/local/httpd/htdocs/myadm 4 cd /usr/local/httpd/htdocs/myadm
4.6.3、更改配置檔案
1 vi config.inc.php 2 $cfg['Servers'][$i]['host'] = '127.0.0.1'; //把localhost 改成IP 31行
4.6.4、測試
1 http://20.0.0.10/myadm #客戶端測試
注意:利用之前設定的使用者名稱root及密碼登入,空密碼不可以
總結:
apache可以獨立使用,當要支援動態網頁時,這個時候我們選擇了php語言來作為動態網頁的語言,因為是動態網頁,所以需要MySQL資料庫的支援,而php是一種網頁的檔案,沒辦法在網頁網站裡面直接訪問,因此需要在安裝過程中新增一些模組,而按照好的php也作為一種apache的功能擴充套件放進apache的配置檔案中,讓apache的網頁網站來支援php動態網頁,因此當訪問apache時也可訪問php動態網頁