linux 下lnmp的源碼搭建

LNMP=linux Nginx Mysql PHP
Nginx的工作原理:
Nginx本身只支持靜態頁面的處理,當客戶訪問php頁面的時候,nginx會將php轉到php-fpm去處理,php-fpm服務會把php頁面解析成html文件給nginx處理,nginx返回給客戶端處理


Nginx是通過php-fpm這個服務來處理php文件
Apache是通過libphp5.so這個模塊來處理php文件

Apache的libphp5.so隨着apache服務器一起運行,而nginx和php-fpm是各自獨立運行,所以在服務的運行過程中,nginx和php-fpm都需要分別啓動
修改Nginx配置文件,啓動nginx服務,修改php配置文件,啓動php-fpm服務


LNMP軟件所需要的軟件包
MySQL=http://dev.mysql.com/downloads/mysql/
PHP=http://php.net/downloads.php
Nginx=http://nginx.org/en/download.html
libmcrypt=http://mcrypt.hellug.gr/index.html
pcre=http://pcre.org/ pcre是php的依賴包!!!!!

Mysql源碼安裝

解決環境問題

yum install  gcc  gcc-c++

yum install cmake-2.8.12.2-4.el6.x86_64.rpm 

yum install ncurses-devel

 yum install  biso

tar  zxf  mysql-boost-5.7.17.tar.gz   解壓壓縮包

cmake驗證

 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

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_ENGINEDWITH_MEMORY_STORAGE_ENGINEDWITH_READLINE                    #支持readline庫DENABLED_LOCAL_INFILE                    #允許本地倒入數據,啓用加載本地數據DMYSQL_DATADIR                                #mysql數據庫存放路徑DMYSQL-USER                                    #運行mysql的用戶

make &&  make install 就可以安裝了

chown -R mysql:mysql /usr/local/mysql/                //屬主屬組更改#這裏的權限需要注意:#1、數據目錄給mysql屬主和屬組  #2、文件安裝目錄,在安裝之前,給mysql屬主和屬組,安裝之後,改成root用戶,mysql組,否則在啓動的時候,可能啓動不了!

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf       //覆蓋原配置文件cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld    //啓動腳本

vim /etc/init.d/mysqld                                                   //更改啓動腳本中指定#mysql位置

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

開機啓動 chkconfig mysqld  on                    

 

mysqld  --initialize  --user=mysql 初始化數據庫

 

 

 

mysql_secure_installation     設置密碼即可

 

 

php搭建

解決環境問題需要安裝以下rpm軟件

yum install  net-snmp-devel  gmp-devel -y     curl-devel -y

 openssl-devel -y  re2c-0.13.5-1.el6.x86_64.rpm -y  libxml2-devel -y       libmcrypt-devel-2.5.8-9.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm   gd-devel-2.0.35-11.el6.x86_64.rpm 

之後 開始編譯

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-mysql=mysqlnd --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl -with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-jpeg-dir --with-freetype-dir --with-pear --with-gettext --with-gmp --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-mcrypt --with-mhash  

--with-config-file-path                         #設置 php.ini 的搜索路徑。默認爲 PREFIX/lib

--with-mysql                        #mysql安裝目錄,對mysql的支持

--with-mysqli                         #mysqli擴展技術不僅可以調用MySQL的存儲過程、處理MySQL事務,而且還可以使訪問數據庫工作變得更加穩定。是一個數據庫驅動

--with-iconv-dir                      #種字符集間的轉換

--with-freetype-dir                  #打開對freetype字體庫的支持

--with-jpeg-dir                      #打開對jpeg圖片的支持

--with-png-dir                          #打開對png圖片的支持

--with-zlib                        #打開zlib庫的支持,實現GZIP壓縮輸出

 --with-libxml-dir=/usr                     #打開libxml2庫的支持,libxml是一個用來解析XML文檔的函數庫

--enable-xml                        #支持xml文檔

--disable-rpath                         #關閉額外的運行庫文件

--enable-bcmath                      #打開圖片大小調整,用到zabbix監控的時候用到了這個模塊

--enable-shmop                       #shmop共享內存操作函數,可以與c/c++通訊--enable-sysvsem  #加上上面shmop,這樣就使得你的PHP系統可以處理相關的IPC函數(活動在內核級別)。

