CentOS7部署LAMP平臺及應用

LAMP平臺概述


LAMP架構是目前成熟的企業網站應用模式之一,指的是協同工作的一整套系統和相關軟件,能夠提供動態Web站點服務及其應用開發環境。LAMP是一個縮寫詞,具體包括Linux操作系統、Apache網站服務器、MySQL數據庫服務器、PHP(或Perl、Python)網頁編程語言

構建LAMP時,各組件的安裝順序依次爲Linux、Apache、MySQL、PHP,其中Apache和MySQL的安裝並沒有嚴格的順序,而PHP環境的安裝一般放到最後,負責溝通Web服務器和數據庫系統以協同工作

LAMP的構成組件

  • Linux操作系統:作爲LAMP架構的基礎,提供用於支撐Web站點的d操作系統,能夠與其他三個組件提供更好的穩定性、兼容性(AMP組件也支持Windows、UNIX等操作系統)

  • Apache網站服務器:作爲LAMP架構的前端,是一款功能強大、穩定性好的Web服務器程序,該服務器直接面向用戶提供網站訪問,發送網頁、圖片等文件內容

  • MySQL數據庫服務器:作爲LAMP架構的後端,是一款流行的開源關係數據庫系統。在企業網站、業務系統等應用中,各種賬戶信息、產品信息、客戶資料、業務數據等可以存儲到MySQL數據庫,其它程序可以通過MySQL語句來查詢、更改這些信息

  • PHP、Perl、Python網頁編程語言:作爲三種開發動態網頁的編程語言,負責解釋動態網頁文件,並提供Web應用程序的開發和運行環境。其中PHP是一種被廣泛應用的開放源代碼的多用途腳本語言,它可以嵌入到HTML中,尤其適合於Web應用開發

LAMP的應用優勢

  • 成本低廉:構成組件都是開放源代碼的軟件,可以自由獲得和免費使用,在技術上和許可證方面沒有太嚴格的限制,大大降低企業成本

  • 可定製:擁有大量的額外組件和可擴展功能的模塊,能夠滿足大部分企業應用的定製需求,甚至可以自行開發、添加新的功能

  • 方便易用:PHP、Perl等屬於解釋性語言,開發的各種Web程序不需要編譯,方便進行移植使用。整套的網站項目程序,通常只要複製到網站目錄下,就可以直接訪問

  • 易於開發:基於LAMP平臺的動態網站中,頁面代碼簡潔,與HTML標記語言的結合度非常好,即使是非專業的程序員也能夠輕鬆讀懂乃至修改網頁代碼

  • 安全和穩定:得益於開源的優勢,大量的程序員在關注並持續改進LAMP平臺的各個組件,發現的問題能夠很快得到解決。LAMP架構已經經歷了數十年的長期驗證,在安全性和穩定性方面表現得非常優秀

使用YUM安裝


系統環境:

CentOS 7.5.1804_64bit

LAMP各組件版本:

跟隨YUM倉庫內軟件包的版本

安裝LAMP軟件包

yum install httpd httpd-devel mysql mysql-server mysql-devel php php-mysql php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath

設置mysql密碼

mysql -u root
mysql>USE mysql; 
mysql>UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root'; 
mysql>FLUSH PRIVILEGES; 

允許遠程登錄mysql數據庫

mysql -u root -p 
Enter Password: <your new password> 
mysql>GRANT ALL PRIVILEGES ON . TO '用戶名'@'%' IDENTIFIED BY '密碼' WITH GRANT OPTION; 

防火牆設置開啓80、443端口

firewall-cmd --permanent --zone=public  --add-service=http
firewall-cmd --permanent --zone=public  --add-service=https
firewall-cmd –reload

服務開機自啓動

systemctl enable httpd
systemctl enable mysqld

使用源碼編譯安裝


系統環境:

CentOS 7.5.1804_64bit

LAMP各組件版本:

httpd-2.4.38、mysql-5.6.43、php-7.3.3

安裝Apache(2.4)

準備工作

rpm -e httpd --nodeps
//卸載使用RPM方式安裝的httpd

yum -y install -y apr apr-util pcre apr-devel apr-util-devel pcre-devel gcc
//安裝依賴軟件包

wget http://www.openssl.org/source/openssl-1.1.0-latest.tar.gz
//安裝Openssl支持https協議訪問,下載源碼包

tar -zxvf openssl-1.1.0-latest.tar.gz -C /usr/src/
//解包

cd /usr/src/openssl-1.1.0j/
//進入解壓目錄

./config --prefix=/usr/local/ssl –shared
//配置編譯選項

