Linux 筆記 - 第十六章 LNMP 之(一) 環境搭建

博客地址:http://www.moonxy.comphp

1、前言html

LNMP 中的 N 指 Nginx,在靜態頁面的處理上,Nginx 較 Apache 更勝一籌;但在動態頁面的處理上,Nginx 並不比 Apache 有優點,目前有不少愛好者對 Nginx 比較熱衷。mysql

2、安裝 LNMPlinux

LNMP 中 MySQL 的安裝步驟和 LAMP 中的同樣,前面的文章已經介紹,此處只講解 PHP 和 Nginx 的安裝。nginx

2.1 安裝 PHPsql

下載 PHP 的源碼包 php-7.2.8.tar.gz 到 /usr/local/src 目錄下,解壓獲得 php-7.2.8。數據庫

預編譯json

[root@ryan ~]# cd /usr/local/src/php-7.2.8
[root@ryan php-7.2.8]# useradd -s /sbin/nologin php-fpm
[root@ryan php-7.2.8]# ./configure --prefix=/usr/local/lnmp/php7 --with-config-file-path=/usr/local/lnmp/php7/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --enable-soap --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --without-pear --with-curl --with-openssl
[root@ryan php-7.2.8]# echo $?
0

其實此處預編譯參數中還應該添加上 --with-mysqli,表示添加 MySQL 模塊支持,之前版本能夠添加的 --with-mysql 參數在 PHP7 中已通過期失效。若是在預編譯時沒有添加參數 --with-mysqli,則須要按照下面的 2.2 所示的步驟來安裝 mysqli 動態擴展 。vim

PHP7 相對與 PHP5 的最大變化之一是移除了mysql 擴展,推薦使用 mysqli 或者 pdo_mysql,實際上在 PHP5.5 開始,PHP 就着手開始準備棄用 mysql 擴展,若是你使用 mysql 擴展,可能看到過這樣的提示 "Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in"。因此在之後的程序中,爲了保持兼容性,要儘可能減小使用 mysql 擴展用於數據庫鏈接。centos

編譯

[root@ryan php-7.2.8]# make
[root@ryan php-7.2.8]# echo $?
0

安裝

[root@ryan php-7.2.8]# make install
[root@ryan php-7.2.8]# echo $?
0

修改配置文件

[root@ryan php-7.2.8]# cp php.ini-production /usr/local/lnmp/php7/etc/php.ini
[root@ryan php-7.2.8]# cp /usr/local/lnmp/php7/etc/php-fpm.conf.default /usr/local/lnmp/php7/etc/php-fpm.conf

將如下內容寫入 php-fpm.conf 文件,以下:

[root@ryan php-7.2.8]# vim /usr/local/lnmp/php7/etc/php-fpm.conf
[global]
pid = /usr/local/lnmp/php7/var/run/php-fpm.pid
error_log = /usr/local/lnmp/php7/var/log/php-fpm.log
[www]
listen = 127.0.0.1:9000
listen.mode = 666
user = php-fpm
group = php-fpm
pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

驗證配置文件

[root@ryan php-7.2.8]# /usr/local/lnmp/php7/sbin/php-fpm -t
[12-Aug-2018 18:52:29] NOTICE: configuration file /usr/local/lnmp/php7/etc/php-fpm.conf test is successful

若是顯示 "test is successful" 則說明配置沒有問題;不然就要根據提示檢查配置文件。

複製服務啓動腳本

[root@ryan php-7.2.8]# cp /usr/local/src/php-7.2.8/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@ryan php-7.2.8]# chmod 755 /etc/init.d/php-fpm

啓動 php-fpm 服務

[root@ryan php-7.2.8]# service php-fpm start
Starting php-fpm  done

查看進程

[root@ryan php-7.2.8]# ps aux |grep php-fpm
root      15607  0.0  0.3 106596  6112 ?        Ss   19:22   0:00 php-fpm: master process (/usr/local/lnmp/php7/etc/php-fpm.conf)                                                                   
php-fpm   15608  0.0  0.2 106596  5556 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15609  0.0  0.2 106596  5560 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15610  0.0  0.2 106596  5560 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15611  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15612  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15613  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15614  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15615  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15616  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15617  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15618  0.0  0.2 106596  5568 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15619  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15620  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15621  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15622  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15623  0.0  0.2 106596  5560 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15624  0.0  0.2 106596  5560 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15625  0.0  0.2 106596  5568 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15626  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
php-fpm   15627  0.0  0.2 106596  5564 ?        S    19:22   0:00 php-fpm: pool www                                                                                                                 
root      15629  0.0  0.0 103312   880 pts/0    S+   19:22   0:00 grep php-fpm

