源碼編譯安裝LAMP

一、概述

1、源碼編譯安裝LAMP爲什麼要源碼編譯

         一般來說,我們軟件的安裝方式有yum(rpm),和源碼編譯兩種方式,那麼爲什麼我們需要源碼編譯安裝一部分軟件?選擇源碼編譯安裝軟件有以下幾個原因:
          1)滿足不同的運行平臺,我們Linux髮型版本衆多,但是每個版本採用的軟件或者內核版本都不一樣,而我們的二進制包所依賴的環境不一定能夠正常運行,所以大部分軟件直接提供源碼!
          2)方便定製,滿足不同的需求,很多時候我們所需要的軟件都是可以定製的,我需要什麼就安裝什麼,大多數二進制代碼都是一鍵裝全,所以自由度並不高!
          3)方便運維、開發人員維護,我們的源碼是可以打包二進制的,但是對於這個軟件的打包都會有一份代價不小的額外工作,包括維護,所以如果是源碼的話,軟件產商會直接維護,但是如果是二進制的話,一般都是Linux發行商提供!

2、什麼是LAMP

         LAMP=Linux Apache Mysql/MariaDB PHP/Perl/Python 這些軟件都是開源免費的軟件,幾個程序各自是獨立的,經常爲了達到我們需要的效果而協同工作,組成了我們常見的LAMP架構平臺!LAMP是世界上最流行的組合,當然同時也有Nginx,也就是LNMP: LAMP 相對於 NGINX 來說較爲安全,但是Nginx處理高併發比Apache要強,NGINX 相對於 LAMP 來說安全較爲差一點,同樣的配製環境負載遠遠高於 LAMP 向國內的一些大公司,淘寶、新浪都在用這一些 NGINX,向那麼大的公司網站需要用到服務器羣用LAMP搭建環境成本遠遠大於NGINX。打個比方本來1000000W訪問量需要 10臺LAMP環境服務器才能完成,但是使用NGINX也許只需要5、6臺這樣一來對於這樣的公司來說就大大的節約了成本。  從網站的流量上來說,70%以上的訪問流量是LAMP來提供的,LAMP是最強大的網站解決方案,在以前這句話沒有錯,但是在現在,這句話有待證實!!!因爲在以後的過程中,會發現我們會使用的架構是Nginx和Apache結合使用:使用Nginx可以做集羣等相關配置,可以和apache一起使用,有的會用apache去跑php,然後用nginx做反向代理,比如apache運行在8080端口,nginx在80端口,訪問php文件時,反向代理到apache,靜態頁通過nginx處理。nginx支持高併發,apache對php的運行比較穩定。

         常見的網頁類型:htm,html,shtml,stm.php,asp,aspx,shtm,jsp等等Apache本事只處理靜態頁面,處理動態頁面需要使用libphp5.so這個模塊去工作,編譯php也其實是將一個至關重要的模塊打入到apache內部,然後apache收到php請求,將請求交給這個模塊來處理!


3、Apache工作原理:
Apache本身只處理html靜態語言頁面,當客戶端需要訪問php頁面的時候,Apache會調用libphp5.so這個模塊去工作,這個模塊會把php頁面轉換成html靜態頁面,讓Apache處理,Apache處理過,會返回給客戶端

LAMP相關網站
Apache=http://httpd.apache.org/                                                      httpd主程序包
MySQL=http://dev.mysql.com/downloads/mysql/                          mysql主程序包
PHP=http://php.net/downloads.php                                                 php主程序包
apr=http://apr.apache.org/                                               apr是httpd的依賴包
apr-util=http://apr.apache.org/                               apr-util是httpd的第二個依賴包
apr和apr-util這個兩個軟件是對後端服務軟件進行優化的,
apr-util只是在apr的基礎上提供了更多的數據結構和操作系統封裝接口而已。
pcre 是httpd的第三個依賴包 http://pcre.org/   

PCRE(Perl Compatible Regular Expressions中文含義:perl語言兼容正則表達式)是一個用C語言編寫的正則表達式函數庫,PCRE被廣泛使用在許多開源軟件之中,最著名的莫過於Apache HTTP服務器和PHP腳本語言、R腳本語言,此外,正如從其名字所能看到的,PCRE也是perl語言的缺省正則庫。


二、安裝環境

