LAMP是Linux Apache MySQL PHP的縮寫,即把Apache、MySQL以及PHP安裝在Linux系統(tǒng)上,組成一個(gè)環(huán)境來(lái)運(yùn)行PHP的腳本語(yǔ)言。Apache是最常用的Web服務(wù)軟件,而MySQL是比較小型的數(shù)據(jù)庫(kù)軟件。三個(gè)角色可以安裝在一臺(tái)機(jī)器上,也可以分開(但httpd和php要在一起的)
下面來(lái)介紹如何構(gòu)建LAMP環(huán)境:
安裝MySQL:(Mariadb安裝幾乎一樣)
(1)MySQL/Mariadb介紹
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù),由mysql ab公司開發(fā),mysql在2008年被sun公司收購(gòu)(10億刀),2009年sun公司被Oracle公司收購(gòu)(74億刀)
MySQL官網(wǎng)https://www.mysql.com 最新版本5.7GA/8.0DMR
MySQL5.6變化比較大,5.7性能上有很大提升
Mariadb為MySQL的一個(gè)分支,官網(wǎng)https://mariadb.com/最新版本10.2
MariaDB主要由SkySQL公司(現(xiàn)更名為MariaDB公司)維護(hù),SkySQL公司由MySQL原作者帶領(lǐng)大部分原班人馬創(chuàng)立.
Mariadb5.5版本對(duì)應(yīng)MySQL的5.5,10.0對(duì)應(yīng)MySQL5.6
Community 社區(qū)版本,Enterprise 企業(yè)版,GA(Generally Available)指通用版本,在生產(chǎn)環(huán)境中用的,DMR(Development Milestone Release)開發(fā)里程碑發(fā)布版,RC(Release Candidate)發(fā)行候選版本,Beta開放測(cè)試版本,Alpha內(nèi)部測(cè)試版本
(2)MySQL安裝過(guò)程:
①下載源碼包到/usr/local/src/目錄下:
進(jìn)入該目錄:cd /usr/local/src/
下載源碼包:wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
②解壓,然后挪動(dòng)位置/usr/local/mysql
解壓:tar -zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
[ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_old 這一步意思:是否存在mysql目錄了,有的話,修改就mysql目錄名稱!
挪動(dòng)位置:mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
③創(chuàng)建MySQL用戶,啟動(dòng)MySQL需要該用戶:useradd -s /sbin/nologin mysql
④創(chuàng)建MySQL數(shù)據(jù)庫(kù)文件存放目錄/data/mysql并更改權(quán)限:mkdir -p /data/mysql; chown -R mysql:mysql /data/mysql;
⑤進(jìn)入/usr/local/mysql目錄,初始化:./scripts/mysql_install_db –user=mysql –datadir=/data/mysql
這里會(huì)出現(xiàn)FATAL ERROR報(bào)錯(cuò),這是因?yàn)槿鄙賞erl包導(dǎo)致的,我們yum安裝就好了:yum install -y perl-Module-Install
安裝完成后,重新執(zhí)行上一條命令;接下來(lái)你會(huì)看見(jiàn)兩個(gè)OK,并且會(huì)在/data/mysql目錄下生成了幾個(gè)文件和目錄,說(shuō)明執(zhí)行成功了?;蛘遝cho $?查看是否成功!
⑥復(fù)制配置文件:cp support-files/my-default.cnf /etc/my.cnf; (因?yàn)橄到y(tǒng)默認(rèn)有my.cnf文件,所以會(huì)提示覆蓋)
⑦修改配置文件:vim /etc/my.cnf
⑧復(fù)制啟動(dòng)腳本,并修改其屬性
⑨修改啟動(dòng)腳本:vim /etc/init.d/mysqld
⑩到這里安裝就完成了,接下來(lái)就是啟動(dòng)和檢查了
從上圖看見(jiàn)已經(jīng)是啟動(dòng)成功了,還提示了mysql錯(cuò)誤日志文件。
使用之前的命令檢查MySQL是否啟動(dòng)了:
安裝Apache:
(1)Apache介紹
Apache是一個(gè)基金會(huì)的名字,httpd才是我們要安裝的軟件包,早期它的名字就叫apache;Apache官網(wǎng)www.apache.org
(2)Apache安裝過(guò)程
①下載源碼包存放在/usr/local/src/:
進(jìn)入src目錄:cd /usr/local/src
下載源碼包以及兩個(gè)依賴包:
httpd:wget http://mirrors.sohu.com/apache/httpd-2.4.29.tar.gz
apr:wget http://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.6.3.tar.gz
apr-util:wget http://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz
②解壓
tar -zxvf apr-1.6.3.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
tar -zxvf httpd-2.4.29.tar.gz
③安裝依賴庫(kù),如果不安裝這兩個(gè)依賴,httpd2.4就無(wú)法工作(如果是httpd2.2是不用手動(dòng)安裝的)
安裝apr:
cd /usr/local/src/apr-1.6.3
./configure –prefix=/usr/local/apr
make && make install
可能出錯(cuò):(友情提示:安裝軟件時(shí),最好沒(méi)執(zhí)行一步,就echo $?看看是否執(zhí)行成功?。?/p>
錯(cuò)誤提示很明顯了,缺少gcc包;那我們就yum安裝:yum install -y gcc;安裝完成后,重新執(zhí)行上面的命令!
安裝apr-util:
cd /usr/local/src/apr-util-1.6.1
./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
make && make install
可能報(bào)錯(cuò):
缺少expat.h文件,yum安裝:yum install -y expat-devel;安裝完成后,重新執(zhí)行上面的命令!
④安裝httpd:
cd /usr/local/src/httpd-2.4.29
./configure –prefix=/usr/local/apache2.4 –with-apr=/usr/local/apr –with-apr-util=/usr/lcal/apr-util –enable-so –enable-mods-shared=most
make && make install
可能報(bào)錯(cuò):
解決辦法:yum install -y pcre pcre-devel
說(shuō)明:缺少了xml相關(guān)的庫(kù),需要安裝libxml2-devel包。直接安裝并不能解決問(wèn)題,因?yàn)閔ttpd調(diào)用的apr-util已經(jīng)安裝好了,但是apr-util并沒(méi)有l(wèi)ibxml2-devel包支持
解決辦法:
# 安裝libxml2-devel包 yum install -y libxml2-devel # 刪除apr-util安裝目錄,并重新編譯安裝 rm -rf /usr/local/apr-util cd /usr/local/src/apr-util-1.6.1 # 這一步很重要,必須清除之前配置時(shí)的緩存 make clean ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make && make install # 重新編譯安裝httpd cd /usr/local/src/httpd-2.4.29 # 同樣要清理之前的緩存十分重要 make clean ./configure --prefix=/usr/local/apache2.4 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-so --enable-mods-shared=most make && make install
⑤安裝完成后,查看httpd的木目錄結(jié)構(gòu)和modules目錄下的模塊文件:
ls /usr/local/apache2.4/ bin build cgi-bin conf error htdocs icons include logs man manual modules ls /usr/local/apache2.4/modules/ # 查看已經(jīng)加載了哪些模塊 /usr/local/apache2.4/bin/apachectl -M
安裝PHP:
(1)下載源碼包/usr/local/src/:wget http://mirrors.sohu.com/php/php-5.6.9.tar.gz
(2)解壓:tar -zxvf php-5.6.9.tar.gz
(3)配置編譯參數(shù):
./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache2.4/bin/apxs –with-config-file-path=/usr/local/php/etc –with-mysql=/usr/local/mysql –with-pdo-mysql=/usr/local/mysql –with-mysqli=/usr/local/mysql/bin/mysql_config –with-libxml-dir –with-gd –with-jpeg-dir –with-png-dir –with-freetype-dir –with-iconv-dir –with-zlib-dir –with-bz2 –with-openssl –with-mcrypt –enable-soap –enable-gd-native-ttf –enable-mbstring –enable-sockets –enable-exif
(4)編譯和安裝:make && make install
可能報(bào)錯(cuò):
解決辦法:yum install -y openssl openssl-devel
解決辦法:yum install -y bzip2 bzip2-devel
解決辦法:yum install -y libjpeg libjpeg-devel
解決辦法:yum install -y libpng libpng-devel
解決辦法:yum install -y lfreetype freetype-devel
解決辦法:yum install -y epel-release libmcrypt-devel
(5)最后是復(fù)制配置文件:cp php.ini-production /usr/local/php/etc/php.ini
配置httpd支持PHP:
(1)修改httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
搜索ServerName,刪除前面的 ‘#’
找到<Directory />,修改成
<Directory /> AllowOverride none Require all granted </Directory>
在AddType增加一行:
測(cè)試LAMP是否成功:
(1)測(cè)試配置文件是否正確
(2)啟動(dòng)apache服務(wù)
(3)使用curl命令簡(jiǎn)單測(cè)試:
(4)測(cè)試是否正確解析php
添加測(cè)試php腳本!
到這里,LAMP環(huán)境就搭建好了,下面熟悉一下httpd的配置!
httpd配置:
(1)默認(rèn)虛擬主機(jī)
編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
然后編輯虛擬主機(jī)的配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
這樣一個(gè)<VirtualHost>***</VirtualHost>就是一個(gè)虛擬主機(jī)了。
還要?jiǎng)?chuàng)建網(wǎng)站目錄呢
mkdir -p /data/www/default.com echo "This is the default site." > /data/www/default.com/index.html
(2)用戶認(rèn)證
編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
接下來(lái)就是創(chuàng)建密碼文件:(-c為create, -m為MD5加密;第二次就不用-c了,否則會(huì)清空密碼文件)
用戶認(rèn)證效果:(當(dāng)然你需要在本機(jī)的hosts文件加入虛擬機(jī)的IP和default.com才能在瀏覽器訪問(wèn)了)
當(dāng)然你也可以對(duì)網(wǎng)站的文件進(jìn)行用戶認(rèn)證了,新建了一個(gè)站點(diǎn)進(jìn)行文件的用戶認(rèn)證。
效果:
(3)配置域名跳轉(zhuǎn)
編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
在<VirtualHost>站點(diǎn)加入下面的代碼
當(dāng)然還需要去httpd主配置文件,打開rewrite模塊
驗(yàn)證是否開啟:
配置完成后,使用curl進(jìn)行測(cè)試
(4)配置訪問(wèn)日志
定義訪問(wèn)日志的格式在主配置文件httpd.conf
繼續(xù)修改vhost配置文件:(默認(rèn)是common,我們現(xiàn)在修改成combined)
當(dāng)有訪問(wèn)時(shí),會(huì)產(chǎn)生日志文件:(記錄的信息明顯變多了)
日志過(guò)濾掉圖片、js、css等靜態(tài)文件,節(jié)約磁盤容量,并且做日志切割,一天一個(gè)文件!
在站點(diǎn)的配置文件vhost中加入過(guò)濾代碼:
(5)配置靜態(tài)元素過(guò)期時(shí)間
修改vhost:
(6)配置防盜鏈
(7)訪問(wèn)控制
①通過(guò)限制IP訪問(wèn):
修改vhost配置文件:
效果:(192.168.159.131和127.0.0.1都是本機(jī)IP)
②也可以針對(duì)某個(gè)文件做限制
同樣是修改vhost
效果:
③針對(duì)user_agent來(lái)做訪問(wèn)控制
修改vhost:(OR:或者;NC:不區(qū)分大小寫;F:Forbidden)
效果:(curl -A指定user_agent)
④上傳目錄禁止解析php代碼
PHP配置:
(1)查看php配置文件所在路徑:/usr/local/php/bin/php -i |grep -i “loaded configaration file”
設(shè)置時(shí)區(qū):vim /usr/local/php/etc/php.ini
(2)禁用一些php內(nèi)置的危險(xiǎn)函數(shù)
(3)配置日志error_log
打開php配置文件php.ini:vim /usr/local/php/etc/php.ini
# 修改一下的設(shè)置項(xiàng) log_errors = On error_log = /var/log/php/php_errors.log error_reporting = E_ALL & ~E_NOTICE display_errors = Off
然后創(chuàng)建錯(cuò)誤日志存放目錄,并修改權(quán)限
(4)配置open_basedir
open_basedir的作用是將網(wǎng)站限定在指定的目錄里,萬(wàn)一一個(gè)站點(diǎn)被黑了,也不會(huì)影響其他的站點(diǎn)。
如果直接在php配置文件設(shè)置open_basedir參數(shù)的,就是所有的站點(diǎn)都定義在一起了,起不到open_basedir的作用。
下面介紹在每個(gè)站點(diǎn)的獨(dú)立虛擬主機(jī)上配置open_absedir:
(5)PHP動(dòng)態(tài)擴(kuò)展模塊安裝
查看php加載了哪些功能模塊:
/usr/local/php/bin/php -m
安裝php的redis擴(kuò)展模塊:
①下載模塊:wget https://codeload.github.com/phpredis/phpredis/zip/develop
②重命名:mv develop phpredis-develop.zip; 解壓:unzip phpredis-develop.zip
③生成可執(zhí)行文件:cd phpredis-develop/ ; /usr/local/php/bin/phpize
報(bào)錯(cuò):
安裝:yum install -y autoconf
④編譯安裝 三部曲:./configure make make install
./configure --with-php-config=/usr/local/php/bin/php-config make && make install
⑤查看安裝的模塊文件:ls /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
⑥編輯php配置文件:echo “extension = redis.so” >> /usr/local/php/etc/php.ini
⑦檢驗(yàn):/usr/local/php/bin/php -m|grep redis