能夠看到啓動了不少進程,大約有二十多個。

也可使用 php-fpm -m 查看模塊和 php-fpm -i 查看phpinfo,以下:

[root@ryan conf]# /usr/local/lnmp/php7/sbin/php-fpm -m
[PHP Modules]
cgi-fcgi
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

[root@ryan conf]# /usr/local/lnmp/php7/sbin/php-fpm -i
phpinfo()
PHP Version => 7.2.8

System => Linux ryan 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64
Build Date => Aug 12 2018 15:24:13
Configure Command =>  './configure'  '--prefix=/usr/local/lnmp/php7' '--with-config-file-path=/usr/local/lnmp/php7/etc' '--enable-fpm' '--with-fpm-user=php-fpm' '--with-fpm-group=php-fpm' '--with-libxml-dir' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-iconv-dir' '--with-zlib-dir' '--enable-soap' '--enable-ftp' '--enable-mbstring' '--enable-exif' '--disable-ipv6' '--without-pear' '--with-curl' '--with-openssl'
Server API => FPM/FastCGI
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /usr/local/lnmp/php7/etc
Loaded Configuration File => /usr/local/lnmp/php7/etc/php.ini
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
PHP API => 20170718
PHP Extension => 20170718
Zend Extension => 320170718
Zend Extension Build => API320170718,NTS
PHP Extension Build => API20170718,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => enabled
Zend Memory Manager => enabled
Zend Multibyte Support => provided by mbstring
IPv6 Support => disabled
DTrace Support => disabled
……

2.2 PHP 動態擴展模塊安裝

因爲在上面安裝 PHP 的時候,沒有安裝 MySQL 的支持模塊 mysqli,這會致使後面訪問系統時,有可能出現以下錯誤提示:Oops!System file lost class/class_mysqli.php

因此此處講解如何給已經安裝完成的 PHP 安裝動態擴展模塊。

進入 PHP 擴展模塊目錄:/usr/local/src/php-7.2.8/ext