系統環境:CentOS release 6.9 64bit  
軟件名稱:httpd-2.4.16、apr-1.5.2、apr-util-1.5.4、pcre-8.37、mysql-5.6.26、php-5.6.13


軟件用戶:apache、mysql

軟件安裝位置:/usr/local/
數據存放位置:/usr/local/httpd/htdocs、/usr/local/mysql/data
日誌存放位置:/usr/local/httpd/logs、/usr/local/mysql/logs


三、軟件安裝

1、安裝apahce

1)確保系統的乾淨的系統,不要和現在源碼編譯安裝的軟件衝突
不要在一個系統上同時存在 RPM-Apache+源碼-Apache,建議在編譯之前,把開發包組安裝:"Development Tools"和 "Development Libraries"

[root@Centos-6-99 logs]# rpm -qa | grep http
[root@Centos-6-99 logs]# rpm -qa | grep apache
[root@Centos-6-99 logs]#

2)安裝依賴包

[root@Centos-6-99 logs]#yum -y groupinstall "Development Tools" "Development Libraries"

[root@Centos-6-99 logs]#yum -y install gcc gcc-c++ openssl-devel

3)在home創建lamp文件夾,將對應軟件包上傳到這個文件夾

[root@Centos-6-99 lamp]# ll
total 54444
-rw-r--r-- 1 root root  1031613 Jun 10 10:05 apr-1.5.2.tar.gz
-rw-r--r-- 1 root root   694427 Jun 10 10:05 apr-util-1.5.4.tar.bz2
-rw-r--r-- 1 root root  5101005 Jun 10 10:05 httpd-2.4.16.tar.bz2
-rw-r--r-- 1 root root 33278710 Jun 10 10:05 mysql-5.6.26.tar.gz
-rw-r--r-- 1 root root  1557603 Jun 10 10:05 pcre-8.37.tar.bz2
-rw-r--r-- 1 root root 14077633 Jun 10 10:05 php-5.6.13.tar.bz2

4)解壓安裝apr

[root@Centos-6-99 lamp]# tar zxvf apr-1.5.2.tar.gz -C /usr/local/src/ && cd /usr/local/src/apr-1.5.2/ && ./configure --prefix=/usr/local/apr && make -j 4 && make install

5)解壓及安裝apr-util

[root@Centos-6-99 lamp]#tar jxvf apr-util-1.5.4.tar.bz2 -C /usr/local/src/ && cd /usr/local/src/apr-util-1.5.4/ && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make -j 4 && make install

6)解壓及安裝pcre

[root@Centos-6-99 lamp]#tar xvf pcre-8.37.tar.bz2 -C /usr/local/src/ && cd /usr/local/src/pcre-8.37/ && ./configure --prefix=/usr/local/pcre && make -j 4 && make install

7)解壓apache

[root@Centos-6-99 lamp]#tar xvf httpd-2.4.16.tar.bz2 -C /usr/local/src/ && cd /usr/local/src/httpd-2.4.16

8)配置apache編譯參數及編譯安裝

[root@Centos-6-99 httpd-2.4.16]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-ssl --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event && make -j 2 && make install

9)配置參數解釋
--prefix=/usr/local/httpd              #安裝路徑
--enable-so                                            #支持動態加載模塊
--enable-rewrite                                   #支持網站地址重寫
--enable-ssl                                          #支持SSL加密
--with-pcre=/usr/local/pcre              #pcre路徑
--with-apr=/usr/local/apr                #apr路徑
--with-apr-util=/usr/local/apr-util #apr-util路徑

一共有三種穩定的MPM(Multi-Processing Module,多進程處理模塊)模式。它們分別是prefork,worker和event,它們同時也代表這Apache的演變和發展。

10)配置Apache的啓動腳本

[root@Centos-6-99 lamp]#cp /usr/local/httpd/bin/apachectl  /etc/init.d/httpd

[root@Centos-6-99 lamp]#vim /etc/init.d/httpd
# chkconfig: 2345 64 36            #這個是啓動級別的服務,2345是指那些級別啓動,64是開啓順序,應該在network服務的後面,36是關閉順序,應該在network的前面,這裏並不是註釋,默認network的是:2345 10 90

# description: httpd.16 start script            #描述字段,有了這兩個字段,就可以用chkconfig命令控制

11)啓動apache及設置開機啓動

