安裝LNMP環境通常是先安裝mysql/mariadb, 再安裝nginx, 其次是安裝php
[root@localhost ~]# yum -y install gcc [root@localhost ~]# yum -y install gcc++ [root@localhost ~]# yum -y install gcc-c++ [root@localhost ~]# yum -y install wget [root@localhost ~]# yum -y install make [root@localhost ~]# yum -y install libxml2 [root@localhost ~]# yum -y install libxml2-devel [root@localhost ~]# yum -y install openssl [root@localhost ~]# yum -y install openssl-devel [root@localhost ~]# yum -y install curl-devel [root@localhost ~]# yum -y install libjpeg-devel [root@localhost ~]# yum -y install libpng-devel [root@localhost ~]# yum -y install freetype-devel [root@localhost ~]# yum -y install bison [root@localhost ~]# yum -y install autoconf
> 建立php用戶組(-r選項是建立一個系統用戶組的意思) [root@localhost ~]# groupadd -r php
> 添加新用戶 > -r: 添加系統用戶( 這裏指將要被建立的系統用戶php ) > -g: 指定要建立的用戶所屬組( 這裏指添加到新系統用戶php到php系統用戶組 ) > -s: 新賬戶的登陸shell( `/sbin/nologin` 這裏設置爲將要被建立系統用戶php不能用來登陸系統 ) > -d: 新賬戶的主目錄( 這裏指定將要被建立的系統用戶php的家目錄爲 `/usr/local/php` ) > -M: 不要建立用戶的主目錄( 也就是說將要被建立的系統用戶php不會在 `/home` 目錄下建立 `php` 家目錄 ) [root@localhost ~]# useradd -r -g php -s /sbin/nologin -d /usr/local/php -M php
> 下載 [root@localhost ~]# wget -c https://github.com/php/php-src/archive/php-7.1.6.tar.gz > 解壓 [root@localhost ~]# tar -zxvf php-7.1.6.tar.gz
> 下載 [root@localhost ~]# wget -c https://github.com/skvadrik/re2c/releases/download/0.16/re2c-0.16.tar.gz > 解壓 [root@localhost ~]# tar -zxvf re2c-0.16.tar.gz > 進入解壓後的源碼目錄編譯並安裝 [root@localhost ~]# cd re2c-0.16 [root@localhost re2c-0.16]# ./configure [root@localhost re2c-0.16]# make && make install
使用php mcrypt 前必須先安裝Libmcrypt
> 下載 [root@localhost ~]# wget -c https://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz > 解壓 [root@localhost ~]# tar -zxvf libmcrypt-2.5.8.tar.gz > 進入解壓後的源碼目錄編譯並安裝 [root@localhost ~]# cd libmcrypt-2.5.8 [root@localhost libmcrypt-2.5.8]# ./configure [root@localhost libmcrypt-2.5.8]# # make && make install
> 下載 [root@localhost ~]# wget -c https://downloads.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz > 解壓 [root@localhost ~]# tar -zxvf mhash-0.9.9.9.tar.gz > 進入解壓後的源碼目錄編譯並安裝 [root@localhost mhash-0.9.9.9]# cd mhash-0.9.9.9 [root@localhost mhash-0.9.9.9]# ./configure [root@localhost mhash-0.9.9.9]# make && make install
> 下載 [root@localhost ~]# wget -c https://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz > 解壓 [root@localhost ~]# tar -zxvf mcrypt-2.6.8.tar.gz > 因爲在編譯mcrypt時,會找不到libmcrypt的連接庫,致使沒法編譯,由於Libmcrypt的連接庫在/usr/local/lib文件夾下 > 因此,在編譯mcrypt時要加入LD_LIBRARY_PATH=/usr/local/lib導入間接庫 > 進入解壓後的源碼目錄編譯並安裝 [root@localhost ~# cd mcrypt-2.6.8 [root@localhost mcrypt-2.6.8]# ./configure LD_LIBRARY_PATH=/usr/local/lib [root@localhost mcrypt-2.6.8]# make && make install
到目錄爲止全部的準備工做已經完成, 接下來就是編譯php7.1了!
[root@localhost php-src-php-7.1.6]# ll total 1252 -rw-rw-r--. 1 root root 82506 Jun 7 04:05 acinclude.m4 drwxrwxr-x. 2 root root 78 Jun 7 04:05 appveyor drwxrwxr-x. 2 root root 4096 Jun 7 04:05 build -rwxrwxr-x. 1 root root 772 Jun 7 04:05 buildconf -rw-rw-r--. 1 root root 334 Jun 7 04:05 buildconf.bat -rw-rw-r--. 1 root root 11982 Jun 7 04:05 CODING_STANDARDS -rw-rw-r--. 1 root root 42938 Jun 7 04:05 config.guess -rw-rw-r--. 1 root root 35987 Jun 7 04:05 config.sub -rw-rw-r--. 1 root root 46774 Jun 7 04:05 configure.in -rw-rw-r--. 1 root root 3163 Jun 7 04:05 CONTRIBUTING.md -rw-rw-r--. 1 root root 91 Jun 7 04:05 CREDITS drwxrwxr-x. 75 root root 4096 Jun 7 04:05 ext -rw-rw-r--. 1 root root 20917 Jun 7 04:05 EXTENSIONS -rw-rw-r--. 1 root root 137 Jun 7 04:05 footer -rwxrwxr-x. 1 root root 581 Jun 7 04:05 genfiles -rw-rw-r--. 1 root root 1143 Jun 7 04:05 header -rw-rw-r--. 1 root root 87836 Jun 7 04:05 INSTALL -rw-rw-r--. 1 root root 3218 Jun 7 04:05 LICENSE -rw-rw-r--. 1 root root 199728 Jun 7 04:05 ltmain.sh drwxrwxr-x. 3 root root 4096 Jun 7 04:05 main -rwxrwxr-x. 1 root root 4129 Jun 7 04:05 makedist -rw-rw-r--. 1 root root 1088 Jun 7 04:05 Makefile.frag -rw-rw-r--. 1 root root 2485 Jun 7 04:05 Makefile.gcov -rw-rw-r--. 1 root root 7236 Jun 7 04:05 Makefile.global -rw-rw-r--. 1 root root 5317 Jun 7 04:05 makerpm drwxrwxr-x. 2 root root 40 Jun 7 04:05 netware -rw-rw-r--. 1 root root 135093 Jun 7 04:05 NEWS drwxrwxr-x. 2 root root 65 Jun 7 04:05 pear -rw-rw-r--. 1 root root 1489 Jun 7 04:05 php.spec.in -rw-rw-r--. 1 root root 2523 Jun 7 04:05 php.gif -rw-rw-r--. 1 root root 71064 Jun 7 04:05 php.ini-development -rw-rw-r--. 1 root root 71096 Jun 7 04:05 php.ini-production -rw-rw-r--. 1 root root 7010 Jun 7 04:05 README.EXT_SKEL -rw-rw-r--. 1 root root 5026 Jun 7 04:05 README.GIT-RULES -rw-rw-r--. 1 root root 5417 Jun 7 04:05 README.input_filter -rw-rw-r--. 1 root root 3426 Jun 7 04:05 README.MAILINGLIST_RULES -rw-rw-r--. 1 root root 1608 Jun 7 04:05 README.md -rw-rw-r--. 1 root root 6040 Jun 7 04:05 README.namespaces -rw-rw-r--. 1 root root 5237 Jun 7 04:05 README.NEW-OUTPUT-API -rw-rw-r--. 1 root root 7528 Jun 7 04:05 README.PARAMETER_PARSING_API -rw-rw-r--. 1 root root 19766 Jun 7 04:05 README.REDIST.BINS -rw-rw-r--. 1 root root 12934 Jun 7 04:05 README.RELEASE_PROCESS -rw-rw-r--. 1 root root 5086 Jun 7 04:05 README.SELF-CONTAINED-EXTENSIONS -rw-rw-r--. 1 root root 15355 Jun 7 04:05 README.STREAMS -rw-rw-r--. 1 root root 8126 Jun 7 04:05 README.SUBMITTING_PATCH -rw-rw-r--. 1 root root 6695 Jun 7 04:05 README.TESTING -rw-rw-r--. 1 root root 4958 Jun 7 04:05 README.TESTING2 -rw-rw-r--. 1 root root 4261 Jun 7 04:05 README.UNIX-BUILD-SYSTEM -rw-rw-r--. 1 root root 109 Jun 7 04:05 README.WIN32-BUILD-SYSTEM -rwxrwxr-x. 1 root root 82234 Jun 7 04:05 run-tests.php drwxrwxr-x. 10 root root 4096 Jun 7 04:05 sapi drwxrwxr-x. 4 root root 99 Jun 7 04:05 scripts -rwxrwxr-x. 1 root root 2104 Jun 7 04:05 server-tests-config.php -rwxrwxr-x. 1 root root 52726 Jun 7 04:05 server-tests.php -rwxrwxr-x. 1 root root 108 Jun 7 04:05 snapshot -rw-rw-r--. 1 root root 10 Jun 7 04:05 stamp-h.in -rw-rw-r--. 1 root root 1 Jun 7 04:05 stub.c drwxrwxr-x. 10 root root 4096 Jun 7 04:05 tests drwxrwxr-x. 3 root root 33 Jun 7 04:05 travis drwxrwxr-x. 3 root root 4096 Jun 7 04:05 TSRM -rw-rw-r--. 1 root root 23356 Jun 7 04:05 UPGRADING -rw-rw-r--. 1 root root 3418 Jun 7 04:05 UPGRADING.INTERNALS -rwxrwxr-x. 1 root root 159 Jun 7 04:05 vcsclean drwxrwxr-x. 3 root root 4096 Jun 7 04:05 win32 drwxrwxr-x. 4 root root 4096 Jun 7 04:05 Zend
能夠發現目錄中並無configure
文件, 可是有一個名爲buildconf
的文件,嗯, 是它就是它, 咱們要經過運行這個文件生成
configure
文件javascript
configure
> 運行 `buildconf` 文件, 生成 `configure` 文件 [root@localhost php-src-php-7.1.6]# ./buildconf You should not run buildconf in a release package. use buildconf --force to override this check. > 很不幸運, 並無成功, 而且提示: You should not run buildconf in a release package. # 你不該該在發佈包運行buildconf文件。 use buildconf --force to override this check. # 使用buildconf文件重寫此檢查。 > 那就根據它的要求加入 `--force` 選項重寫檢查 [root@localhost php-src-php-7.1.6]# ./buildconf --force Forcing buildconf Removing configure caches buildconf: checking installation... buildconf: autoconf version 2.69 (ok) rebuilding aclocal.m4 rebuilding configure rebuilding main/php_config.h.in > 此次可算是buildconf文件重寫檢查成功了, 看一下源碼目錄有沒有 `configure` 文件
configure
以後的目錄[root@localhost php-src-php-7.1.6]# ll total 4260 -rw-rw-r--. 1 root root 82506 Jun 7 04:05 acinclude.m4 -rw-r--r--. 1 root root 312883 Jun 18 04:43 aclocal.m4 drwxrwxr-x. 2 root root 78 Jun 7 04:05 appveyor drwxr-xr-x. 2 root root 51 Jun 18 04:43 autom4te.cache drwxrwxr-x. 2 root root 4096 Jun 7 04:05 build -rwxrwxr-x. 1 root root 772 Jun 7 04:05 buildconf -rw-rw-r--. 1 root root 334 Jun 7 04:05 buildconf.bat -rw-r--r--. 1 root root 0 Jun 18 04:43 buildmk.stamp -rw-rw-r--. 1 root root 11982 Jun 7 04:05 CODING_STANDARDS -rw-rw-r--. 1 root root 42938 Jun 7 04:05 config.guess -rw-rw-r--. 1 root root 35987 Jun 7 04:05 config.sub -rwxr-xr-x. 1 root root 2758685 Jun 18 04:43 configure -rw-rw-r--. 1 root root 46774 Jun 7 04:05 configure.in -rw-rw-r--. 1 root root 3163 Jun 7 04:05 CONTRIBUTING.md -rw-rw-r--. 1 root root 91 Jun 7 04:05 CREDITS drwxrwxr-x. 75 root root 4096 Jun 7 04:05 ext -rw-rw-r--. 1 root root 20917 Jun 7 04:05 EXTENSIONS -rw-rw-r--. 1 root root 137 Jun 7 04:05 footer -rw-r--r--. 1 root root 1776 Jun 18 04:43 generated_lists -rwxrwxr-x. 1 root root 581 Jun 7 04:05 genfiles -rw-rw-r--. 1 root root 1143 Jun 7 04:05 header -rw-rw-r--. 1 root root 87836 Jun 7 04:05 INSTALL -rw-r--r--. 1 root root 0 Jun 18 04:43 install-sh -rw-rw-r--. 1 root root 3218 Jun 7 04:05 LICENSE -rw-rw-r--. 1 root root 199728 Jun 7 04:05 ltmain.sh drwxrwxr-x. 3 root root 4096 Jun 18 04:43 main -rwxrwxr-x. 1 root root 4129 Jun 7 04:05 makedist -rw-rw-r--. 1 root root 1088 Jun 7 04:05 Makefile.frag -rw-rw-r--. 1 root root 2485 Jun 7 04:05 Makefile.gcov -rw-rw-r--. 1 root root 7236 Jun 7 04:05 Makefile.global -rw-rw-r--. 1 root root 5317 Jun 7 04:05 makerpm -rw-r--r--. 1 root root 0 Jun 18 04:43 missing -rw-r--r--. 1 root root 0 Jun 18 04:43 mkinstalldirs drwxrwxr-x. 2 root root 40 Jun 7 04:05 netware -rw-rw-r--. 1 root root 135093 Jun 7 04:05 NEWS drwxrwxr-x. 2 root root 65 Jun 7 04:05 pear -rw-rw-r--. 1 root root 1489 Jun 7 04:05 php7.spec.in -rw-rw-r--. 1 root root 2523 Jun 7 04:05 php.gif -rw-rw-r--. 1 root root 71064 Jun 7 04:05 php.ini-development -rw-rw-r--. 1 root root 71096 Jun 7 04:05 php.ini-production -rw-rw-r--. 1 root root 7010 Jun 7 04:05 README.EXT_SKEL -rw-rw-r--. 1 root root 5026 Jun 7 04:05 README.GIT-RULES -rw-rw-r--. 1 root root 5417 Jun 7 04:05 README.input_filter -rw-rw-r--. 1 root root 3426 Jun 7 04:05 README.MAILINGLIST_RULES -rw-rw-r--. 1 root root 1608 Jun 7 04:05 README.md -rw-rw-r--. 1 root root 6040 Jun 7 04:05 README.namespaces -rw-rw-r--. 1 root root 5237 Jun 7 04:05 README.NEW-OUTPUT-API -rw-rw-r--. 1 root root 7528 Jun 7 04:05 README.PARAMETER_PARSING_API -rw-rw-r--. 1 root root 19766 Jun 7 04:05 README.REDIST.BINS -rw-rw-r--. 1 root root 12934 Jun 7 04:05 README.RELEASE_PROCESS -rw-rw-r--. 1 root root 5086 Jun 7 04:05 README.SELF-CONTAINED-EXTENSIONS -rw-rw-r--. 1 root root 15355 Jun 7 04:05 README.STREAMS -rw-rw-r--. 1 root root 8126 Jun 7 04:05 README.SUBMITTING_PATCH -rw-rw-r--. 1 root root 6695 Jun 7 04:05 README.TESTING -rw-rw-r--. 1 root root 4958 Jun 7 04:05 README.TESTING2 -rw-rw-r--. 1 root root 4261 Jun 7 04:05 README.UNIX-BUILD-SYSTEM -rw-rw-r--. 1 root root 109 Jun 7 04:05 README.WIN32-BUILD-SYSTEM -rwxrwxr-x. 1 root root 82234 Jun 7 04:05 run-tests.php drwxrwxr-x. 10 root root 4096 Jun 7 04:05 sapi drwxrwxr-x. 4 root root 99 Jun 7 04:05 scripts -rwxrwxr-x. 1 root root 2104 Jun 7 04:05 server-tests-config.php -rwxrwxr-x. 1 root root 52726 Jun 7 04:05 server-tests.php -rwxrwxr-x. 1 root root 108 Jun 7 04:05 snapshot -rw-rw-r--. 1 root root 10 Jun 7 04:05 stamp-h.in -rw-rw-r--. 1 root root 1 Jun 7 04:05 stub.c drwxrwxr-x. 10 root root 4096 Jun 7 04:05 tests drwxrwxr-x. 3 root root 33 Jun 7 04:05 travis drwxrwxr-x. 3 root root 4096 Jun 7 04:05 TSRM -rw-rw-r--. 1 root root 23356 Jun 7 04:05 UPGRADING -rw-rw-r--. 1 root root 3418 Jun 7 04:05 UPGRADING.INTERNALS -rwxrwxr-x. 1 root root 159 Jun 7 04:05 vcsclean drwxrwxr-x. 3 root root 4096 Jun 7 04:05 win32 drwxrwxr-x. 4 root root 4096 Jun 7 04:05 Zend
如今源碼目錄也就存在
configure
文件了
若是使用此編譯選項列表, 請將
\
反斜線後面的註釋去除, 而且後面不能有空白字符
[root@localhost php-src-php-7.1.6]# ./configure \ --prefix=/usr/local/php \ [php安裝的根目錄] --exec-prefix=/usr/local/php \ [php執行文件所在目錄] --bindir=/usr/local/php/bin \ [php/bin目錄] --sbindir=/usr/local/php/sbin \ [php/sbin目錄] --includedir=/usr/local/php/include \ [php包含文件所在目錄] --libdir=/usr/local/php/lib/php \ [php/lib目錄] --mandir=/usr/local/php/php/man \ [php/man目錄] --with-config-file-path=/usr/local/php/etc \ [php的配置目錄] --with-mysql-sock=/tmp/mysql.sock \ [php的Unix socket通訊文件] --with-mcrypt \ [是php裏面重要的加密支持擴展庫,linux環境下該庫在默認狀況下不開啓] --with-mhash \ [Mhash是基於離散數學原理的不可逆向的php加密方式擴展庫,其在默認狀況下不開啓] --with-openssl \ [OpenSSL 是一個安全套接字層密碼庫] --with-mysqli=shared,mysqlnd \ [php依賴mysql庫] --with-pdo-mysql=shared,mysqlnd \ [php依賴mysql庫] --with-gd \ [gd庫] --with-iconv \ [關閉iconv函數,種字符集間的轉換] --with-zlib \ [zlib是提供數據壓縮用的函式庫] --enable-zip \ [打開對zip的支持] --enable-inline-optimization \ [優化線程] --disable-debug \ [關閉調試模式] --disable-rpath \ [關閉額外的運行庫文件] --enable-shared \ [啓用動態庫] --enable-xml \ [開啓xml擴展] --enable-bcmath \ [打開圖片大小調整,用到zabbix監控的時候用到了這個模塊] --enable-shmop \ [共享內存] --enable-sysvsem \ [內存共享方案] --enable-mbregex \ [開啓多字節正則表達式的字符編碼。] --enable-mbstring \ [開啓多字節字符串函數] --enable-ftp \ [開啓ftp] --enable-gd-native-ttf \ [開啓gd庫原有字體] --enable-pcntl \ [PHP的進程控制支持實現了Unix方式的多進程建立] --enable-sockets \ [開啓套節字] --with-xmlrpc \ [打開xml-rpc的c語言] --enable-soap \ [開啓簡單對象訪問協議簡單對象訪問協議] --without-pear \ [開啓php擴展與應用庫] --with-gettext \ [開戶php在當前域中查找消息] --enable-session \ [容許php會話session] --with-curl \ [容許curl擴展] --with-jpeg-dir \ [指定jpeg安裝目錄yum安裝事後不用再次指定會自動找到] --with-freetype-dir \ [指定freetype安裝目錄yum安裝事後不用再次指定會自動找到] --enable-opcache \ [開啓使用opcache緩存] --enable-fpm \ [開啓fpm] --with-fpm-user=nginx \ [php-fpm的用戶] --with-fpm-group=nginx \ [php-fpm的用戶組] --without-gdbm \ [數據庫函數使用可擴展散列和相似於標準UNIX dbm的工做] --enable-fast-install \ [爲快速安裝優化] --disable-fileinfo
--enable-opcache=on
的錯誤提示> 錯誤提示 configure: error: Don't know how to define struct flock on this system, set --enable-opcache=no > 解決辦法 編輯/etc/ld.so.conf 加入/usr/local/lib 執行ldconfig,使其從新加載一次
make test
這一步不是必須的, 若是要運行可能會讓你等很長一段時間
[root@localhost php-src-php-7.1.6]# make test
You may have found a problem in PHP. This report can be automatically sent to the PHP QA team at http://qa.php.net/reports and http://news.php.net/php.qa.reports This gives us a better understanding of PHP's behavior. If you don't want to send the report immediately you can choose option "s" to save it. You can then email it to qa-reports@lists.php.net later. Do you want to send this report now? [Yns]: Y Please enter your email address. (Your address will be mangled so that it will not go out on any mailinglist in plain text): warnerwu@126.com Posting to http://qa.php.net/buildtest-process.php Thank you for helping to make PHP better.
出現這個結果
make test
也就完成了!
[root@localhost php-src-php-7.1.6]# ll /usr/local/php total 0 drwxr-xr-x. 2 root root 100 Jun 18 05:57 bin drwxr-xr-x. 3 root root 49 Jun 18 05:57 etc drwxr-xr-x. 3 root root 16 Jun 18 05:57 include drwxr-xr-x. 3 root root 16 Jun 18 05:57 lib drwxr-xr-x. 4 root root 26 Jun 18 05:57 php drwxr-xr-x. 2 root root 20 Jun 18 05:57 sbin drwxr-xr-x. 4 root root 26 Jun 18 05:57 var
> 將php源碼編譯目錄下的 `php.ini-production` 拷貝到php安裝目錄下的 `etc` 目錄下 [root@localhost php-src-php-7.1.6]# cp php.ini-production /usr/local/php/etc/php.ini
> 修改 `php.ini` 配置文件, 設置php擴展安裝目錄所在位置 [root@localhost php-src-php-7.1.6]# vim /usr/local/php/etc/php.ini > 找到 `extension_dir` 修改擴展目錄位置以下: extension_dir = "../lib/php/extensions/no-debug-non-zts-20160303/" > 上面寫的擴展目錄位置是使用的 `相對路徑` 固然你也可使用 `絕對路徑` 如: extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/"
> 修改 `php.ini` 配置文件, 設置php所安裝服務器時區 [root@localhost php-src-php-7.1.6]# vim /usr/local/php/etc/php.ini > 找到 `timezone` 修改時區以下: date.timezone = PRC > PRC就是英文People's Republic of China, 這個你應該知道的吧! 中華人民共和國
php-fpm
管理相關的配置文件到系統配置目錄 /etc/init.d
> 將php源碼編譯目錄下的 `sapi/fpm/init.d.php-fpm` 文件拷貝到系統配置 `/etc/init.d` 目錄下並重命名爲 `php-fpm` [root@localhost php-src-php-7.1.6]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
php-fpm
配置文件> 將php安裝目錄下的 `/usr/local/php/etc/php-fpm.conf.default` 文件拷貝同目錄下並重命名爲 `php-fpm.conf` [root@localhost php-src-php-7.1.6]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
www.conf
配置文件> 將php安裝目錄下的 `/usr/local/php/etc/php-fpm.d/www.conf.default` 文件拷貝同目錄下並重命名爲 `www.conf` [root@localhost php-src-php-7.1.6]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
> 建立並打開文件php.sh [root@localhost php-src-php-7.1.6]# vim /etc/profile.d/php.sh > 添加內容以下: export PATH=$PATH:/usr/local/php/bin/:/usr/local/php/sbin/ > 保存並退出 :wq! > 使用source當即生效剛剛添加的php環境變量 [root@localhost php-src-php-7.1.6]# source /etc/profile.d/php.sh
php-fpm運行進程的ID文件也就是php-fpm.pid
其中設置php-fpm進程目錄的用戶和用戶組爲nginx, php
有於我在安裝nginx時已經建立, 在這裏我就不建立了, 只是列舉css
> 添加系統用戶組nginx (若是你沒有建立過系統用戶組nginx請建立) [root@localhost php-src-php-7.1.6]# groupadd -r nginx > 建立新的系統用戶nginx, 並添加到系統用戶組nginx, 設置不容許此用戶名登陸shell (若是你沒有建立過系統用戶nginx請建立) [root@localhost php-src-php-7.1.6]# useradd -r -g nginx -s /sbin/nologin -d /usr/local/nginx -M nginx > 說明一下上面建立系統用戶nginx所使用的選項什麼意思 -r: 添加系統用戶( 這裏指將要被建立的系統用戶nginx ) -g: 指定要建立的用戶所屬組( 這裏指添加到新系統用戶nginx到nginx系統用戶組 ) -s: 新賬戶的登陸shell( `/sbin/nologin` 這裏設置爲將要被建立系統用戶nginx不能用來登陸系統 ) -d: 新賬戶的主目錄( 這裏指定將要被建立的系統用戶nginx的家目錄爲 `/usr/local/nginx` ) -M: 不要建立用戶的主目錄( 也就是說將要被建立的系統用戶nginx不會在 `/home` 目錄下建立 `nginx` 家目錄 ) > 建立 `php-fpm` 日誌目錄 [root@localhost php-src-php-7.1.6]# mkdir -p /var/log/php-fpm/ > 建立 `php-fpm` 進程的ID(php-fpm.pid)文件運行目錄 [root@localhost php-src-php-7.1.6]# mkdir -p /var/run/php-fpm > 修改 `php-fpm` 進程的ID(php-fpm.pid)文件運行目錄的所屬用戶和組 [root@localhost php-src-php-7.1.6]# chown -R nginx:nginx /var/run/php-fpm/
> 建立 `session` 存放目錄 [root@localhost php-src-php-7.1.6]# mkdir -p /var/lib/php/session > 修改 `session` 存放目錄的所屬用戶和組 [root@localhost php-src-php-7.1.6]# chown -R nginx:nginx /var/lib/php > 再次修改 `php.ini` 文件 [root@localhost php-src-php-7.1.6]# vim /usr/local/php/etc/php.ini > 找到 `session.save_path` 修改成以下內容: session.save_path = "/var/lib/php/session" > 保存並退出 :wq!
> 修改系統配置目錄下的 `php-fpm` 文件可執行權限 [root@localhost php-src-php-7.1.6]# chmod +x /etc/init.d/php-fpm > 將系統配置目錄下的 `php-fpm` 添加到 `系統服務` [root@localhost php-src-php-7.1.6]# chkconfig --add php-fpm > 設置 `php-fpm` `系統服務` 爲開機啓動 [root@localhost php-src-php-7.1.6]# chkconfig php-fpm on
php-fpm
系統服務是否啓動成功> 用 chkconfig 命令檢測一下服務是否運行成功 [root@localhost php-src-php-7.1.6]# chkconfig --list | grep php-fpm Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off > 可見服務已經在 第2 到 第5 運行等級打開 > 一樣你也能夠禁用 `php-fpm` 開機啓動 [root@localhost php-src-php-7.1.6]# chkconfig php-fpm off > 用 chkconfig 命令檢測一下服務是否運行成功 [root@localhost php-src-php-7.1.6]# chkconfig --list | grep php-fpm Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. If you want to list systemd services use 'systemctl list-unit-files'. To see services enabled on particular target use 'systemctl list-dependencies [target]'. php-fpm 0:off 1:off 2:off 3:off 4:off 5:off 6:off > 可見服務已經在 第2 到 第5 運行等級已經關閉
[root@localhost php-src-php-7.1.6]# php-fpm -t [18-Jun-2017 13:02:33] NOTICE: configuration file /usr/local/php/etc/php-fpm.conf test is successful
出現上面的提示也就是測試配置文件經過沒有問題, 能夠正式使用php服務了
> 使用 `systemctl start` + `服務名` 啓動系統服務 [root@localhost php-src-php-7.1.6]# systemctl start php-fpm.service
> 使用 `systemctl status` + `服務名` 查看系統服務狀態 [root@localhost php-src-php-7.1.6]# systemctl status php-fpm.service ● php-fpm.service - LSB: starts php-fpm Loaded: loaded (/etc/rc.d/init.d/php-fpm; bad; vendor preset: disabled) Active: active (running) since Sun 2017-06-18 13:05:26 EDT; 2min 46s ago Docs: man:systemd-sysv-generator(8) Process: 105210 ExecStart=/etc/rc.d/init.d/php-fpm start (code=exited, status=0/SUCCESS) Memory: 11.0M CGroup: /system.slice/php-fpm.service ├─105212 php-fpm: master process (/usr/local/php/etc/php-fpm.conf) ├─105213 php-fpm: pool www ├─105214 php-fpm: pool www └─105215 php-fpm: pool www Jun 18 13:05:19 localhost.localdomain systemd[1]: Starting LSB: starts php-fpm... Jun 18 13:05:24 localhost.localdomain php-fpm[105210]: Starting php-fpm done Jun 18 13:05:26 localhost.localdomain systemd[1]: Started LSB: starts php-fpm.
你能夠看到一個綠色的active (running)
說明系統服務php-fpm
已經在工做服務了,有沒有以爲自從RedHat系統到7之後, 愈來愈舒心了(哈哈)html
[root@localhost php-src-php-7.1.6]# php -v PHP 7.1.6 (cli) (built: Jun 18 2017 05:55:31) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
修改nginx配置文件使之使用nginx反向php解釋器, 也就是php-fpm它其實就是cgi
> 說明一下我在安裝的nginx是將配置文件放在 `/etc/nginx/` 目錄下 > 修改配置文件以下: server { listen 80; server_name www.nginx.dev; #charset koi8-r; access_log logs/nginx.dev.access.log main; location / { root /data/www/html; index index.php index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /data/www/html; } location ~ ^/(images|javascript|js|css|flash|media|static)/ { expires 30d; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { # root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /data/www/html/$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } > 建立文件 [root@localhost php-src-php-7.1.6]# touch /data/www/html/index.php > 編輯文件 [root@localhost php-src-php-7.1.6]# vim /data/www/html/index.php > 輸入內容 <?php phpinfo(); > 保存退出 :wq! > 從新加載nginx配置 [root@localhost php-src-php-7.1.6]# systemctl reload nginx.service
至此PHP7.1也就編譯安裝成功了, 也和nginx創建了關係至於nginx和php-fpm和是怎麼工做的能夠參考 Nginx+Php-fpm運行原理詳解java
但願本文對你的工做和學習有所幫助若是以爲還不錯怎麼感謝我呢? 媽呀! 點贊啊!mysql
Good Luck! from warnerwu at 2017.06.24 PMlinux