[root@ryan ~]# cd /usr/local/src/php-7.2.8/ext
[root@ryan ext]# ll
total 320
drwxrwxr-x  4 root root  4096 Jul 17 13:35 bcmath
drwxrwxr-x  3 root root  4096 Jul 17 13:35 bz2
drwxrwxr-x  3 root root  4096 Jul 17 13:35 calendar
drwxrwxr-x  3 root root  4096 Jul 17 13:35 com_dotnet
drwxrwxr-x  4 root root  4096 Aug 12 15:21 ctype
drwxrwxr-x  4 root root  4096 Aug 12 15:21 curl
drwxrwxr-x  5 root root  4096 Aug 12 15:19 date
drwxrwxr-x  6 root root  4096 Jul 17 13:35 dba
drwxrwxr-x  5 root root  4096 Aug 12 15:21 dom
drwxrwxr-x  4 root root  4096 Jul 17 13:35 enchant
drwxrwxr-x  4 root root  4096 Aug 12 15:21 exif
-rwxrwxr-x  1 root root  9432 Jul 17 13:35 ext_skel
-rw-rw-r--  1 root root  1169 Jul 17 13:35 ext_skel_win32.php
drwxrwxr-x  5 root root  4096 Aug 12 15:21 fileinfo
drwxrwxr-x  5 root root  4096 Aug 12 15:21 filter
drwxrwxr-x  4 root root  4096 Aug 12 15:21 ftp
drwxrwxr-x  5 root root  4096 Aug 12 15:21 gd
drwxrwxr-x  3 root root  4096 Jul 17 13:35 gettext
drwxrwxr-x  3 root root  4096 Jul 17 13:35 gmp
drwxrwxr-x  5 root root  4096 Aug 12 15:22 hash
drwxrwxr-x  4 root root  4096 Aug 12 15:22 iconv
drwxrwxr-x  3 root root  4096 Jul 17 13:35 imap
drwxrwxr-x  3 root root  4096 Jul 17 13:35 interbase
drwxrwxr-x 21 root root  4096 Jul 17 13:35 intl
drwxrwxr-x  4 root root  4096 Aug 12 15:22 json
drwxrwxr-x  3 root root  4096 Jul 17 13:35 ldap
drwxrwxr-x  4 root root  4096 Aug 12 15:19 libxml
drwxrwxr-x  7 root root  4096 Aug 12 15:23 mbstring
drwxrwxr-x  3 root root  4096 Jul 17 13:35 mysqli
drwxrwxr-x  2 root root  4096 Jul 17 13:35 mysqlnd
drwxrwxr-x  3 root root  4096 Jul 17 13:35 oci8
drwxrwxr-x  3 root root  4096 Jul 17 13:35 odbc
drwxrwxr-x  5 root root  4096 Aug 12 15:19 opcache
drwxrwxr-x  4 root root  4096 Aug 12 15:19 openssl
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pcntl
drwxrwxr-x  5 root root  4096 Aug 12 15:20 pcre
drwxrwxr-x  4 root root  4096 Aug 12 15:23 pdo
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pdo_dblib
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pdo_firebird
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pdo_mysql
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pdo_oci
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pdo_odbc
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pdo_pgsql
drwxrwxr-x  4 root root  4096 Aug 12 15:23 pdo_sqlite
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pgsql
drwxrwxr-x  5 root root  4096 Aug 12 15:26 phar
drwxrwxr-x  4 root root  4096 Aug 12 15:23 posix
drwxrwxr-x  3 root root  4096 Jul 17 13:35 pspell
drwxrwxr-x  3 root root  4096 Jul 17 13:35 readline
drwxrwxr-x  3 root root  4096 Jul 17 13:35 recode
drwxrwxr-x  4 root root  4096 Aug 12 15:23 reflection
drwxrwxr-x  4 root root  4096 Aug 12 15:23 session
drwxrwxr-x  3 root root  4096 Jul 17 13:35 shmop
drwxrwxr-x  5 root root  4096 Aug 12 15:23 simplexml
drwxrwxr-x  3 root root  4096 Jul 17 13:35 skeleton
drwxrwxr-x  3 root root  4096 Jul 17 13:35 snmp
drwxrwxr-x  5 root root  4096 Aug 12 15:23 soap
drwxrwxr-x  3 root root  4096 Jul 17 13:35 sockets
drwxrwxr-x  3 root root  4096 Jul 17 13:35 sodium
drwxrwxr-x  6 root root  4096 Aug 12 15:23 spl
drwxrwxr-x  5 root root  4096 Aug 12 15:20 sqlite3
drwxrwxr-x  5 root root 12288 Aug 12 15:24 standard
drwxrwxr-x  3 root root  4096 Jul 17 13:35 sysvmsg
drwxrwxr-x  3 root root  4096 Jul 17 13:35 sysvsem
drwxrwxr-x  3 root root  4096 Jul 17 13:35 sysvshm
drwxrwxr-x  4 root root  4096 Jul 17 13:35 tidy
drwxrwxr-x  4 root root  4096 Aug 12 15:24 tokenizer
drwxrwxr-x  3 root root  4096 Jul 17 13:35 wddx
drwxrwxr-x  4 root root  4096 Aug 12 15:24 xml
drwxrwxr-x  5 root root  4096 Aug 12 15:24 xmlreader
drwxrwxr-x  4 root root  4096 Jul 17 13:35 xmlrpc
drwxrwxr-x  5 root root  4096 Aug 12 15:24 xmlwriter
drwxrwxr-x  3 root root  4096 Jul 17 13:35 xsl
drwxrwxr-x  2 root root  4096 Jul 17 13:35 zend_test
drwxrwxr-x  5 root root  4096 Jul 17 13:35 zip
drwxrwxr-x  4 root root  4096 Aug 12 15:21 zlib
[root@ryan ext]# cd mysqli
[root@ryan mysqli]# ll
total 344
-rw-rw-r-- 1 root root  4597 Jul 17 13:35 config.m4
-rw-rw-r-- 1 root root  1619 Jul 17 13:35 config.w32
-rw-rw-r-- 1 root root    61 Jul 17 13:35 CREDITS
-rw-rw-r-- 1 root root 76537 Jul 17 13:35 mysqli_api.c
-rw-rw-r-- 1 root root 50510 Jul 17 13:35 mysqli.c
-rw-rw-r-- 1 root root  5012 Jul 17 13:35 mysqli_driver.c
-rw-rw-r-- 1 root root  3443 Jul 17 13:35 mysqli_embedded.c
-rw-rw-r-- 1 root root  2654 Jul 17 13:35 mysqli_exception.c
-rw-rw-r-- 1 root root 25883 Jul 17 13:35 mysqli_fe.c
-rw-rw-r-- 1 root root  5334 Jul 17 13:35 mysqli_fe.h
-rw-rw-r-- 1 root root  6571 Jul 17 13:35 mysqli_libmysql.h
-rw-rw-r-- 1 root root  2620 Jul 17 13:35 mysqli_mysqlnd.h
-rw-rw-r-- 1 root root 36916 Jul 17 13:35 mysqli_nonapi.c
-rw-rw-r-- 1 root root  5649 Jul 17 13:35 mysqli_priv.h
-rw-rw-r-- 1 root root 16317 Jul 17 13:35 mysqli_prop.c
-rw-rw-r-- 1 root root  2455 Jul 17 13:35 mysqli_report.c
-rw-rw-r-- 1 root root  5115 Jul 17 13:35 mysqli_result_iterator.c
-rw-rw-r-- 1 root root  8587 Jul 17 13:35 mysqli_warning.c
-rw-rw-r-- 1 root root  4368 Jul 17 13:35 package.xml
-rw-rw-r-- 1 root root  1678 Jul 17 13:35 php_mysqli.h
-rw-rw-r-- 1 root root  9987 Jul 17 13:35 php_mysqli_structs.h
drwxrwxr-x 2 root root 20480 Jul 17 13:35 tests
-rw-rw-r-- 1 root root    31 Jul 17 13:35 TODO