[root@Centos-6-99 httpd-2.4.16]# /etc/init.d/httpd start

[root@Centos-6-99 httpd-2.4.16]#chkconfig httpd on

11)設置apache使用用戶

[root@Centos-6-99 httpd-2.4.16]#ps -aux | grep apache     //源碼編譯apache,運行用戶爲deamon
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root        43191  0.0  0.0  70632  2184?  Ss   16:54   0:00/usr/local/httpd/bin/httpd -k start
daemon      43192  0.0  0.1663500  4820?  Sl   16:54   0:00/usr/local/httpd/bin/httpd -k start
daemon      43193  0.0  0.1414892  4184?  Sl   16:54   0:00/usr/local/httpd/bin/httpd -k start
daemon      43194  0.0  0.1414892  4188?  Sl   16:54   0:00/usr/local/httpd/bin/httpd -k start

root        43344  0.0  0.0103244  864 pts/0 S+ 17:12   0:00 grep apache


[root@Centos-6-99 httpd-2.4.16]#useradd -M -s /sbin/nologin apache                           //創建一個用戶用來運行apache

[root@Centos-6-99 httpd-2.4.16]#vim /usr/local/httpd/conf/httpd.conf           //修改配置文件改變apache運行身份

User apache                     #運行用戶

Group apache                    #運行組,創建apache的時候已經即時創建了apache這個組

[root@Centos-6-99 httpd-2.4.16]#chown -R apache:apache /usr/local/httpd/       //默認是root,改爲apache


2、編譯安裝mysql

1)清理已安裝的mysql

[root@centos-6 home]# rpm -qa | grep mysql
mysql-libs-5.1.73-8.el6_8.x86_64
[root@centos-6 home]# yum remove mysql-libs
[root@centos-6 home]# rpm -qa | grep mysql
[root@centos-6 home]#

2)安裝依賴包

[root@centos-6 home]# yum install -y cmake ncurses-devel

3)編譯安裝mysql

[root@centos-6 lnmp]# tar xf mysql-5.6.26.tar.gz -C /usr/local/src/

3)創建運行mysql的帳號

[root@centos-6 mysql-5.6.26]# useradd -M -s /sbin/nologin mysql

4)配置編譯參數

[root@centos-6 mysql-5.6.26]#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_MYISAM_STORAGE_ENGINE=1\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_MEMORY_STORAGE_ENGINE=1\
-DWITH_READLINE=1\
-DENABLED_LOCAL_INFILE=1\
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL-USER=mysql

5)編譯參數說明

DCMAKE_INSTALL_PREFIX                                      #制定mysql的安裝根目錄,目錄在安裝的時候會自動創建,這個值也可以在服務器啓動時,用--basedir來設置
DMYSQL_UNIX_ADDR                                           #服務器與本地客戶端進行通信的Unix套接字文件,必須是絕對路徑,默認位置/tmp/mysql.sock,可以在服務器啓動時,用--socket改變
DDEFAULT_CHARSET                        #mysql默認使用的字符集,不指定將默認使用Latin1西歐字符集
DDEFAULT_COLLATION                           #默認字符校對
DWITH_EXTRA_CHARSETS                  #制定mysql拓展字符集,默認值也是all支持所有的字符集
DWITH_MYISAM_STORAGE_ENGINE #靜態編譯MYISAM,INNOBASE,MEMORY存儲引擎到MYSQL服務
                                   器,這樣MYSQL就支持這三種存儲引擎
DWITH_INNOBASE_STORAGE_ENGINE
DWITH_MEMORY_STORAGE_ENGINE
DWITH_READLINE                    #支持readline庫
DENABLED_LOCAL_INFILE                    #允許本地倒入數據,啓用加載本地數據
DMYSQL_DATADIR                                #mysql數據庫存放路徑
DMYSQL-USER                                    #運行mysql的用戶

這些編譯參數的幫助尋找方法:
http://www.mysql.com→→Documentation→→選擇對應的版本(5.6)→→HTML Online→→View→→Installation & Upgrades→→Installing MySQL from Source →→MySQL Source-Configuration Options→→
http://dev.mysql.com/doc/refman/ ... ration-options.html   


6)編譯安裝

[root@centos-6 mysql-5.6.26]#make -j 4 ; make install

        //以4個進程來加快編譯速度,但不要超過CPU核心數,編譯時間較長需耐心等待

