理論
什么是LAMP? ??
LAMP = Linux + Apache + MySQL +PHP
為什么使用LAMP
涵蓋了整個(gè)web的開發(fā)流程
流行、免費(fèi)、開源、輕量(新版的Apache只有7M)
Linux
開源的類Unix操作系統(tǒng),可以免費(fèi)使用和自由傳播
Centos、Ubuntu、Redhat、紅旗都是其他發(fā)行版本
Linux與Windows
Linux與Windows有質(zhì)的不同
用戶假設(shè)(面向的群體,Linux的用戶明白自己做什么 想要什么 并會為此行為負(fù)責(zé),Windows則恰恰相反,通俗來說就是高端與小白用戶)、軟件哲學(xué)
Linux的優(yōu)勢是完全免費(fèi)、穩(wěn)定高效(windows不能長時(shí)間不關(guān)機(jī)使用、軟件卸載不干凈等...)
PHP
不概述
MySQL
開源、免費(fèi)、高性能的關(guān)系型數(shù)據(jù)庫
Apache
apache是web服務(wù)器軟件
運(yùn)行大致流程:首先客戶端通過瀏覽器訪問一個(gè)IP 》 這個(gè)IP上肯定啟動了服務(wù)器軟件,且(apache)監(jiān)聽了某一個(gè)端口 》數(shù)據(jù)順著端口進(jìn)入了apache 》 apache拿到數(shù)據(jù)通過http/https協(xié)議等進(jìn)行解析 整理數(shù)據(jù),轉(zhuǎn)發(fā)給PHP進(jìn)行業(yè)務(wù)的處理 》 PHP業(yè)務(wù)處理完成之后再返回給apache 》 apache最后再返回給客戶端 》客戶端從瀏覽器展示給了用戶
Nginx
Nginx與Apache一樣,都是web服務(wù)器軟件
目前最受歡迎的服務(wù)器軟件
nginx與apache相比:Nginx擁有更好的前景、配置輕松、性能優(yōu)越(對于性能的優(yōu)越下面大致闡述)
????? ??性能優(yōu)越:Apache采用的是select輪訓(xùn)機(jī)制,所謂的輪訓(xùn)打個(gè)比方說就是它可能監(jiān)聽了1000個(gè)鏈接,其中不論哪一個(gè)鏈接發(fā)生了變化或者新的動態(tài),它會采用for循環(huán)一樣的東西,進(jìn)行循環(huán)來看,并且這個(gè)循環(huán)是個(gè)死循環(huán)。但是對于Nginx來說,它采用的是epoll,epoll是一個(gè)非常高效的事件監(jiān)聽機(jī)制,它不會主動的輪訓(xùn),而是采用了監(jiān)聽 哪一個(gè)鏈接發(fā)生了變化,然后第一時(shí)間感知 然后將鏈接進(jìn)行處理。
編譯安裝 及 如何進(jìn)行編譯安裝(主要有兩種方式)
編譯安裝是在Linux中安裝軟件的主要方式之一 (將下載的軟件源代碼進(jìn)行編譯 安裝。方式二 源安裝 (centos中使用的yum、debian系列中的apt-get等)
一、編譯前的準(zhǔn)備工作? ?./configure
二、編譯:make? ? (將源碼編譯成二進(jìn)制文件)
三、安裝:make install?
實(shí)戰(zhàn)
本節(jié)是闡述在云服務(wù)器安裝la/nmp環(huán)境 并沒有從底層搭建開始,如果是虛擬機(jī)用戶 后期會出相應(yīng)教程
安裝PHP
第一步:訪問?php 官網(wǎng),并且點(diǎn)擊導(dǎo)航欄下載(download),在眾多PHP版本中選擇版本(我選擇了?php-7.1.16)
第二步:點(diǎn)擊php-7.1.16找到鏡像下載站點(diǎn)(我選擇了香港 'hk1.php.net'),右鍵 復(fù)制該下載鏈接
第三步:在遠(yuǎn)程命令窗口中輸入以下命令?(其中http://hk1.php.net/get/php-7.1.16.tar.gz/from/this/mirror就是我們官網(wǎng)復(fù)制的鏈接)
wget http://hk1.php.net/get/php-7.1.16.tar.gz/from/this/mirror
以上命令行如果 顯示未找到 wget 命令,說明沒有這個(gè)小工具,需要安裝,輸入命令?sudo yum install wget?安裝
第四步:輸入命令,解壓下載完成的tar包
tar -zxvf mirror
第五步:這一步只是一個(gè)小常識 單純的安裝PHP是不能與Nginx一起工作的,它只能與Apache一起工作,如果想安裝Nginx來作為web server的話,需要安裝一個(gè)軟件 叫做phpfpm,phpfpm是以補(bǔ)丁的形勢存在的,點(diǎn)擊這里是對phpfpm安裝的簡介,其中有一句“編譯 PHP 時(shí)需要?--enable-fpm?配置選項(xiàng)來激活 FPM 支持?!?/p>
第六步:因?yàn)槭蔷幾g安裝 所以我們要下載編譯的軟件工具 gcc 和其他一些組件,輸入以下命令安裝
sudo yum install gcc gcc++ libxml2-devel
用了root權(quán)限安裝 (sudo)
第七步:cd /php-7.1.16 后?使用 ./configure 進(jìn)行編譯安裝的第一步 (安裝成功會在最后看到 Thank you for using PHP. )
./configure --prefix=/usr/local/php7 --enable-fpm
命令解釋 :./configure 安裝前的配置? ?--prefix= 安裝的目錄? ? --enable-fpm編譯 PHP 時(shí)需要?--enable-fpm?配置選項(xiàng)來激活 FPM 支持。
注意:輸入以上命令之后先不要著急去/usr/local/下找php7這個(gè)目錄, 會不顯示出來,要留在php-7.1.16目錄中
第八步:在php-7.1.16目錄中輸入命令
make
由于此刻編譯時(shí)間較久 先大致敘述一下什么是 phpfpm
????????phpfpm是fast CGI的管理器,只能適用于PHP。
什么是fastCGI 與 CGI?
? ??? ? fast CGI是與語言無關(guān)的CGI開放擴(kuò)展,主要將CGI進(jìn)程保持在內(nèi)存當(dāng)中,借此獲得較高的性能,fastCGI每次都會執(zhí)行著,不會每一次都去fork一個(gè)子進(jìn)程。相對于CGI來說,每次fork一個(gè)子進(jìn)程是CGI固定的模式。
CGI的全稱是 公共網(wǎng)關(guān)接口 它是一個(gè)協(xié)議,約定web server與動態(tài)程序之間的數(shù)據(jù)傳輸
白話翻譯什么是fastCGI與CGI
? ? fastCGI:CGI在處理請求的時(shí)候會fork一個(gè)子進(jìn)程,處理完成之后會釋放,下一次請求的時(shí)候再fork再釋放,這種方式比較沒有效率。因此fastCGI誕生了,fastCGI是程序主動啟用一個(gè)進(jìn)程,這個(gè)進(jìn)程下有多個(gè)子進(jìn)程并且這些子進(jìn)程都會常駐在內(nèi)存當(dāng)中,就避免了fork 與 釋放。當(dāng)然了,fastCGI在忙的時(shí)候也會啟用新的進(jìn)程來幫忙,在閑暇時(shí)又會將閑暇的進(jìn)程結(jié)束保證了資源不被浪費(fèi)。
????CGI:是保證web server傳輸過來的數(shù)據(jù)是標(biāo)準(zhǔn)格式方便CGI程序的編寫者(打個(gè)比方 在Nginx下訪問 index.php,這時(shí)Nginx會啟動CGI來處理,而我們的PHP解釋器它就是一個(gè)CGI程序)
什么是phpfpm?
????? ? phpfpm就是實(shí)現(xiàn)了fastCGI這個(gè)協(xié)議的程序,是第三方的,后來被PHP官方購買了。所以現(xiàn)在我們就可以在官網(wǎng)下載并使用了。
第九步:編譯完成后最后顯示make test 表示編譯成功,繼續(xù)執(zhí)行以下命令
sudo make install
第十步:執(zhí)行安裝之后我們可以創(chuàng)建一個(gè)測試用例 執(zhí)行以下測試文件 看看是否安裝成功了。
cd /
touch index.php
vim index.php
/usr/local/php7/bin/php index.php
????????以上如果執(zhí)行結(jié)果是PHP的信息 說明PHP安裝成功!
-- complate!
安裝MySQL
源碼安裝MySQL比較費(fèi)勁,追求效率點(diǎn)擊這里去yum安裝吧,但是還是建議沒有試驗(yàn)過的試試源碼安裝的過程,感受一下。
第一步:和下載PHP步驟一樣,打開mysql官網(wǎng)下載然后在最下面有一個(gè)下拉框,下拉選Source Code(源代碼)下載
第二步:選擇“Generic Linux (Architecture Independent), Compressed TAR Archive” (通用的Linux架構(gòu))點(diǎn)擊 Download
第三步:此時(shí)會有頁面表示登錄/注冊下載,左下角有No thanks... 我們鼠標(biāo)放在Nothanks上復(fù)制這個(gè)a標(biāo)簽的鏈接
第四步:weget下載
wget?https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11.tar.gz
第五步:解壓mysql
tar -zxvf mysql-8.0.11.tar.gz?
第六步:安裝mysql的依賴工具
sudo yum install cmake gcc-c++ ncurses-devel perl-Data_dumper boost boost-doc boost-devel
第七步:編譯
cmake?-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\
-DMYSQL_DATADIR=/usr/local/mysql/data\
-DSYSCONFDIR=/etc\
-DMYSQL_USER=mysql?\
-DWITH_MYISAM_STORAGE_ENGINE=1?\
-DWITH_INNOBASE_STORAGE_ENGINE=1?\
-DWITH_ARCHIVE_STORAGE_ENGINE=1?\
-DWITH_READLINE=1?\
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock?\
-DMYSQL_TCP_PORT=3306?\
-DENABLED_LOCAL_INFILE=1?\
-DENABLED_DOWNLOADS=1?\
-DWITH_PARTITION_STORAGE_ENGINE=1?\
-DEXTRA_CHARSETS=all?\
-DDEFAULT_CHARSET=utf8?\
-DDEFAULT_COLLATION=utf8_general_ci?\
-DWITH_DEBUG=0?\
-DMYSQL_MAINTAINER_MODE=1?\
-DWITH_SSL:STRING=bundled?\
-DWITH_ZLIB:STRING=bundled?\
-DDOWNLOAD_BOOST=1?\
-DWITH_BOOST=/usr/share/doc/boost-doc-1.41.0/
cmake命令是一個(gè)跨平臺的安裝工具? ? cmake安裝命令的參數(shù)較多,如果運(yùn)行 cmake 版本過低點(diǎn)擊這里去升級自己cmake的版本
第八步:make
編譯過程會比較慢,對于配置較低的服務(wù)器,可能會在編譯中突然中斷并error,百度一下error信息,如果是因?yàn)閮?nèi)存過小而中斷,建議使用yum安裝吧!? 如果編譯失敗點(diǎn)擊這里去yum源安裝mysql (刪除以上mysql所操作的所有相關(guān)文件、文件夾),成功編譯的請忽略這段話,繼續(xù)以下的步驟
第九步:sudo make install
--complate! 安裝完成之后需要對數(shù)據(jù)庫一個(gè)小小的配置? 簡要步驟如下
1. 配置mysql文件:
? ? > cd /etc/my.cnf?
? ? # 加入配置參數(shù)
? ? > character-set-server=utf8?
2.登錄mysql
>mysql -u root -p
3.允許遠(yuǎn)程連接
use mysql;
update user set Host='%', Password=PASSWORD('這里填寫你設(shè)置的密碼') where Host='127.0.0.1';
flush privileges;
exit;
4.最后重啟
service mysqld resatrt
測試一下? ? ? ? 時(shí)間較倉促 如果有問題 電郵我 yahx6037@foxmail.com
安裝Apache
第一步:和安裝php與mysql一樣 都是訪問官網(wǎng)的下載地址 然后wget。apache的正確下載地址在 httpd.apache.org 中
wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.4.33.tar.gz
第二步:解壓 并進(jìn)入 使用configure
./configure --prefix=/usr/local/apache2
執(zhí)行完成之后會?????
error: APR not found.?Please read the documentation.
提示我們安裝 APR
第三步:安裝APR依賴? apr 訪問地址http://archive.apache.org/dist/apr
cd /
wget http://archive.apache.org/dist/apr/apr-1.6.2.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.6.0.tar.gz
tar -zxvf apr-1.6.2.tar.gz
tar -zxvf apr-util-1.6.0.tar.gz
第四步:下載解壓之后 要對這兩個(gè)文件進(jìn)行重命名 去掉各自的版本號
mv apr-util-1.6.0 apr-util
mv apr-1.6.2 apr
第五步:移動這兩個(gè)依賴文件到 httpd的一個(gè)文件下
mv apr apr-util httpd-2.4.33/srclib/
第六步:下載最后一個(gè)依賴(一個(gè)正則pcre) 然后使用configure進(jìn)行編譯前的安裝準(zhǔn)備
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
tar -zxvf pcre-8.38.tar.gz
./configure --prefix=/usr/local/pcre-8.38
make
sudo make install
第七步:在安裝了apache安裝所需的?apr、apr-util、pcre 三個(gè)依賴之后?進(jìn)入apache目錄 進(jìn)行apache安裝
cd httpd-2.4.33
./configure --prefix=/usr/local/apache -with-pcre=/usr/local/pcre-8.38/bin/pcre-config -with-included-apr
# 以上步驟可能會報(bào)錯 錯誤信息如下
error: Bundled APR-Util requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.
# 解決辦法
cd /usr/local/src/
wget http://apache.fayea.com/apr/apr-1.6.3.tar.bz2
wget http://apache.fayea.com/apr/apr-util-1.6.1.tar.bz2
tar -jxvf apr-util-1.6.1.tar.bz2
tar -jxvf apr-1.6.3.tar.bz2
cp -rf apr-1.6.3 /httpd-2.4.33/srclib/apr
cp -rf apr-util-1.6.1 /httpd-2.4.33/srclib/apr-util
# 然后再回到根目錄 重復(fù)第七步
第八步:編譯 安裝
make
sudo make install
第九步:驗(yàn)證是否安裝成功!
cd /usr/local/apache/bin/
sudo ./apachectl -k start
#? 此時(shí)會有一或兩個(gè)錯誤
# 錯誤? AH00558:
#? 或 錯誤 AH00559:
#? 上面的錯誤先不用管,那是配置虛擬主機(jī)的問題
第十步:依舊驗(yàn)證是否安裝成功
?因?yàn)槭前⒗镌?所以在安全策略組的配置中已經(jīng)開啟了80端口,所以我們直接在本地瀏覽器訪問云服務(wù)器公網(wǎng)的ip
?如果顯示?
It works!
表示安裝成功 請忽略以下步驟
如果顯示拒絕訪問或沒有開啟防火墻的80端口 可以輸入以下命令,
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo systemctl restart firewalld.service
再次瀏覽器訪問顯示 it works! 正常
安裝Nginx
? ? 待更新 ....? ? 疑問email yahx6037@foxmail.com