Nginx+Php-fpm+MySQL+Redis源碼編譯安裝指南

 

說明:本教程由三部分組成如下:

1.??????源碼編譯安裝Nginx

2.??????源碼編譯安裝php以及mysql、redis擴展模塊

3.??????配置虛擬主機

文中所涉及安裝包程序均提供下載鏈接,歡迎使用

?

執行環境以及前置條件:Ubuntu 12.04 LTS 已安裝g++編譯環境

全部源程序路徑位于:root@ubuntu:/home/shihai/Desktop/Nginx目錄下。例如以下圖所看到的:



程序安裝路徑位于:/usr/local目錄下

?

第一部分:安裝Nginx

安裝Nginx前須要安裝依賴庫PCRE庫、zlib庫、SSL庫

安裝PCRE庫——為了rewrite

pcre庫下載地址

tar –zxvf pcre-8.21.tar.gz

cd pcre-8.21

./configure --prefix=/usr/local/pcre-8.21

make

make install

?

安裝zlib庫——為了gzip壓縮

zlib下載地址

tar –zxvf zlib-1.2.8.tar.gz

cd zlib-1.2.8

./configure --prefix=/usr/local/zlib-1.2.8

make

make install

?

安裝ssl庫——支持ssl加密

openssl下載地址

tar -zxvf openssl-1.0.1c.tar.gz

cd openssl-1.0.1c

./config --prefix=/usr/local/openssl-1.0.1

make

make install

?

安裝nginx——server軟件

nginx下載地址

tar -zxvf nginx-1.2.8.tar.gz

cd nginx-1.2.8??

./configure --prefix=/usr/local/nginx-1.2.8 \

--with-pcre=../pcre-8.21/ \

--with-zlib=../zlib-1.2.8/

make

make install

?

設定nginx啟動的配置文件

/usr/local/nginx-1.2.8/sbin# ./nginx -c /usr/local/nginx-1.2.8/conf/nginx.conf

/usr/local/nginx-1.2.8/sbin# ./nginx -s reload

查看nginx進程

ps –ef|grep nginx


打開localhost

當你看到上圖所看到的內容時。說明Nginxserver已經成功安裝


?

第二部分:安裝php以及mysql、redis擴展模塊

安裝ncurses——安裝mysql前置條件:

ncurses下載地址

tar -zxvf ncurses-5.4.tar.gz

cd ncurses-5.4

./configure

make

make install

?

安裝mysql——此處使用是源代碼包編譯安裝

mysql下載地址

tar -zxvf mysql-5.1.73.tar.gz

cd mysql-5.1.73

./configure --prefix=/usr/local/mysql-5.1.73

make

make install

?

安裝curl庫——用于curl請求

curl庫下載地址

tar -zxvf curl-7.39.0.tar.gz

./configure --prefix=/usr/local/curl-7.39.0

make

make install

?

安裝libxml2庫——用于xml解析
libxml2下載地址
libxml2-devel下載地址

tar –xjf libxml2-2.6.23.tar.bz

cd libxml2-2.6.23

./configure

make

make install

rpm –ivh libxml2-devel-2.6.23-1.i386.rpm?



安裝php

php下載地址

tar -zxvf php-5.2.14.tar.gz

gunzip php-5.2.14-fpm-0.5.14.diff.gz

patch -d php-5.2.14 -p1 < php-5.2.14-fpm-0.5.14.diff

cd php-5.2.14

./configure --prefix=/usr/local/php-5.2.14\

--enable-fastcgi \

--enable-fpm \

--enable-sockets \

--enable-mbstring \

--with-mysql=/usr/local/mysql-5.1.73 \

--with-mysqli=/usr/local/mysql-5.1.73/bin/mysql_config\

--with-pdo-mysql=/usr/local/mysql-5.1.73 \

--with-curl=/usr/local/curl-7.39.0 \

--with-openssl=/usr/local/openssl-1.0.1 \

--with-libxml2


make

make install

?

啟動php-fpm使用例如以下命令:

/usr/local/php-5.2.14/sbin# ./php-fpm start