進入你要安裝的模塊目錄,執行命令:/usr/local/lnmp/php7/bin/phpize,以下

[root@ryan mysqli]# /usr/local/lnmp/php7/bin/phpize
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718
[root@ryan mysqli]# ll
total 1588
-rw-r--r-- 1 root root  85825 Aug 12 23:07 acinclude.m4
-rw-r--r-- 1 root root 316202 Aug 12 23:07 aclocal.m4
drwxr-xr-x 2 root root   4096 Aug 12 23:07 autom4te.cache
drwxr-xr-x 2 root root   4096 Aug 12 23:07 build
-rwxr-xr-x 1 root root  42938 Aug 12 23:07 config.guess
-rw-r--r-- 1 root root   1764 Aug 12 23:07 config.h.in
-rw-rw-r-- 1 root root   4597 Jul 17 13:35 config.m4
-rwxr-xr-x 1 root root  35967 Aug 12 23:07 config.sub
-rwxr-xr-x 1 root root 467868 Aug 12 23:07 configure
-rw-r--r-- 1 root root   4698 Aug 12 23:07 configure.ac
-rw-rw-r-- 1 root root   1619 Jul 17 13:35 config.w32
-rw-rw-r-- 1 root root     61 Jul 17 13:35 CREDITS
-rw-r--r-- 1 root root      0 Aug 12 23:07 install-sh
-rw-r--r-- 1 root root 199728 Aug 12 23:07 ltmain.sh
-rw-r--r-- 1 root root   7135 Aug 12 23:07 Makefile.global
-rw-r--r-- 1 root root      0 Aug 12 23:07 missing
-rw-r--r-- 1 root root      0 Aug 12 23:07 mkinstalldirs
-rw-rw-r-- 1 root root  76537 Jul 17 13:35 mysqli_api.c
-rw-rw-r-- 1 root root  50510 Jul 17 13:35 mysqli.c
-rw-rw-r-- 1 root root   5012 Jul 17 13:35 mysqli_driver.c
-rw-rw-r-- 1 root root   3443 Jul 17 13:35 mysqli_embedded.c
-rw-rw-r-- 1 root root   2654 Jul 17 13:35 mysqli_exception.c
-rw-rw-r-- 1 root root  25883 Jul 17 13:35 mysqli_fe.c
-rw-rw-r-- 1 root root   5334 Jul 17 13:35 mysqli_fe.h
-rw-rw-r-- 1 root root   6571 Jul 17 13:35 mysqli_libmysql.h
-rw-rw-r-- 1 root root   2620 Jul 17 13:35 mysqli_mysqlnd.h
-rw-rw-r-- 1 root root  36916 Jul 17 13:35 mysqli_nonapi.c
-rw-rw-r-- 1 root root   5649 Jul 17 13:35 mysqli_priv.h
-rw-rw-r-- 1 root root  16317 Jul 17 13:35 mysqli_prop.c
-rw-rw-r-- 1 root root   2455 Jul 17 13:35 mysqli_report.c
-rw-rw-r-- 1 root root   5115 Jul 17 13:35 mysqli_result_iterator.c
-rw-rw-r-- 1 root root   8587 Jul 17 13:35 mysqli_warning.c
-rw-rw-r-- 1 root root   4368 Jul 17 13:35 package.xml
-rw-rw-r-- 1 root root   1678 Jul 17 13:35 php_mysqli.h
-rw-rw-r-- 1 root root   9987 Jul 17 13:35 php_mysqli_structs.h
-rw-r--r-- 1 root root  85732 Aug 12 23:07 run-tests.php
drwxrwxr-x 2 root root  20480 Jul 17 13:35 tests
-rw-rw-r-- 1 root root     31 Jul 17 13:35 TODO

