LAMP是Linux Apache MySQL PHP的縮寫,即把Apache、MySQL以及PHP安裝在Linux系統上,組成一個環境來運行PHP的腳本語言。Apache是最常用的Web服務軟件,而MySQL是比較小型的數據庫軟件。三個角色可以安裝在一臺機器上,也可以分開(但httpd和php要在一起的)
下面來介紹如何構建LAMP環境:
安裝MySQL:(Mariadb安裝幾乎一樣)
(1)MySQL/Mariadb介紹
MySQL是一個關係型數據庫,由mysql ab公司開發,mysql在2008年被sun公司收購(10億刀),2009年sun公司被oracle公司收購(74億刀)
MySQL官網https://www.mysql.com 最新版本5.7GA/8.0DMR
MySQL5.6變化比較大,5.7性能上有很大提升
Mariadb爲MySQL的一個分支,官網https://mariadb.com/最新版本10.2
MariaDB主要由SkySQL公司(現更名爲MariaDB公司)維護,SkySQL公司由MySQL原作者帶領大部分原班人馬創立.
Mariadb5.5版本對應MySQL的5.5,10.0對應MySQL5.6
Community 社區版本,Enterprise 企業版,GA(Generally Available)指通用版本,在生產環境中用的,DMR(Development Milestone Release)開發里程碑發佈版,RC(Release Candidate)發行候選版本,Beta開放測試版本,Alpha內部測試版本
(2)MySQL安裝過程:
①下載源碼包到/usr/local/src/目錄下:
進入該目錄:cd /usr/local/src/
下載源碼包:wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
②解壓,然後挪動位置/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目錄名稱!
挪動位置:mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql
③創建MySQL用戶,啓動MySQL需要該用戶:useradd -s /sbin/nologin mysql
④創建MySQL數據庫文件存放目錄/data/mysql並更改權限:mkdir -p /data/mysql; chown -R mysql:mysql /data/mysql;
⑤進入/usr/local/mysql目錄,初始化:./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
這裏會出現FATAL ERROR報錯,這是因爲缺少perl包導致的,我們yum安裝就好了:yum install -y perl-Module-Install
安裝完成後,重新執行上一條命令;接下來你會看見兩個OK,並且會在/data/mysql目錄下生成了幾個文件和目錄,說明執行成功了。或者echo $?查看是否成功!
⑥複製配置文件:cp support-files/my-default.cnf /etc/my.cnf; (因爲系統默認有my.cnf文件,所以會提示覆蓋)
⑦修改配置文件:vim /etc/my.cnf
⑧複製啓動腳本,並修改其屬性
⑨修改啓動腳本:vim /etc/init.d/mysqld
⑩到這裏安裝就完成了,接下來就是啓動和檢查了
從上圖看見已經是啓動成功了,還提示了mysql錯誤日誌文件。
使用之前的命令檢查MySQL是否啓動了:
安裝Apache:
(1)Apache介紹
Apache是一個基金會的名字,httpd纔是我們要安裝的軟件包,早期它的名字就叫apache;Apache官網www.apache.org
(2)Apache安裝過程
①下載源碼包存放在/usr/local/src/:
進入src目錄:cd /usr/local/src
下載源碼包以及兩個依賴包:
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
③安裝依賴庫,如果不安裝這兩個依賴,httpd2.4就無法工作(如果是httpd2.2是不用手動安裝的)
安裝apr:
cd /usr/local/src/apr-1.6.3
./configure --prefix=/usr/local/apr
make && make install
可能出錯:(友情提示:安裝軟件時,最好沒執行一步,就echo $?看看是否執行成功!)
錯誤提示很明顯了,缺少gcc包;那我們就yum安裝:yum install -y gcc;安裝完成後,重新執行上面的命令!
安裝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
可能報錯:
缺少expat.h文件,yum安裝:yum install -y expat-devel;安裝完成後,重新執行上面的命令!
④安裝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
可能報錯:
解決辦法:yum install -y pcre pcre-devel
說明:缺少了xml相關的庫,需要安裝libxml2-devel包。直接安裝並不能解決問題,因爲httpd調用的apr-util已經安裝好了,但是apr-util並沒有libxml2-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 # 這一步很重要,必須清除之前配置時的緩存 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的木目錄結構和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/ # 查看已經加載了哪些模塊 /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)配置編譯參數:
./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
可能報錯:
解決辦法: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)最後是複製配置文件: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增加一行:
測試LAMP是否成功:
(1)測試配置文件是否正確
(2)啓動apache服務
(3)使用curl命令簡單測試:
(4)測試是否正確解析php
添加測試php腳本!
到這裏,LAMP環境就搭建好了,下面熟悉一下httpd的配置!
httpd配置:
(1)默認虛擬主機
編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
然後編輯虛擬主機的配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
這樣一個<VirtualHost>***</VirtualHost>就是一個虛擬主機了。
還要創建網站目錄呢
mkdir -p /data/www/default.com echo "This is the default site." > /data/www/default.com/index.html
(2)用戶認證
編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
接下來就是創建密碼文件:(-c爲create, -m爲MD5加密;第二次就不用-c了,否則會清空密碼文件)
用戶認證效果:(當然你需要在本機的hosts文件加入虛擬機的IP和default.com才能在瀏覽器訪問了)
當然你也可以對網站的文件進行用戶認證了,新建了一個站點進行文件的用戶認證。
效果:
(3)配置域名跳轉
編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf
在<VirtualHost>站點加入下面的代碼
當然還需要去httpd主配置文件,打開rewrite模塊
驗證是否開啓:
配置完成後,使用curl進行測試
(4)配置訪問日誌
定義訪問日誌的格式在主配置文件httpd.conf
繼續修改vhost配置文件:(默認是common,我們現在修改成combined)
當有訪問時,會產生日誌文件:(記錄的信息明顯變多了)
日誌過濾掉圖片、js、css等靜態文件,節約磁盤容量,並且做日誌切割,一天一個文件!
在站點的配置文件vhost中加入過濾代碼:
(5)配置靜態元素過期時間
修改vhost:
(6)配置防盜鏈
(7)訪問控制
①通過限制IP訪問:
修改vhost配置文件:
效果:(192.168.159.131和127.0.0.1都是本機IP)
②也可以針對某個文件做限制
同樣是修改vhost
效果:
③針對user_agent來做訪問控制
修改vhost:(OR:或者;NC:不區分大小寫;F:Forbidden)
效果:(curl -A指定user_agent)
④上傳目錄禁止解析php代碼
PHP配置:
(1)查看php配置文件所在路徑:/usr/local/php/bin/php -i |grep -i "loaded configaration file"
設置時區:vim /usr/local/php/etc/php.ini
(2)禁用一些php內置的危險函數
(3)配置日誌error_log
打開php配置文件php.ini:vim /usr/local/php/etc/php.ini
# 修改一下的設置項 log_errors = On error_log = /var/log/php/php_errors.log error_reporting = E_ALL & ~E_NOTICE display_errors = Off
然後創建錯誤日誌存放目錄,並修改權限
(4)配置open_basedir
open_basedir的作用是將網站限定在指定的目錄裏,萬一一個站點被黑了,也不會影響其他的站點。
如果直接在php配置文件設置open_basedir參數的,就是所有的站點都定義在一起了,起不到open_basedir的作用。
下面介紹在每個站點的獨立虛擬主機上配置open_absedir:
(5)PHP動態擴展模塊安裝
查看php加載了哪些功能模塊:
/usr/local/php/bin/php -m
安裝php的redis擴展模塊:
①下載模塊:wget https://codeload.github.com/phpredis/phpredis/zip/develop
②重命名:mv develop phpredis-develop.zip; 解壓:unzip phpredis-develop.zip
③生成可執行文件:cd phpredis-develop/ ; /usr/local/php/bin/phpize
報錯:
安裝: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
⑦檢驗:/usr/local/php/bin/php -m|grep redis