啟動php-fpm的時候出現
Startingphp_fpm Dec 29 15:27:32.502790 [ERROR] fpm_unix_conf_wp(), line 124: pleasespecify user and group other than root, pool 'default'

解決的方法:進入文件夾:/usr/local/php-5.2.14/etc僅僅須要改動php-fpm.conf

?????????Unix user of processes
?<!--????<value name="user">nobody</value>?? -->

?????????Unix group of processes
?<!--????<value name="group">nobody</value>?? -->

<!>去掉就可以。至于user/group依據實際情況改動(www)。
又一次啟動 /usr/local/php-5.2.14/sbin# ./php-fpm restart 成功了



安裝redis擴展模塊

redis下載地址

unzip phpredis-master.zip

exportPATH=/usr/local/php-5.2.14/bin/:$PATH

cp -r phpredis-master php-5.2.14/ext/

cd php-5.2.14/ext/phpredis-master

phpize

./configure--with-php-config=/usr/local/php-5.2.14/bin/php-config

make

make install

擴展庫路徑:/usr/local/php-5.2.14/lib/php/extensions/no-debug-non-zts-20060613/

在php擴展庫路徑下,能夠找到編譯生成的redis擴展庫文件redis.so

打開路徑/usr/local/php-5.2.14/lib/php.ini下的php.ini文件。使用命令例如以下:

vim php.ini

文件內容高速查找(按下“N”能夠查找下一個匹配位置),使用命令例如以下:

:?extension


找到如圖所看到的的指定位置后插入下面內容:

extension = redis.so

php會自己主動到擴展庫路徑下載入redis.so文件

假設沒找到php.ini文件。能夠全盤搜索該文件,使用命令例如以下:

find / -name php.ini

搜索結果顯示此路徑下存在/etc/php5/cli/php.ini文件,于是拷貝至/usr/local/php-5.2.14/lib,使用命令例如以下:

/usr/local/php-5.2.14/lib# cp /etc/php5/cli/php.ini php.ini

此處須要重新啟動php-fpm才干生效。使用命令例如以下:

/usr/local/php-5.2.14/sbin# ./php-fpm restart

?

第三部分:配置nginx虛擬主機

新建虛擬主機配置文件文件夾

/usr/local/nginx-1.2.8# mkdir vhosts

cd vhosts

touch scott.qq.com.conf

vim scottshi.qq.com.conf

輸入下面內容配置自己定義虛擬主機:

server {

listen 8001;/*監聽port號*/

server_name scott.qq.com;/*域名*/

access_log/usr/local/nginxweb/htdocs/access.log;/*網站訪問日志*/

location / {

root /usr/local/nginxweb/htdocs/;/*頁面文件文件夾*/

index index.php index.html index.htm;

}

error_page 500 502 503 504 /50x.html;/*server錯誤頁面*/

location = /50x.html {

root html;

}

# pass the PHP scripts to FastCGI serverlistening on 127.0.0.1:9000

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000; /*Nginx轉發請求地址*/

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME/usr/local/nginxweb/htdocs/$fastcgi_script_name;

include fastcgi_params;

}

location ~ /\.ht {

deny all;

}

}

保存退出后,進入nginx的配置文件nginx.conf

/usr/local/nginx-1.2.8/conf# vim nginx.conf

與默認server層級并列且位于http層級之內。加入例如以下內容,使得自己定義虛擬主機生效:

include /usr/local/nginx-1.2.8/vhosts/*;

保存退出后,重新啟動nginxserver,又一次加載配置文件,使用命令例如以下:

/usr/local/nginx-1.2.8/sbin# ./nginx –s reload

?

編寫php測試頁面:

進入文件夾/usr/local/nginxweb/htdocs/,新建test.php文件,輸入test.php頁面內容:

<?php

? Phpinfo();

?>

保存退出

使用瀏覽器,訪問下面地址:

scott.qq.com:8001/test.php

此頁面會顯示配置php時的指令還有各個功能模塊。包含fastcgi、mysql、curl、redis等












?

?

?

?

版權聲明:本文博主原創文章,博客,未經同意不得轉載。

轉載于:https://www.cnblogs.com/bhlsheji/p/4884203.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272847.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272847.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272847.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NetFramework各個版本的特性筆記

我的博客&#xff1a;http://www.cnblogs.com/hgmyz/p/6916064.html公式記憶&#xff1a;.Net 2.0CLRBCLC#(VB.Net)Win FormWeb Form.Net 3.0.Net 2.0WCFWPFWFWCS.Net 3.5.Net 3.0Asp.Net AjaxSliverlightLinq.Net 4.0 增加了并行的支持&#xff0c;與舊的Framwork并行工作。默…

從0開始學Java——JSPServlet——HttpServletRequest相關的幾個路徑信息

在HttpServletRequest中有幾個獲取路徑的接口&#xff1a;getRequestURI/getContextPath/getServletPath/getPathInfo 這些接口互相之間有什么區別&#xff0c;通過下面這段代碼就可以分辨清楚了&#xff1a; 1 WebServlet("/hello.view")2 public class FirstServle…

C#編譯和運行過程圖例

一張圖&#xff0c;描述C#編譯和運行過程&#xff0c;比較容易記憶理解

java 不重啟部署_編譯Java類后不重啟Tomcat有兩種方式:熱部署、熱加載

不重啟Tomcat有兩種方式&#xff1a;熱部署、熱加載熱部署&#xff1a;容器狀況在運行時重新部署整個項目。這類環境下一般整個內存會清空,重新加載&#xff0c;這類方式有可能會造成sessin丟失等環境。tomcat 6確實可以熱部署了,而且對話也沒丟.熱加載&#xff1a;最好是在調試…

修改mysql的用戶密碼

修改的用戶都以root為列。一、擁有原來的myql的root的密碼&#xff1b; 方法一&#xff1a; #mysql -u root mysql> SET PASSWORD FOR rootlocalhost PASSWORD(newpass); 方法二&#xff1a;在mysql系統外&#xff0c;使用mysqladmin# mysqladmin -u root -p password &quo…

C#中的堆和棧理解

引言&#xff1a;程序運行時&#xff0c;它的數據必須存在內存中&#xff0c;一個數據需要多大內存、存儲在什么地方以及如何存儲都依賴于該數據的數據類型。1、什么是棧棧是一個內存數組&#xff0c;是一個LIFO&#xff08;Last-In-First-Out 后進先出&#xff09;的數據結構。…

java sessionmanager_java.lang.IllegalStateException:沒有SessionManager

你錯過了3件事.Main.javaimport org.eclipse.jetty.server.Server;import org.eclipse.jetty.server.handler.ContextHandler;import org.eclipse.jetty.server.session.HashSessionIdManager;import org.eclipse.jetty.server.session.HashSessionManager;import org.eclipse.…

什么是鏈表

鏈表是一種物理存儲單元上非連續、非順序的存儲結構&#xff0c;數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點&#xff08;鏈表中每一個元素稱為結點&#xff09;組成&#xff0c;結點可以在運行時動態生成。每個結點包括兩個部分&#xff1a;一個是…

C# 基礎:Sealed、new、virtual、abstract、override的理解

目錄 1、sealed 2、new 3、virtual 4、abstract 5、override 1、sealed 密封類不能被繼承&#xff0c;密封方法可以重寫基類中的方法&#xff0c;但其本身不能在任何派生類&#xff08;子類&#xff09;中 進一步重寫。當應用于屬性或者方法時&#xff0c;sealed 修飾符必須始終…

梁興珍 java_數據結構與算法_Java語言

第1章 綜述1.1 數據結構和算法能起到什么作用&#xff1f;1.2 數據結構的概述1.3 算法的概述1.4 一些定義1.5 面向對象編程1.6 軟件工程1.7 對于C程序員的Java1.8 Java數據結構的類庫第2章 數組2.1 Array專題Applet2.2 Java中數組的基礎知識2.3 將程序劃分成類2.4 類接口2.5 Or…

Yii 2.0: yii2-highcharts-widget創建餅狀圖

安裝 The preferred way to install this extension is through composer. 項目根目錄下執行&#xff1a; php composer.phar require --prefer-dist miloschuman/yii2-highcharts-widget "*"或者在composer.json中添加 "miloschuman/yii2-highcharts-widget&qu…

【原創】C#中的抽象類(abstract class)和接口(interface)的比較

在C#中抽象類和接口是兩個相當重要的概念&#xff0c;深入理解對C#程序員是非常必要的&#xff0c;現總結如下&#xff1a;一、抽象類的特點&#xff1a;1、抽象方法只用于方法的聲明并不包含方法的實現&#xff0c;可以看作沒有實現實體的虛方法。2、抽象類不能進行實例化。3、…

U3D 腳本添加和獲得對象

有時候&#xff0c;一開始可能沒有對象&#xff0c;而是由于某種觸發&#xff0c;產生的一個對象&#xff0c;這里講解下&#xff0c;如何通過腳本來創建一個對象&#xff1a; 這是通過腳本創建一個立方體&#xff1a; using UnityEngine; using System.Collections;public cla…

50條超精辟的經典語錄:嘩眾,可以取寵,也可以失寵!

在人生道路上給自己定位很重要&#xff0c;不要苛求自己達到不可能達到的高度。我們能把每一件平凡的事做好就是不平凡&#xff0c;把每一件簡單的事做成功就是不簡單。1.我們只有一個地球&#xff0c;所以你要愛護地球&#xff1b;地球上只有一個我&#xff0c;所以你也要愛護…

java 時間工具類 大于_Java 時間工具類

1 /**2 * 格式化字符串為日期格式3 *4 *paramdateStr 需要格式化的字符串5 *paramformat 需要的日期格式&#xff0c;例如"yyyy-MM-dd HH:mm:ss"6 *return7 */8 public staticDate formatDate(String dateStr, String format) {9 SimpleDateFormat dateFormat newSi…

IP、TCP和DNS與HTTP的密切關系

看了上一篇博文的發表時間&#xff0c;是7月22日&#xff0c;現在是10月22日&#xff0c;已經有三個月沒寫博客了。這三個月里各種忙各種瞎折騰&#xff0c;發生了很多事情&#xff0c;也思考了很多問題。現在這段時間開始閑下來了&#xff0c;同時該思考的事情也思考清楚了&am…

C# 委托的理解

1、什么是委托委托可以理解為持有一個或多個方法的對象。如果執行委托的話&#xff0c;委托會執行它所"持有"的方法。委托可以避免程序中大量使用if-else語句&#xff0c;使程序擁有更好的擴展性。2、委托的本質委托和類一樣&#xff0c;是一種用戶自定義的類型&…

java基礎判斷題_java基礎知識周測試題帶答案

簡單題(每題5分&#xff0c;共計50分)簡述Java語言跨平臺的原理Java跨平臺的特性&#xff0c;也就是同一份字節碼文件可以在不同的系統上執行&#xff0c;由不同系統中的Java虛擬機負責翻譯成對應的機器指令。寫出以下名詞的概念和各自作用jre - Java運行時環境信息&#xff0c…

SQLSERVER 2008 R2版本密鑰(摘)

開發版32位&#xff1a;MC46H-JQR3C-2JRHY-XYRKY-QWPVM開發版64位&#xff1a;FTMGC-B2J97-PJ4QG-V84YB-MTXX8工組版&#xff1a;XQ4CB-VK9P3-4WYYH-4HQX3-K2R6QWEB版&#xff1a;FP4P7-YKG22-WGRVK-MKGMX-V9MTM數據中心版32位&#xff1a;PTTFM-X467G-P7RH2-3Q6CG-4DMYB數據中…

java conf_JAVA 解析、編輯nginx.conf

最近工程開發遇到一個需求&#xff1a;用Java去解析并編輯nginx.conf解析nginx.conf過程可以參考該項目的README.md下面舉個列子說明一下該如何編輯nginx.conf。定義一個pojoimportcom.alibaba.fastjson.JSONArray;importcom.google.common.base.Strings;importlombok.Data;Dat…