發現會多建立出來一些文件。

在預編譯以前先將 mysqlnd 擴展複製到 mysqli 目錄下,由於 mysqli 須要依賴 mysqlnd,以下:

[root@ryan mysqli]# mkdir ext
[root@ryan mysqli]# cd ../
[root@ryan ext]# cp -r mysqlnd mysqli/ext
[root@ryan ext]# cd mysqli

預編譯

[root@ryan mysqli]# ./configure --with-php-config=/usr/local/lnmp/php7/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
[root@ryan mysqli]# echo $?
0

在此安裝中,--with-php-config=/usr/local/lnmp/php7/bin/php-config 參數是固定的。能夠 find 來搜索使用 php-config 和 mysql_config。

編譯

[root@ryan mysqli]# make
[root@ryan mysqli]# echo $?
0

安裝

[root@ryan mysqli]# make install
……
----------------------------------------------------------------------
Installing shared extensions:     /usr/local/lnmp/php7/lib/php/extensions/no-debug-non-zts-20170718/
Installing header files:          /usr/local/lnmp/php7/include/php/
[root@ryan mysqli]# echo $?
0

查看動態模塊文件

[root@ryan mysqli]# ll /usr/local/lnmp/php7/lib/php/extensions/no-debug-non-zts-20170718/
total 6252
-rwxr-xr-x 1 root root  749614 Aug 12 23:43 mysqli.so
-rwxr-xr-x 1 root root 3565484 Aug 12 15:29 opcache.a
-rwxr-xr-x 1 root root 2078551 Aug 12 15:29 opcache.so

能夠看到已經生成 mysqli.so 模塊文件,此目錄爲 PHP 的動態擴展模塊目錄,這與查看phpinfo中動態擴展模塊獲得的目錄一致,以下:

[root@ryan mysqli]# /usr/local/lnmp/php7/bin/php -i |grep -i extension_dir
extension_dir => /usr/local/lnmp/php7/lib/php/extensions/no-debug-non-zts-20170718 => /usr/local/lnmp/php7/lib/php/extensions/no-debug-non-zts-20170718
sqlite3.extension_dir => no value => no value

添加擴展的模塊

[root@ryan mysqli]# vim /usr/local/lnmp/php7/etc/php.ini
extension=mysqli.so

php.ini 裏面的分號;是註釋符。

查看 PHP 加載的模塊

[root@ryan mysqli]# /usr/local/lnmp/php7/sbin/php-fpm -m
[PHP Modules]
cgi-fcgi
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mysqli
openssl
pcre
PDO
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib

[Zend Modules]

發現 mysqli 動態擴展模塊已經添加完成。只要是使用 extension 手動添加的模塊,均屬於動態(shared)擴展模塊,不然即爲靜態(static)模塊。

2.3 安裝 Nginx

訪問 Nginx 官方網站:http://nginx.org,能夠發現其更新速度很快,此處咱們選擇下載當前最新文檔版,stable 1.14.0,以下:

下載和解壓 Nginx

[root@ryan php-7.2.8]# cd /usr/local/src
[root@ryan src]# wget http://nginx.org/download/nginx-1.14.0.tar.gz
[root@ryan src]# tar zxvf nginx-1.14.0.tar.gz

預編譯

[root@ryan src]# cd nginx-1.14.0
[root@ryan nginx-1.14.0]# ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module
[root@ryan nginx-1.14.0]# echo $?
0

編譯

[root@ryan nginx-1.14.0]# make
[root@ryan nginx-1.14.0]# echo $?
0

安裝

[root@ryan nginx-1.14.0]# make install
[root@ryan nginx-1.14.0]# echo $?
0

