摘要:為提供模塊,需要庫支持為提供功能為支持地址重寫功能確保已正確安裝在上面的基礎(chǔ)環(huán)境安裝中,我們已經(jīng)安裝了,但是部分服務(wù)器上并沒有的安裝包,所以我們可以通過下載包自行編譯安裝。
一直以來我都通過網(wǎng)上的一些材料去搭建lnmp環(huán)境,通過直接yum安裝nginx mysql php等軟件。但是為了原生態(tài)的編譯安裝最新的軟件版本,我決定自己親手搭建lnmp環(huán)境,采用最新的nginx1.9.7(昨天出了1.9.8)和php7來研究如何搭建起nginx最新版本和php7的環(huán)境。
nginx的編譯安裝 編譯環(huán)境在linux使用make方式安裝,需要保證linux已經(jīng)具備比較OK的編譯環(huán)境,例如gcc等編譯工具。一般而言,服務(wù)器提供商在安裝的系統(tǒng)中已經(jīng)默認(rèn)集成了這些軟件,但是為了保險(xiǎn)起見,我們還是通過一些較為基礎(chǔ)的方式,把這些依賴包都跑一遍,以防在之后的編譯中出差錯(cuò)。
$ yum -y install gcc gcc-c++ autoconf automake libtool make cmake $ yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
zlib: 為nginx提供gzip模塊,需要zlib庫支持
openssl: 為nginx提供ssl功能
pcre: 為支持地址重寫rewrite功能
確保pcre已正確安裝
在上面的基礎(chǔ)環(huán)境安裝中,我們已經(jīng)yum安裝了pcre,但是部分服務(wù)器上并沒有pcre的安裝包,所以我們可以通過下載tar包自行編譯安裝pcre。
搜索pcre,進(jìn)入其官網(wǎng),找到最新的版本,復(fù)制tar.gz的下載連接,執(zhí)行如下操作:
$ wget http://pcre/xxx/xxx/xxx最新版xxx.tar.gz $ tar zxvf xxxx.tar.gz $ cd xxxx $ ./configure $ make install
這樣就可以保證安裝pcre了。
創(chuàng)建用來運(yùn)行nginx的用戶及組我們創(chuàng)建一個(gè)新的用戶和用戶組來運(yùn)行nginx,這樣可以把nginx和root分開,保證nginx不具備root權(quán)限。但是,我們并不希望nginx成為一個(gè)真實(shí)的可以登陸到遠(yuǎn)程進(jìn)行操作的用戶,所以,我們并不給它創(chuàng)建家目錄,在useradd的時(shí)候,用-M參數(shù):
$ groupadd nginx $ useradd -g nginx -M nginx
-g參數(shù)為nginx用戶指定了一個(gè)組。-M參數(shù)保證其不自動(dòng)生成home目錄。
但通過上面的用戶創(chuàng)建之后,nginx用戶可以通過設(shè)置一個(gè)密碼登陸到服務(wù)器,這個(gè)不是我們想要的,我們禁用它的ssh登陸權(quán)限.禁止用戶登陸也很方便,只需要修改配置文件中有關(guān)用戶和用戶組的信息即可。
$ vi /etc/passwd
找到nginx,將后面的/bin/bash改為/sbin/nologin即可。
OK,用戶處理完畢。
編譯安裝Nginx前面講了這么多,都還沒有說到重點(diǎn),接下來我們來編譯安裝nginx。先進(jìn)入nginx的官方網(wǎng)站,找到最新版本的tar.gz包的鏈接,復(fù)制鏈接,然后執(zhí)行下面的動(dòng)作:
$ wget http://xxxxxxxxxx/nginx1.7.x.tar.gz $ tar zxvf nginx1.7.x.tar.gz $ cd nginx1.7.x
接下來我們需要執(zhí)行./configure,不同的開發(fā)者有不同的習(xí)慣,對(duì)于剛?cè)腴T的用戶而言,不是很喜歡麻煩的去進(jìn)行配置,總是希望默認(rèn)就是最好的,但是實(shí)際情況恰好相反,走上linux的道,就請(qǐng)熱愛折騰,既然選擇編譯安裝,就請(qǐng)熱愛make。
我希望把軟件安裝在/user/local下面,一個(gè)軟件一個(gè)目錄,在以后卸載的時(shí)候也比較方便清理。軟件的目錄也按照linux的目錄形式,用conf、etc、sbin、run等進(jìn)行歸類管理,所以,我最終的./configure配置如下:
$ ./configure --prefix=/usr/local/nginx --pid-path=/usr/local/nginx/run/nginx.pid --with-http_ssl_module --user=nginx --group=nginx --with-pcre --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module
末尾三個(gè)是禁用nginx作為郵件代理服務(wù)器,我一般只用服務(wù)器作為網(wǎng)站或數(shù)據(jù)庫的服務(wù)器,所以這里把它們禁用掉,你如果想搭建的是郵件服務(wù)器,那么就應(yīng)該去閱讀nginx搭建郵件服務(wù)器的教程。
你可以認(rèn)真閱讀一下./configure的結(jié)果,看看有沒有報(bào)錯(cuò),或者加載的模塊是不是都齊全,如果一切OK,那么往下繼續(xù),如果感覺不對(duì),可以用./configure --help認(rèn)真閱讀一下。
$ make $ make install
make的地方有一個(gè)小技巧,如果服務(wù)器是雙核,可以通過-j2來指定用雙核進(jìn)行編譯,-j4代表4核編譯。
安裝到這里就結(jié)束了,但是,安裝完可沒完事兒,nginx還沒有運(yùn)行起來,你可以先去看看安裝的結(jié)果,并且運(yùn)行nginx服務(wù)器:
$ cd /usr/local/nginx $ ls $ sbin/nginx
這樣就運(yùn)行起來了,訪問你的服務(wù)器ip,看看能否看到ngin的歡迎頁面吧。(不要讓其他軟件占用80端口哦)默認(rèn)情況下網(wǎng)頁文件放在/usr/local/nginx/html下,不符合我們的使用習(xí)慣,這個(gè)需要修改nginx的配置文件來修改,不過即使不修改,我們也是可以正常使用的,我們就不詳細(xì)解釋nginx的配置了。
nginx服務(wù)的載入但是,make編譯安裝的軟件,可不像yum安裝的服務(wù),我們熟悉的service命令并不起效,不然你用service nginx restart試試看。這是因?yàn)閟ervice調(diào)用/etc/ini.d/目錄下的程序完成,而該目錄下并不存在nginx這個(gè)程序。那么這個(gè)時(shí)候怎么重啟nginx呢?如下操作:
$ /usr/local/nginx/sbin/nginx -s reload
這個(gè)操作可以重新加載nginx的配置文件,相當(dāng)于重啟(當(dāng)配置文件出錯(cuò)時(shí),不會(huì)重啟)。如果一定要重啟整個(gè)服務(wù),那只能通過殺死nginx進(jìn)程,然后在運(yùn)行程序了。
不過為了使用我們熟悉的service操作,這里提供一個(gè)程序,放到/etc/ini.d/目錄下,并執(zhí)行:
$ chmod +x /etc/init.d/nginx $ chkconfig --add nginx $ chkconfig nginx on
這樣就可以通過service nginx restart等方法來操作nginx了。你可以把程序下載下來,簡(jiǎn)單研究一下,如果你的nginx安裝路徑和我的不同,還要修改程序開頭的變量設(shè)置。
PHP7的編譯安裝 依賴環(huán)境慣例是先解決一些編譯的依賴包
$ yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel編譯安裝php7
在《lamp升級(jí)php至php7》一文中,我談到了如何在apache的服務(wù)器環(huán)境中升級(jí)php到7,而到nginx環(huán)境下,我們不再使用php的apxs模塊,而是直接使用php-fpm模塊。接下來,我們來嘗試編譯安裝php7。
先從官方網(wǎng)站下載php7,并且解壓,由于上面這篇文章已經(jīng)有了相關(guān)步驟,就不做過多詳解:
$ wget http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror $ tar zvxf php-7.0.0.tar.gz $ cd php-7.0.0
接下來要進(jìn)行編譯前的配置,和上面一篇文章不同,我們不提供apxs參數(shù),相反,我們提供php-fpm相關(guān)參數(shù):
$ ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache
配置無誤后執(zhí)行:
$ make $ make install
同樣可以使用-j2哦。如果安裝成功,OK,那么php7的安裝就OK了。
調(diào)整php配置默認(rèn)安裝好之后,你會(huì)發(fā)現(xiàn)/usr/local/php7/etc下面沒有php.ini文件,這個(gè)去哪里要呢?在php7的源碼安裝包都有。
$ cd /usr/src/php-7.0.0/ $ ls
可以看到有兩個(gè)php.ini-xxx文件,我們可以分別vi打開來看下,一個(gè)是產(chǎn)品模式,一個(gè)是開發(fā)模式。
$ cp php.ini-production /usr/local/php7/etc/php.ini $ vi /usr/local/php7/etc/php.ini
可以看到php的配置。本文就不做過多的配置解釋了。
啟用php-fpm服務(wù)上面我們?cè)诰幾gphp7的時(shí)候,已經(jīng)將fpm模塊編譯了,那么接下來,我們要啟用php-fpm。但是默認(rèn)情況下它的配置文件和服務(wù)都沒有啟用,所以要我們自己來搞定。
搞定配置文件:
$ cd /usr/local/php7/etc $ mv php-fpm.conf.default php-fpm.conf $ mv php-fpm.d/www.conf.default php-fpm.d/www.conf
php-fpm的具體配置我們也不做深入去詳解,因?yàn)樵诰幾g之前./configure的時(shí)候,我們都已經(jīng)確定了一些配置,比如運(yùn)行fpm的用戶和用戶組之類的,所以默認(rèn)配置應(yīng)該不會(huì)存在路徑問題和權(quán)限問題。
搞定php-fpm的服務(wù)載入:
就像上面的nginx一樣,我們希望使用service php-fpm start|stop|restart這些操作來實(shí)現(xiàn)服務(wù)的重啟,但沒有像nginx那么復(fù)雜,php編譯好之后,給我們提供了一個(gè)php-fpm的程序,不需要我再編寫分享了。這個(gè)文件放在php編譯源碼目錄中:
$ cd /usr/src/php-7.0.0/sapi/fpm $ ls $ cp init.d.php-fpm /etc/init.d/php-fpm $ chmod +x /etc/init.d/php-fpm $ chkconfig --add php-fpm $ chkconfig php-fpm on
通過上面這個(gè)操作,我們就可以使用sevice php-fpm start來啟用php-fpm了。用ps -ef | grep php-fpm看看進(jìn)程吧。
nginx代理php實(shí)現(xiàn)訪問通過上面的操作,nginx和php-fpm服務(wù)都被我們跑起來了,但是php-fpm走的是127.0.0.1:9000,外網(wǎng)是無法訪問的,而且我們也不可能直接通過php-fpm給外網(wǎng)提供服務(wù),我們用nginx去代理9000端口執(zhí)行php。
實(shí)際上這個(gè)過程只需要對(duì)nginx進(jìn)行配置即可,fpm已經(jīng)在后臺(tái)運(yùn)行了,我們需要在nginx的配置文件中增加代理的規(guī)則,即可讓用戶在訪問80端口,請(qǐng)求php的時(shí)候,交由后端的fpm去執(zhí)行,并返回結(jié)果。
$ vi /usr/local/nginx/conf/nginx.conf
如果你大致了解過nginx的配置,應(yīng)該能夠很快分辨出這個(gè)配置文件里面的結(jié)構(gòu),并且知道server代表一個(gè)虛擬主機(jī),要增加虛擬主機(jī)就再增加一個(gè)server,而且這個(gè)conf文件中也給出了例子。那么怎么代理php-fpm呢?找到:
#location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /script$fastcgi_script_name; # include fastcgi_params; #}
把前面的#注釋符號(hào)去掉,把script改為$document_root最終如下:
location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name; include fastcgi_params; }
這樣就OK了,重新載入nginx配置即可
$ service nginx reload
然后到/usr/local/nginx/html去寫一個(gè)php文檔,進(jìn)行測(cè)試吧。
如果你的程序能夠正常運(yùn)行起來,用ip作為外網(wǎng)訪問地址訪問成功,那么恭喜你,本篇文章的目的就達(dá)到了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39216.html
摘要:目前支持和協(xié)議。除此以外,還能在可能的字符編碼之間相互進(jìn)行編碼轉(zhuǎn)換。如果啟用了這個(gè)功能,輸入字符編碼可能將自動(dòng)轉(zhuǎn)換成。這些可能在未來增加。 前言 PHP7即將在12月3日正式發(fā)布,而RC8是已經(jīng)差不多穩(wěn)定了的版本,后續(xù)的GA版本主要都是在修復(fù)bug,所以為了未來開發(fā)環(huán)境的升級(jí),準(zhǔn)備嘗試安裝一下。 PHP7.0.0將在12月3日正式發(fā)布,但是12月2日時(shí)github已經(jīng)發(fā)布出PHP-7...
摘要:一開啟查看是否開啟輸出打開文件記錄關(guān)閉文件記錄設(shè)置內(nèi)核出來的存放路徑注意目錄要有權(quán)限給寫二調(diào)試準(zhǔn)備文件獲取地址保存在服務(wù)器上,例如備用。 一、開啟 查看是否開啟 core dump 輸出 ulimit -a 打開 core dump 文件記錄 ulimit -c unlimited yum install gdb php-dbg 關(guān)閉 core dump 文件記錄 ulimit -c ...
摘要:警告通過函數(shù),可以檢索很多敏感數(shù)據(jù),例如以及其它函數(shù)。當(dāng)開啟了安全模式,函數(shù)并不會(huì)執(zhí)行任何的權(quán)限檢測(cè)。返回當(dāng)前進(jìn)程所在的當(dāng)前控制終端的路徑名返回值成功時(shí),返回路徑名。返回值返回一個(gè)關(guān)聯(lián)數(shù)組,下標(biāo)為定義的各種限制。 POSIX: 簡(jiǎn)介: 該模塊包含了定義在 IEEE 1003.1(POSIX.1)標(biāo)準(zhǔn)文檔里的函數(shù)的接口,通過其它手段無法訪問。 警告:通過POSIX函數(shù),可以檢索很多敏感...
摘要:支持自動(dòng)識(shí)別密碼哈希格式并通過字典破解密碼哈希。支持枚舉用戶密碼哈希權(quán)限角色數(shù)據(jù)庫數(shù)據(jù)表和列。支持在數(shù)據(jù)庫管理系統(tǒng)中搜索指定的數(shù)據(jù)庫名表名或列名。水平越權(quán)用戶未授權(quán)可以訪問用戶的數(shù)據(jù)。對(duì)于所有需要權(quán)限控制的位置,必須嚴(yán)格檢驗(yàn)用戶權(quán)限級(jí)別。 常見漏洞 showImg(https://segmentfault.com/img/bVbst5x?w=918&h=921); 看到上圖的漏洞是不是...
摘要:不過,有些網(wǎng)友可能出于學(xué)習(xí)的考慮,不需要一鍵包或者面板這樣的復(fù)雜集成內(nèi)容,于是就希望自行編譯安裝環(huán)境。在這篇文章中,筆者就來分享一篇在系統(tǒng)中手動(dòng)編譯安裝安裝網(wǎng)站環(huán)境的過程。數(shù)據(jù)庫安全設(shè)置根據(jù)提示我們?cè)O(shè)置數(shù)據(jù)庫的安全和默認(rèn)選項(xiàng)。我們?cè)谶x擇Linux VPS、服務(wù)器之后需要搭建Web建站運(yùn)行環(huán)境,其中較多的用戶會(huì)選擇LNMP/LEMP或者LAMP比較多,當(dāng)然還有可能會(huì)安裝其他組合的軟件環(huán)境。如果...
閱讀 2232·2021-09-23 11:52
閱讀 1899·2021-09-02 15:41
閱讀 3018·2019-08-30 10:47
閱讀 1983·2019-08-29 17:14
閱讀 2334·2019-08-29 16:16
閱讀 3192·2019-08-28 18:29
閱讀 3418·2019-08-26 13:30
閱讀 2610·2019-08-26 10:49