--enable-inline-optimization       #優化線程

--with-curl                            #打開curl瀏覽工具的支持

 --with-curlwrappers                    #運用curl工具打開url流 ,新版PHP5.6已棄用

--enable-mbregex                    #支持多字節正則表達式

--enable-fpm                       #CGI方式安裝的啓動程序,PHP-FPM服務

--enable-mbstring                     #多字節,字符串的支持-

-with-gd                             #打開gd庫的支持,是php處理圖形的擴展庫,GD庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。

--enable-gd-native-ttf                    #支持TrueType字符串函數庫

--with-openssl                          #打開ssl支持

--with-mhash                       #支持mhash算法擴展

--enable-pcntl                          #freeTDS需要用到的,pcntl擴展可以支持php的多線程操作

--enable-sockets                       #打開 sockets 支持

--with-xmlrpc                       #打開xml-rpc的c語言-

-enable-zip                         #打開對zip的支持

--enable-soap                          #擴展庫通過soap協議實現了客服端與服務器端的數據交互操作

--with-mcrypt                       #mcrypt算法擴展

 

 make  makeinstall 之後

配置文件

 cd  /usr/local/lnmp/php/

   cd  etc/

    cp php-fpm.conf.default php-fpm.con 

   cd  /mnt/lamp/php-5.6.35

    cp php.ini-production  /usr/local/lnmp/php/etc/

    cd  /usr/local/lnmp/php/

     cd  etc/

 vim  php-fpm.conf

 

 

nginx安裝

tar  zxf  nginx-1.10.1.tar.gz 

 tar  zxf  nginx-sticky-module-ng.tar.gz 

 

./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/local/src/pcre-8.37*************************************

--with-http_dav_module                  #啓用支持(增加PUT,DELETE,MKCOL:創建集合,COPY和MOVE方法)                                   默認關閉,需要編譯開啓

--with-http_stub_status_module    #啓用支持(獲取Nginx上次啓動以來的工作狀態)-

-with-http_addition_module         #啓用支持(作爲一個輸出過濾器,支持不完全緩衝,分部分相應請求)

--with-http_sub_module                 #啓用支持(允許一些其他文本替換Nginx相應中的一些文本)--with-http_flv_module                   #啓用支持(提供支持flv視頻文件支持)

--with-http_mp4_module                      #啓用支持(提供支持mp4視頻文件支持,提供僞流媒體服務端支持)

--with-pcre=/usr/local/src/pcre-8.37   #需要注意,這裏指的是源碼,用#./configure --help |grep pcre

 

文件組成

ll /usr/local/nginx/drwxr-xr-x 2 root root 4096 Sep 1513:44 

conf           #Nginx相關配置文件drwxr-xr-x 2 root root 4096 Sep 1513:44 

html           #網站根目錄drwxr-xr-x 2 root root 4096 Sep 1513:44 

ogs           #日誌文件drwxr-xr-x 2 root root 4096 Sep 1513:44 

sbin           #Nginx啓動腳本

 

 

配置文件  vim  /usr/local/lnmp/nginx/conf/nginx.conf

#location ~ \.php$ {        #    root           html;        #    fastcgi_pass   127.0.0.1:9000;        #    fastcgi_index  index.php;        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;        #    include        fastcgi_params;        #}                      #找到上面這段內容,將這段內容複製,去掉#

且修改爲如下

location ~ \.php$ {    root           html;    fastcgi_pass   127.0.0.1:9000;    fastcgi_index  index.php;    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;      #將scripts修改爲nginx的html,即Nginx頁面目錄,因爲要處理的php文件也在這個目錄下    include        fastcgi_params;

測試使用 

 

 

echo "<?php phpinfo(); ?>" > /usr/local/nginx/html/index.php 

出現網頁即可

 

 

搭建Discuz論壇

根據以前博客按需要解決問題即可

 

安裝memcache

 

 

在Linux下使用php -m命令查看PHP擴展,沒有看到calendar擴展

所以在在php.ini文件添加:

extension=memcache.so

在php -m 看到memcache

yum 安裝 memcached

配置文件之   memcache.conf 與example.conf到 nginx 下html目錄中

 

就可以看到結果

 

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