教程:
http://www.imooc.com/learn/703
什么是LAMP?
LAMP = Linux + Apache + MySQL + PHP
為什么使用LAMP腮猖?
涵蓋整個(gè)Web開發(fā)流程罚斗。
流行( 全球70%網(wǎng)站在使用)眉撵,免費(fèi)(LAMP組成部分都是免費(fèi)的)空繁,開源怠李,輕量(最新Apache只有7M大谢稹)蛤克。
Linux:
開源的類Unix操作系統(tǒng),可以免費(fèi)使用和自由傳播夷蚊。
CentOS,RedHat,Ubantu构挤,紅旗等都是其發(fā)行版本。
Linux和Windows:
質(zhì)量的不同惕鼓。
用戶假設(shè)筋现,軟件哲學(xué)。
Linux優(yōu)勢(shì):完全免費(fèi)箱歧,穩(wěn)定高效
PHP:
MySQL:
開源矾飞,免費(fèi),高性能的數(shù)據(jù)庫呀邢。
Apache:
Web服務(wù)器軟件洒沦。
監(jiān)聽端口,接受請(qǐng)求价淌,解析HTTP協(xié)議申眼,轉(zhuǎn)發(fā)給PHP。
沒有apache也就沒有我們的網(wǎng)站開發(fā)蝉衣。
Nginx:
與apache一樣括尸,都是服務(wù)器軟件。
Nginx比apache:前景好买乃,配置輕松姻氨,性能更加優(yōu)秀。
apache是采用的輪詢機(jī)制剪验,nginx是一種高效的監(jiān)聽方式肴焊。
如何編譯安裝軟件?
編譯安裝是在Linux安裝軟件的重要方式之一功戚。
在linux中安裝軟件有兩種主要的方式:
1)編譯安裝
對(duì)軟件的源代碼進(jìn)行編譯安裝娶眷。
2)源安裝
比如在CentOS中使用yum安裝。
編譯安裝:
1)編譯前的準(zhǔn)備工作:
在命令行敲:
./configure
編譯為二進(jìn)制文件:
make
安裝:
make install
實(shí)戰(zhàn)環(huán)節(jié):
我們使用Oracle公司的VirtualBox這個(gè)軟件做一個(gè)虛擬機(jī)啸臀。
網(wǎng)站:virtualbox.org
創(chuàng)建centos虛擬機(jī)届宠,啟動(dòng)。(https://www.imooc.com/video/12897)
啟動(dòng)的時(shí)候需要下載系統(tǒng)鏡像乘粒。
安裝好重啟之后豌注,配置網(wǎng)卡:
注意還要添加DNS和網(wǎng)關(guān):
DNS1=8.8.8.8
GATEWAY=10.10.10.1 # 這些都是和自己的內(nèi)網(wǎng)一個(gè)網(wǎng)段的才行,包括上面的10.10.10.150灯萍。
http://www.jb51.net/os/RedHat/189963.html
重啟網(wǎng)卡:
systemctl restart network.service
使防火墻運(yùn)行22端口(ssh)連接:
firewall-cmd --zone=public --add-port=22/tcp --permanent
systemctl restart firewalld.service
在VirtualBox上面的網(wǎng)卡需要對(duì)虛擬機(jī)選擇橋接網(wǎng)卡(設(shè)置->網(wǎng)絡(luò)):
將其在VirtualBox中重新啟動(dòng)轧铁。之后,我們就可以重新登錄了旦棉。
LAMP之安裝PHP:
我們可以在我們自己的mac上面使用ssh去連接虛擬機(jī)了齿风。
# 先安裝vim和wget
yum install -y vim wget # 安裝vim可以安裝它以及它的一系列依賴
我們選擇安裝7.0.26版本的PHP:
http://php.net/downloads.php#v7.0.26
php-7.0.26.tar.gz 點(diǎn)擊药薯,進(jìn)入,選擇:Hong Kong
郵件拷貝連接(http://hk1.php.net/get/php-7.0.26.tar.gz/from/this/mirror):
注意:
我們拷貝的地址救斑,是(http://hk1.php.net/get/php-7.0.26.tar.gz.asc/from/this/mirror)
我們要?jiǎng)h除掉.asc
:
http://hk1.php.net/get/php-7.0.26.tar.gz/from/this/mirror
然后:
wget http://hk1.php.net/get/php-7.0.26.tar.gz/from/this/mirror
我們解壓.tar.gz文件:
tar -zxvf mirror
我們使用ll
童本,可以看到解壓之后的文件:
-rw-------. 1 root root 1454 Dec 4 14:59 anaconda-ks.cfg
-rw-r--r--. 1 root root 18824456 Nov 21 20:20 mirror.1
drwxr-xr-x. 15 liaodalin01 liaodalin01 4096 Nov 21 19:57 php-7.0.26
php解壓以后有一個(gè)問題,就是我們單純的安裝PHP脸候,不能和nginx一起工作穷娱,只能和apache一起工作。
如果想和nginx一起工作作為webserver,我們需要安裝一個(gè)軟件(也是php的一個(gè)組件)纪他,叫作:FPM鄙煤。
需要我們配置./configure的時(shí)候添加 --enable-fpm
用來激活FPM。
我們使用:
yum install -y gcc gcc++ libxml2-devel
我們來編譯安裝PHP:
1)configure茶袒。進(jìn)入解壓后的php-7.0.26根目錄,先configure
# 指定安裝路徑(一般來說是裝在/usr/local/下)
./configure --prefix=/usr/local/php7/ --enable-fpm
2)make編譯(會(huì)比較慢凉馆,編譯的時(shí)間長)
make
3)安裝
make install
安裝完成之后薪寓,我們?cè)诩夷夸浵氯y(cè)試:
cd ~
vim test.php
<?php
phpinfo();
然后執(zhí)行:
/usr/local/php7/bin/php test.php
我們可以看到php的info的打印結(jié)果。
了解:
php-fpm是什么澜共?
fastcgi的管理器向叉,只能適用于php.
fastcgi是與語言無關(guān)的開放擴(kuò)展,主要講cgi的解釋器進(jìn)程保持在內(nèi)存中嗦董,借此以獲取較高的性能母谎。
fastcgi一直執(zhí)行著,不過每一次都要花時(shí)間去fork一個(gè)子進(jìn)程京革。
cgi奇唤,全稱是公共網(wǎng)關(guān)接口。是一個(gè)協(xié)議匹摇。
再順序理一下:
CGI:是一個(gè)協(xié)議咬扇,能夠保證webserver傳遞過來的數(shù)據(jù)是標(biāo)準(zhǔn)格式,方便CGI程序的編寫者廊勃。
eg:我們?cè)L問index.php的時(shí)候懈贺,這個(gè)時(shí)候,nginx會(huì)根據(jù)配置文件坡垫,知道這個(gè)不是一個(gè)靜態(tài)文件二直接返回梭灿,需要執(zhí)行php解釋器來處理,nginx會(huì)發(fā)送數(shù)據(jù)給解釋器本次請(qǐng)求的url冰悠,以及請(qǐng)求參數(shù)等堡妒。總之屿脐,nginx給php傳遞什么數(shù)據(jù)都是由cgi這個(gè)協(xié)議來決定的涕蚤。
訪問index.php卖怜,nginx要啟動(dòng)cgi來處理,而我們的php解釋器就是一個(gè)cgi程序谤碳,現(xiàn)在再來看下fastcgi伞辛。
cgi在處理程序的時(shí)候會(huì)fork一個(gè)子進(jìn)程, 處理完成后釋放烦粒,下次來請(qǐng)求的時(shí)候休溶,再fork,再釋放扰她。這樣的方式大家會(huì)覺得很笨兽掰,效率不高,所以fastcgi誕生了徒役。
fastcgi是程序主動(dòng)啟動(dòng)一個(gè)進(jìn)程孽尽,這個(gè)進(jìn)程有n個(gè)子進(jìn)程,然后子進(jìn)程都會(huì)常駐在內(nèi)存中忧勿,避免了fork和釋放杉女。當(dāng)然,fastcgi在忙的時(shí)候也會(huì)自己?jiǎn)?dòng)新的子進(jìn)程來幫助鸳吸,在比較閑的時(shí)候又會(huì)將這些子進(jìn)程銷毀熏挎,保證資源不浪費(fèi)。
PHP-FPM(FastCGI Process Manager) 是實(shí)現(xiàn)了fastcgi這個(gè)協(xié)議的程序晌砾,之前是三方的坎拐,現(xiàn)在被PHP官網(wǎng)買了。(協(xié)議是用于被實(shí)現(xiàn)养匈,自己只有標(biāo)準(zhǔn)哼勇,沒有具體的實(shí)現(xiàn))。所以現(xiàn)在我們就可以直接在官方下載和使用了乖寒。
安裝mysql
我們進(jìn)入:
dev.mysql.org
DOWNLOADS - > Community -> MySQL Community Server -> Generally Available(GA) releales 下選擇Source Code, 和Generic Linux (Architecture Independent)猴蹂, 通用的linux架構(gòu)(Compressed TAR Archive)。
我們選擇下載楣嘁,我們是下載到虛擬機(jī)上磅轻,我們右鍵,拷貝鏈接逐虚。在:No thanks, just start my download那里:
(https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz)
我們?cè)谔摂M機(jī)中下載:
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
使用tar解壓:
tar -zxvf mysql
我們安裝一些依賴包:
yum install -y cmake gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel
我們進(jìn)入到解壓后的mysql根目錄聋溜,然后cmake 編譯:
注意:cmake是一個(gè)跨平臺(tái)的安裝工具。
最新版的mysql都使用cmake命令來進(jìn)行安裝叭爱,cmake的命令參數(shù)較多:
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/mysql/data \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_DOWNLOADS=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSET=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=0 \
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \
-DWITH_ZLIB:STRING=bundled
注意:
如果有錯(cuò)的話重新下載這個(gè)版本安裝:( wget http://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz)
安裝:
make install
我們就安裝好了mysql撮躁,使用:
mysqld
啟動(dòng)Mysql。
啟動(dòng)之后买雾,我們輸入:mysql
就可以進(jìn)入mysql了把曼。
安裝Apache
打開Apache官網(wǎng):httpd.apache.org
Download -> Apache HTTP Server 2.4.29 (httpd): 2.4.29 is the latest available version 2017-10-05
我們點(diǎn)擊右鍵杨帽,拷貝鏈接(http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.29.tar.gz)。
在命令行嗤军,下載到虛擬機(jī)用戶根目錄:
wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.29.tar.gz
使用tar解壓:
tar -zxvf httpd
cd進(jìn)入解壓apache解壓目錄.
./configure --prefix=/usr/local/apache2
就在進(jìn)行編譯前的準(zhǔn)備工作注盈。
如果有錯(cuò)誤說APR沒有被發(fā)現(xiàn),我們就安裝APR叙赚。
我們?cè)谟脩舾夸浵螺dAPR以及APR-Util:
wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
并解壓:
tar -zxvf apr
tar -zxvf apr-util
我們對(duì)apr和apr-util重命名老客。
mv apr-1.4.5 apr
mv apr-util-1.3.12 apr-util
我們要把這兩個(gè)文件夾(apr,apr-util)丟到httpd-2.4.20這個(gè)目錄中。
mv apr apr-utl httpd-2.4.20/srclib/
處理好apr和apr-util之后震叮,我們下載一個(gè)依賴pcre(正則):
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz
下載好安裝它(下載完之后它被命名為download文件夾)胧砰,它是最后一個(gè)依賴。
mv download pcre.tar.bz2
tar -jxvf pcre.tar.bz2
在解壓完成后苇瓣,進(jìn)入解壓目錄:
cd pcre-8.37/
配置:
./configure --prefix=/usr/local/pcre-8.37
然后編譯:
make
安裝:
make install