make && make install
//編譯安裝

echo /usr/local/ssl/lib/ >>/etc/ld.so.conf
//將動態庫路徑加入系統路徑中

ldconfig
//加載動態庫以便系統共享

下載Apache源碼包:<http://httpd.apache.org/download.cgi&gt;

源碼編譯及安裝。

tar -zxvf httpd-2.4.38.tar.gz -C /usr/src/
//解包

cd /usr/src/httpd-2.4.38/
//進入解壓目錄

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-ssl --with-ssl=/usr/local/ssl --with-mpm=prefork --enable-charset-lite --enable-cgi
//配置編譯選項

make && make install
//編譯並安裝

優化執行路徑

echo "PATH=$PATH:/usr/local/httpd/bin/" >>/etc/profile
//將Apache命令添加到PATH搜索路徑中,寫入/etc/profile永久保存

source /etc/profile
//立即讀取/etc/profile生效配置 

添加httpd爲系統服務

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
//拷貝默認啓動腳本文件到服務控制目錄

vim /etc/init.d/httpd
#!/bin/sh
# chkconfig:235 88 88                   /服務識別參數,指定3、5級別順序啓動標識號
# description:httpd server                    /描述(需配套使用)
//文件開頭添加chkconfig識別配置,不添加chkconfig添加服務時報錯

chkconfig --add httpd
//將httpd添加爲系統服務

systemctl enable httpd
//開機自啓動

chkconfig --list httpd
//查看httpd服務的自啓動狀態

配置並啓動httpd服務

vim /usr/local/httpd/conf/httpd.conf
197 ServerName www.hiahia.com:80
//編輯httpd主配置文件,尋找該行(197行) ,設置網站名稱

apachectl -t
//檢測httpd.conf文件是否有語法錯誤;“Syntax OK”則無誤

systemctl start httpd
//啓動httpd服務

systemctl status httpd
//查看httpd服務運行狀態

訪問測試

首先需要解決防火牆問題,CentOS7默認自帶的防火牆爲firewalld,解決方法如下,二選一。

firewall-cmd --permanent --zone=public  --add-service=http
firewall-cmd --permanent --zone=public  --add-service=https
firewall-cmd –reload
//允許firewall防火牆通過80、443端口

systemctl stop firewalld
systemctl disable firewalld
//關閉firewall防火牆,並且開機禁用

在這裏插入圖片描述

//訪問服務器地址測試

安裝MySQL(5.6)

準備工作

rpm -e mysql-server mysql
//卸載使用RPM方式安裝MySQL軟1件包

yum -y install ncurses-devel cmake
//安裝依賴軟件包

下載MySQL5.6源碼包<https://dev.mysql.com/downloads/mysql/&gt;

源碼編譯及安裝

tar -zxvf mysql-5.6.43.tar.gz -C /usr/src/
//解包

useradd -M -r -s /sbin/nologin mysql
//新建mysql系統用戶

mkdir -p /data/mysql/data
//嵌套創建數據目錄

chown -R mysql.mysql /data/mysql/data/
//更改數據目錄屬主和屬組

cd /usr/src/mysql-5.6.43/
//進入解壓目錄

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_EXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

編譯選項:
-DCMAKE_INSTALL_PREFIX:指定MySQL安裝位置
-DDEFAULT_CHARSET:指定默認字符集編碼
-DDEFAULT_COLLATION:指定默認使用字符集校對規則
-DWITH-EXTRA-CHARSETS:指定額外支持的其他字符集編碼
-DSYSCONFDIR:配置文件存儲位置
//配置編譯選項

make && make install
//編譯並安裝

安裝後的其它調整

chown -R mysql.mysql /usr/local/mysql/
//更改安裝目錄屬主和屬組

rm -rf /etc/my.cnf
//刪除默認存在my.cnf文件

mv /usr/local/mysql/my.cnf /etc/my.cnf
//移動默認的配置文件到/etc/下

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/data

選項:
--user:指定運行用戶
--basedir:指定MySQL數據庫位置
--datadir:指定MySQL數據存儲位置
//執行初始化數據庫腳本

echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
//添加MySQL到搜索路徑,方便執行命令

source  /etc/profile
//立即讓profile文件內容生效

添加系統服務

cp /usr/src/mysql-5.6.43/support-files/mysql.server /etc/init.d/mysqld
//拷貝服務腳本文件到/etc/init.d位置

chkconfig --add mysqld
//添加爲系統服務

systemctl enable mysqld
//設置開機自啓

chkconfig --list mysqld
//查看開機啓動狀態