啓動 Nginx

[root@ryan nginx-1.14.0]# ll /usr/local/lnmp/nginx/sbin
total 5864
-rwxr-xr-x 1 root root 6000765 Aug 12 20:06 nginx
[root@ryan nginx-1.14.0]# /usr/local/lnmp/nginx/sbin/nginx
[root@ryan nginx-1.14.0]# ps aux |grep nginx
root      18259  0.0  0.0  46856  1192 ?        Ss   20:15   0:00 nginx: master process /usr/local/lnmp/nginx/sbin/nginx
nobody    18260  0.0  0.0  47288  1772 ?        S    20:15   0:00 nginx: worker process
root      18262  0.0  0.0 103308   876 pts/0    S+   20:15   0:00 grep nginx

看到 Nginx 默認使用系統自帶的 nobody 用戶。

配置解析 php

找到 /usr/local/lnmp/nginx/conf/nginx.conf,將以下內容前面的 # 刪掉,以下:

[root@ryan nginx-1.14.0]# cd /usr/local/lnmp/nginx/conf
[root@ryan conf]# 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$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME   /data/www/DiscuzX$fastcgi_script_name;
    include        fastcgi_params;
}

將 root 網站根目錄 /data/www/DiscuzX; 放在上層,做爲全局配置,並將 location / 中的 root he error_page 中的 root 註釋掉。

驗證 nginx 配置文件

[root@ryan conf]# /usr/local/lnmp/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/lnmp/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/lnmp/nginx/conf/nginx.conf test is successful

啓動 Nginx 的命令

[root@ryan mysqli]# /usr/local/lnmp/nginx/sbin/nginx

從新加載

[root@ryan conf]# /usr/local/lnmp/nginx/sbin/nginx -s reload

測試是否正常解析

添加 index.php 到 index 索引頁後,訪問以下:

綜上:

php 的配置文件爲:/usr/local/lnmp/php7/etc/php.ini

php-fpm 的配置文件爲:/usr/local/lnmp/php7/etc/php-fpm.conf

啓動 MySQL 的命令:

# service mysqld start

啓動 php-fpm 的命令:

# service php-fpm start

啓動 nginx 的命令:

# /usr/local/lnmp/nginx/sbin/nginx

中止 nginx 的命令:

# /usr/local/lnmp/nginx/sbin/nginx -s stop

從新加載 nginx 配置文件的命令:

# /usr/local/lnmp/nginx/sbin/nginx -s reload

其中 -s signal:給一個 nginx 主進程發送信號:stop(中止), quit(退出), reopen(重啓), reload(從新加載配置文件)

ldd命令用於打印程序或者庫文件所依賴的共享庫列表。以下:

[root@ryan ~]# which ls
alias ls='ls --color=auto'
        /bin/ls
[root@ryan ~]# ldd /bin/ls
        linux-vdso.so.1 =>  (0x00007ffc292e1000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f5b47388000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f5b47180000)
        libcap.so.2 => /lib64/libcap.so.2 (0x00007f5b46f7b000)
        libacl.so.1 => /lib64/libacl.so.1 (0x00007f5b46d73000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f5b469df000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f5b467da000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f5b475b3000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5b465bd000)
        libattr.so.1 => /lib64/libattr.so.1 (0x00007f5b463b8000)

注意:在 ldd 命令打印的結果中,"=>"左邊的表示該程序須要鏈接的共享庫之 so 名稱,右邊表示由 Linux 的共享庫系統找到的對應的共享庫在文件系統中的具體位置。默認狀況下,/etc/ld.so.conf 文件中包含有默認的共享庫搜索路徑。

附錄

LNMP架構的搭建(Linux+Nginx+MySQL+PHP源碼安裝 )+Discuz論壇的搭建

centos php7 安裝mysqli擴展心得:http://www.javashuo.com/article/p-bmoaivov-ct.html

LNMP 一鍵安裝包:https://lnmp.org/install.html

php-fpm 啓動後沒有監聽端口9000:https://blog.csdn.net/bujidexinq/article/details/70209625

nginx命令詳解:http://www.javashuo.com/article/p-zuzrzyku-bq.html

linux下php添加mysqli擴展mysqli_api.lo錯誤:https://jingyan.baidu.com/article/a3f121e4cb684afc9152bb73.html

Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的做用

linux系統命令make.clean的用法講解

相關文章
相關標籤/搜索