LAMP環境搭建與配置

    LAMP是Linux  Apache  MySQL  PHP的縮寫,即把Apache、MySQL以及PHP安裝在Linux系統上,組成一個環境來運行PHP的腳本語言。Apache是最常用的Web服務軟件,而MySQL是比較小型的數據庫軟件。三個角色可以安裝在一臺機器上,也可以分開(但httpd和php要在一起的)

    image.png

下面來介紹如何構建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

                image.png

            這裏會出現FATAL ERROR報錯,這是因爲缺少perl包導致的,我們yum安裝就好了:yum install -y perl-Module-Install

            安裝完成後,重新執行上一條命令;接下來你會看見兩個OK,並且會在/data/mysql目錄下生成了幾個文件和目錄,說明執行成功了。或者echo $?查看是否成功!

            image.png 

            image.png

            ⑥複製配置文件:cp support-files/my-default.cnf /etc/my.cnf;    (因爲系統默認有my.cnf文件,所以會提示覆蓋)

            image.png

            ⑦修改配置文件:vim /etc/my.cnf

            image.png

            ⑧複製啓動腳本,並修改其屬性

            image.png

            ⑨修改啓動腳本:vim /etc/init.d/mysqld

            image.png

            ⑩到這裏安裝就完成了,接下來就是啓動和檢查了

            image.png

            從上圖看見已經是啓動成功了,還提示了mysql錯誤日誌文件。

            使用之前的命令檢查MySQL是否啓動了:          image.png

安裝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 $?看看是否執行成功!)

                image.png

                錯誤提示很明顯了,缺少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

                可能報錯:

                image.png

                缺少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

        可能報錯:

        image.png

        解決辦法:yum install -y pcre pcre-devel

        image.png

        說明:缺少了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

    可能報錯:

    image.png

    解決辦法:yum install -y openssl openssl-devel

    image.png

    解決辦法:yum install -y bzip2 bzip2-devel

    image.png

    解決辦法:yum install -y libjpeg libjpeg-devel

    image.png

    解決辦法:yum install -y libpng libpng-devel

    image.png

    解決辦法:yum install -y lfreetype freetype-devel

    image.png

    解決辦法: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增加一行:   

         image.png

        image.png

測試LAMP是否成功:

    (1)測試配置文件是否正確

        image.png

    (2)啓動apache服務

        image.png

    (3)使用curl命令簡單測試:

        image.png

    (4)測試是否正確解析php

        添加測試php腳本!

        image.png

到這裏,LAMP環境就搭建好了,下面熟悉一下httpd的配置!

httpd配置:

    (1)默認虛擬主機

            編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf

            image.png

            然後編輯虛擬主機的配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

            image.png

            這樣一個<VirtualHost>***</VirtualHost>就是一個虛擬主機了。

            還要創建網站目錄呢

        mkdir -p /data/www/default.com
        echo "This is the default site." > /data/www/default.com/index.html

             image.png

    (2)用戶認證

            編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf

            image.png

            接下來就是創建密碼文件:(-c爲create, -m爲MD5加密;第二次就不用-c了,否則會清空密碼文件)

            image.png

            用戶認證效果:(當然你需要在本機的hosts文件加入虛擬機的IP和default.com才能在瀏覽器訪問了)

  image.pngimage.png

            當然你也可以對網站的文件進行用戶認證了,新建了一個站點進行文件的用戶認證。

            image.png

            image.png

            效果:

            image.png

    (3)配置域名跳轉

            編輯httpd配置文件httpd.conf:vim /usr/local/apache2.4/conf/httpd.conf

            在<VirtualHost>站點加入下面的代碼

            image.png

            當然還需要去httpd主配置文件,打開rewrite模塊

            image.png

            驗證是否開啓:

            image.png

            配置完成後,使用curl進行測試

            image.png

    (4)配置訪問日誌

            定義訪問日誌的格式在主配置文件httpd.conf

            image.png

            繼續修改vhost配置文件:(默認是common,我們現在修改成combined)

            image.png

            當有訪問時,會產生日誌文件:(記錄的信息明顯變多了)

image.png

            日誌過濾掉圖片、js、css等靜態文件,節約磁盤容量,並且做日誌切割,一天一個文件!

            在站點的配置文件vhost中加入過濾代碼:image.png

    (5)配置靜態元素過期時間

            修改vhost:

            image.png

            image.png

    (6)配置防盜鏈

            image.png

            image.png

    (7)訪問控制

            ①通過限制IP訪問

            修改vhost配置文件:

            image.png

        效果:(192.168.159.131和127.0.0.1都是本機IP)

            image.png

            ②也可以針對某個文件做限制

            同樣是修改vhost

            image.png

            效果:

            image.png

            ③針對user_agent來做訪問控制

            修改vhost:(OR:或者;NC:不區分大小寫;F:Forbidden)

            image.png

            效果:(curl -A指定user_agent)

            image.png

            ④上傳目錄禁止解析php代碼

            image.png

            image.png

PHP配置:

    (1)查看php配置文件所在路徑:/usr/local/php/bin/php -i |grep -i "loaded configaration file"

image.png

        設置時區:vim /usr/local/php/etc/php.ini

        image.png

        (2)禁用一些php內置的危險函數

     image.png

        (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

            然後創建錯誤日誌存放目錄,並修改權限

            image.png

        (4)配置open_basedir

            open_basedir的作用是將網站限定在指定的目錄裏,萬一一個站點被黑了,也不會影響其他的站點。

            如果直接在php配置文件設置open_basedir參數的,就是所有的站點都定義在一起了,起不到open_basedir的作用。

            下面介紹在每個站點的獨立虛擬主機上配置open_absedir:

            image.png

        (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

                報錯:image.png

                安裝: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

                

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