訪問測試

mysql – uroot -p
//登入mysql,默認沒有密碼,直接回車即可

安裝PHP(7.3)

準備工作

rpm -e php php-cli php-ldap php-common php-mysql --nodeps
//卸載使用RPM等方式安裝的PHP相關軟件包

yum -y install zlib-devel libxml2-devel libtool-ltdl-devel
//安裝依賴包

編譯安裝PHP

tar -zxvf php-7.3.3.tar.gz -C /usr/src/
//解包

cd /usr/src/php-7.3.3/
//定製PHP的配置選項時,最關鍵的是要指定httpd、mysqld的安裝路徑,以便添加相應支持設置,使LAMP各組件協同工作。除此之外,還可以指定安裝路徑、啓動多字節支持、加密擴展支持等,請按需添加。

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --with-pdo-mysql=/usr/local/mysql/ --with-openssl --with-config-file-path=/usr/local/php --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mhash --enable-mbstring

編譯選項(./configure --help 查看編譯參數):
--prefix:指定PHP安裝目錄
--with-apxs2:設置Apache HTTP Server提供的apxs模塊支持程序的文件位置
--with-mysqli:安裝mysqli擴展
--with-pdo-mysql:安裝pdo擴展
--with-openssl:添加openssl支持
--with-config-file-path:設置PHP的配置文件php.ini將要存放的位置
--enable-mbstring:啓動多字節字符串功能,以便支持中文等代碼
make && make install
//編譯並安裝

php -v
//安裝完成查看版本

echo "PATH=$PATH:/usr/local/php/bin" >> /etc/profile
//命令目錄加入PATH搜索路徑

source /etc/profile
//立即讀取文件,生效配置

配置PHP-FPM

cp php-7.3.3/php.ini-development /usr/local/php/php.ini
//拷貝php.ini模板配置文件,下面會詳細講解

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
//拷貝php-fpm模板配置文件

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
//拷貝啓動腳本到服務管理目錄

chmod +x /etc/init.d/php-fpm
//給予啓動腳本執行權限

/etc/init.d/php-fpm start
//啓動php-fpm

ps -ef | grep php
//查看php-fpm進程

安裝Mcrypt擴展

實際企業應用中,一部分基於PHP開發的Web應用系統會需要額外的擴展工具,如數據加密工具libmcrypt、mhash、mcrypt等

PHP7 要想使用 Mcrypt, 需要安裝相應依賴包以及擴展模塊,mcrypt 擴展從 php 7.1.0 開始廢棄;自 php 7.2.0 起,會移到 pecl

在 php 官網下載 mcrypt 包 http://pecl.php.net/package/mcrypt

yum install libmcrypt libmcrypt-devel mcrypt mhash
// yum 安裝依賴包

wget http://pecl.php.net/get/mcrypt-1.0.2.tgz
//wget下載軟件包到本地

tar -xf mcrypt-1.0.2.tgz -C /usr/src/
//解包

cd /usr/src/mcrypt-1.0.2/
//進入解壓目錄

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config
//配置編譯選項mcrypt

make && make install && make test
//編譯並安裝

vim /usr/local/php/php.ini

extension=mcrypt.so
//在php.ini加上mcrypt擴展選項

/etc/init.d/php-fpm restart
//重啓 php-fpm

設置LAMP組件環境

設置LAMP組件環境,主要包括對PHP的配置文件php.ini、Apache的配置文件httpd.conf的調整。前者用來確定PHP的運行參數,後者用來加載libphp7.so,以便支持PHP網頁

php.ini配置調整

安裝好PHP軟件包以後,服務器並不會自動創建php.ini配置文件,但在源碼目錄下提供兩個樣例配置文件,分別對應於開發環境、生產環境

/usr/src/php-7.3.3/php.ini-development

//開發版樣例文件,用於學習、測試

/usr/src/php-7.3.3/php.ini-production

//生產版樣例文件,用於實際運營

選擇其中一個樣例文件,並複製到PHP配置文件目錄/usr/local/php下,並改名爲php.ini。在php.ini配置文件中,以分號開頭的內容表示註釋信息

cp /usr/src/php-7.3.3/php.ini-development /usr/local/php/php.ini

通過修改php.ini文件中的配置內容,可以控制PHP網頁的執行特性,如是否允許用戶上傳文件、設置上傳文件的大小限制、設置默認使用的字符集、加載額外的擴展模塊等。如果沒有特殊要求,可以沿用默認配置,不做任何修改