7)配置mysql

[root@centos-6 mysql-5.6.26]# chown -R mysql:mysql /usr/local/mysql/     //屬主屬組更改

[root@centos-6 mysql-5.6.26]# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf       //覆蓋原配置文件

[root@centos-6 mysql-5.6.26]#  cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld     //複製啓動腳本

[root@centos-6 mysql-5.6.26]#  vim /etc/init.d/mysqld        //更改啓動腳本中指定mysql位置

basedir=
datadir=
#修改爲
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

[root@centos-6 mysql-5.6.26]# chkconfig mysqld  on        //設置開機啓動


8)初始化數據庫

[root@centos-6 mysql-5.6.26]#/usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data/ \
--user=mysql

查看初始化是否成功

[root@centos-6 mysql-5.6.26]#  ls /usr/local/mysql/data/
ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test
[root@centos-6 mysql-5.6.26]#

[root@centos-6 mysql-5.6.26]# ln -s /usr/local/mysql/bin/* /bin/    ///這個裏面是部分命令,讓系統直接調用

[root@centos-6 mysql-5.6.26]# /etc/init.d/mysqld restart        //啓動數據庫

 ERROR! MySQL server PID file could not be found!
Starting MySQL.. SUCCESS!

[root@centos-6 mysql-5.6.26]# mysql_secure_installation    ////初始安全設置,設置root密碼,急用root遠程訪問,刪除test數據庫等;

9)測試登陸是否正常

[root@centos-6 mysql-5.6.26]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.6.26 Source distribution

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


3、編譯安裝php

PHP原始爲Personal Home Page的縮寫,已經正式更名爲 "PHP: Hypertext Preprocessor"。
Apache對於php的解析,就是通過衆多Module中的php Module來完成的,把php最終集成到Apache系統中,還需要對Apache進行一些必要的設置!

1)清理已安裝的php

[root@centos-6 home]# rpm -qa | grep php
[root@centos-6 home]# yum remove php

[root@centos-6 home]# rpm -qa | grep php

2)安裝依賴包

[root@centos-6 home]#yum install -y libxml2-devel

3)解壓php

[root@Centos-6-99 lamp]# tar xvf php-5.6.13.tar.bz2 -C  /usr/local/src/ ; cd /usr/local/src/php-5.6.13

4)配置php編譯參數

[root@Centos-6-99 php-5.6.13]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql/ --with-apxs2=/usr/local/httpd/bin/apxs --with-config-file-path=/usr/local/php

5)編譯參數說明
--prefix                        #指定安裝路徑
--with-apxs2                    #用apache的apxs工具將php編譯成apache的一個模塊
--with-mysql                    #與mysql結合,如果不跟路徑,編譯出來的版本將是低版本
--with-config-file-path         #php的主配置文件php.ini路徑

6)編譯安裝

[root@Centos-6-99 php-5.6.13]#make –j 4 ; make install

7)修改配置文件

[root@Centos-6-99 php-5.6.13]#cp php.ini-production /usr/local/php/php.ini

8)配置Apache支持PHP

[root@Centos-6-99 php-5.6.13]#vim /usr/local/httpd/conf/httpd.conf
 <IfModule dir_module>
DirectoryIndex index.html index.php           #添加index.php
</IfModule>
……
 AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz      #上面兩行是以前有的
 AddType application/x-httpd-php .php      #下面兩行是添加的,需要添加以支持PHP
 AddType application/x-httpd-php-source .phps


9)檢查安裝結果
只有有下面這兩個文件(模塊),代表我們的apache就可以支持php了ls  /usr/local/httpd/modules/httpd.exp

[root@Centos-6-99 php-5.6.13]# ls  /usr/local/httpd/modules/httpd.exp
/usr/local/httpd/modules/httpd.exp
[root@Centos-6-99 php-5.6.13]# ls /usr/local/httpd/modules/libphp5.so
/usr/local/httpd/modules/libphp5.so


10)重啓apache並測試是否支持php

[root@Centos-6-99 php-5.6.13]# /etc/init.d/httpd restart

[root@Centos-6-99 php-5.6.13]# echo "<?php phpinfo(); ?>" >/usr/local/httpd/htdocs/info.php



wKiom1k7_MDT7SzZAACeVh54HKQ931.png-wh_50






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