vim /usr/local/php/php.ini
default_charset = "utf-8"                      //設置默認字符集爲utf-8
file_uploads = On                                         //允許通過PHP網頁上傳文件
upload_max_filesize = 2M                           //允許上傳的文件大小限制
max_file_uploads = 20                                 //每個HTTP最多允許請求上傳的文件數
post_max_size = 8M                             //每次提交表單post提交的數據量限制
192  short_open_tag = On                                //允許識別PHP短語法標記,即<?...?>

httpd.conf配置調整

要使httpd服務器支持PHP頁面解析功能,需通過LoadModule配置項加載PHP程序的模塊文件,並通過AddType配置項添加對“.php”類型網頁文件的支持。除此還應修改Directory配置行,添加index.php配置項,以識別常見的PHP首頁文件

vim /usr/local/httpd/conf/httpd.conf
156       LoadModule php7_module        modules/libphp7.so
394        AddType application/x-httpd-php .php
256       DirectoryIndex index.html index.php

上述配置中,LoadModule行在安裝PHP過程自動添加,其中的“php7_module”表示模塊名稱;“modules/libphp7.so”表示模塊文件位置。而AddType行需要手動添加,DirectoryIndex行原有基礎上對其進行修改即可

測試LAMP協同工作

測試PHP網頁能否正確顯示

編寫“.php”格式的測試網頁文件,使用PHP內建的“phpinfo()”函數顯示服務器的PHP環境信息,PHP代碼應包括在“<?php ...?>”標記字之間。將測試網頁文件放置到網站根目錄下

vim /usr/local/httpd/htdocs/test1.php
<?php
phpinfo();
?>
systemctl restart httpd
//重啓httpd服務

在這裏插入圖片描述

在這裏插入圖片描述

//可以看到剛剛安裝的mcrypt擴展被php成功加載

測試PHP網頁能否訪問MySQL數據庫

編寫測試網頁文件test2.php和test3.php,添加簡單的數據庫操作命令,用於驗證與MySQL服務器的連接、查詢等操作。其中“PDO()”“mysqli()”函數用於連接MySQL數據庫,需要指定目標主機地址,以及授權訪問的用戶名、密碼(可爲空)。

​ 題外話:使用PDO或mysqli都可以連接mysql,但更推薦使用PDO連接數據庫,因爲PDO支持12種不同的數據庫驅動程序,mysqli只支持mysql,而且PDO性能更高。

​ 這裏需要測試的是,是否兩種方法都可用,如果其中一種方法不可用。請自行安裝該方法的擴展包,然後再次測試。

vim /usr/local/httpd/htdocs/test2.php
<?php
    $mysqli=new PDO('mysql:host=localhost;port=3306','root','');
    if(!$mysqli)  {
        echo"database error";
    }
    else{
        echo"php env successful";
    }
    $mysqli = null;
?>
//php代碼大意:使用php語言新建一個數據庫連接,如果連接失敗則返回字符“database error”否則返回字符“php env successful”代表數據庫連接成功。php環境搭建完成

在這裏插入圖片描述

vim /usr/local/httpd/htdocs/test3.php
<?php
    $mysqli = new mysqli('localhost','root','');
    if(!$mysqli)  {
        echo"database error";
    }
    else{
        echo"php env successful";
    }
    $mysqli->close();
?>

在這裏插入圖片描述

LAMP架構應用案例


部署phpMyAdmin系統

phpMyAdmin是一個使用PHP語言編寫的lamp管理套件,用來圖形化管理MySQL數據庫的Web應用系統。

下載軟件包

下載最新版本即可,官網:<https://www.phpmyadmin.net/&gt;

以多國語言版源碼包phpMyAdmin-4.8.5-all-languages.tar.gz爲例安裝

解包並複製到網站目錄

tar -zxvf phpMyAdmin-4.8.5-all-languages.tar.gz

mv phpMyAdmin-4.8.5-all-languages/ /usr/local/httpd/htdocs/phpMyAdmin
//移動到網站目錄下重命名爲phpMyAdmin

建立配置文件config.inc.php

cp /usr/local/httpd/htdocs/phpMyAdmin/config.sample.inc.php /usr/local/httpd/htdocs/phpMyAdmin/config.inc.php

訪問phpMyAdmin的web管理界面域名後綴加/phpMyAdmin訪問

在這裏插入圖片描述

mysqladmin -u root password "pwd@123"
//phpMyAdmin登陸需要數據庫密碼,所以設置root用戶密碼,測試使用。一般不建議使用這種方式設置密碼,因爲是明文的,可以通過歷史命令查看到。

在這裏插入圖片描述
//部署完成,可以通過可視化web界面管理數據庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章