LNMP一體式部署

常見的Web框架結構好比:LNMP和LAMPphp

L=Linux N=nginx A=apache M= MySQL P=php T=Tomcathtml

Nginx和Apache都是Web應用服務器,Nginx處理靜態數據快,Apache處理動態快;Nginx對系統資源佔用小,Apache對系統資源佔用高;Nginx用的是epoll模型,Apache用的是select模型mysql

 

LNMP組合的工做流程:linux

 

在LNMP組合工做時,首先是用戶經過瀏覽器輸入域名請求 Nginx Web服務,(用戶經過瀏覽器發過來的請求數據包是http格式的數據包,特色是格式很鬆散,所以解析的速度慢,可是數據包比fastcgi格式數據包小,省帶寬nginx

若是請求是靜態資源(location /{ 過濾),worker進程,去網頁目錄根據URL的uri部分去拿網頁(即磁盤I/O讀寫)讀取到內存裏,則由Nginx解析返回給用戶;web

注:用戶的請求必定是遵循HTTP協議的,由於是經過瀏覽器過來的(80端口)sql

Nginx和Apache其實同樣,若是沒有PHP支持,那麼都處理不了所謂的動態請求。他們自身其實都只能處理靜態(圖片、視頻、html網頁)。只是Apache轉發動態數據包的速度快,可是隻是單個包的速度,Apache併發低數據庫

 

網頁位置能夠寫在location外,也就是server裏,對所有的location生效apache

 

若是是動態請求(.php結尾),那麼Nginx客戶端就會把它經過FastCGI接口將請求由FastCGI的客戶端Nginx推送到FastCGI的服務端PHP-fpm(監聽9000端口)接口規則=快速接口,fastcgi數據包這種規則的數據包 格式很是嚴謹,所以,PHP解析的速度很是快,可是越嚴謹的數據包越大,因此fastcgi數據包大小要絕對大於http數據包)(生產經常使用方法)發送給PHP引擎服務(FastCGI進程php-fpm)解析器(php.ini)進行解析。在這個階段進行了數據包的格式轉換,再也不是和http請求了,而是轉換成fastcgi格式的數據包,爲了加快PHP的解析速度vim

先把動態網頁讀到內存裏,用PHP(php.ini)解析器執行這段代碼,也就是執行sql語句將代碼轉換爲想要的數據,數據將這部分代碼覆蓋,動態網頁變成靜態網頁。開發的代碼實現的遠程去找mysql,和運維是不要緊的

具體實施:

location ~* \.(php|php5)${

index index.php  index.htmp index.htmpl;

{

fastcgi_pass 127.0.0.1:9000(若是是本地部署的話)

修改配置文件,將監聽本地的改爲監聽IP的(若是是監聽遠程的)

注:做爲客戶端client的fastcgi_pass(Nginx安裝包包含)和做爲server端的PHP-fpm (PHP安裝包包含)服務端爲socket進程,監聽9000端口,由於常常用因此fastcgi_pass和Nginx合併並且PHP-fpm和PHP功能合併了。

監聽IP容許遠程訪問,監聽127是與容許本地訪問

PHP不用修改配置,找的網頁和Nginx同樣的

分佈式部署兩邊各有一個網頁,不會出現衝突;可是部署在一臺,最好程序用戶設置成同一個用戶,否則會形成資源分配的問題等。

Nginx和PHP各有其各自的資源空間,優化包括安全優化和性能優化,性能優化每每是內存

 

若是這個動態請求要讀取數據庫數據,那麼PHP就會繼續向後請求MySQL數據庫,以讀取須要的數據,並最終經過Nginx服務把獲取的數據返回給用戶,這就是LNMP環境的基本請求順序流程。這個請求流程是企業使用LNMP環境的經常使用流程。

注:靜態網頁是文件實體

  動態網頁也是文件實體的,只是他的實體是代碼(JS語言,前臺語言;PHP代碼,後臺語言)動態網頁由實體文件index.php(放在內存中),經過JS語言到數據庫取得數據,並寫回index.php文件,再打包給用戶(代碼不放在存儲中)

代碼是不往存儲裏放的,不作備份,NFS保證安全的合適圖片和視頻,因此單獨掛;像網頁的文件等都是直接在web服務器本地的。PHP需不須要掛存儲?若是是讀網頁,是不須要掛存儲的,可是若是是用戶上傳的話是須要掛存儲的

 

分離式部署中,NGINX服務器和PHP服務器上網頁、代碼必須二者都有,不然會觸發404



LNMP的部署方式分爲兩種:

 

所有部署在一臺上

LNMP

所有不在一臺上

N+P+M

只分離MySQL

NP+M

1、部署LNMP(將Nginx和PHP的程序用戶設爲同一個)

1 安裝Nginx

[root@localhost ~]# tar xf nginx-1.10.2.tar.gz -C /usr/src/

[root@localhost ~]# cd /usr/src/nginx-1.10.2/

[root@localhost ~]# mount /dev/sr0 /media/cdrom

[root@localhost nginx-1.10.2]# yum -y install pcre-devel openssl-devel

[root@localhost nginx-1.10.2]# useradd -s /sbin/nologin -M www   //建立程序用戶

[root@localhost nginx-1.10.2]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

[root@localhost nginx-1.10.2]# make && make install

[root@localhost nginx-1.10.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

[root@localhost conf]# cd /usr/local/nginx/conf/

[root@localhost conf]# egrep -v "#|^$" nginx.conf.default > nginx.conf

[root@localhost conf]# vim nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;

        server_name  www.yunjisuan.com;

        location / {

            root   html/www;

            index  index.html index.htm;

        }

    }

}

 

!Nginx編譯安裝完畢

 

2  安裝MySQL(PHP須要MySQL的支持環境)

 

 

# 建立mysql用戶的帳號

 

[root@wangmingxin ~]# groupadd mysql

[root@wangmingxin ~]# useradd -s /sbin/nologin -g mysql -M mysql

[root@wangmingxin ~]# tail -1 /etc/passwd

mysql:x:501:501::/home/mysql:/sbin/nologin

[root@wangmingxin ~]# id mysql

uid=501(mysql) gid=501(mysql) groups=501(mysql)

 

# 採用二進制方式安裝MySQL

[root@wangmingxin ~]# tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz -C /usr/local/

[root@wangmingxin ~]# cd /usr/local/

[root@wangmingxin local]# mv mysql-5.5.32-linux2.6-x86_64 mysql-5.5.32

[root@wangmingxin local]# ln -s mysql-5.5.32 mysql

[root@wangmingxin local]# ls

bin  games    lib    libexec  mysql-5.5.32  sbin   src

etc  include  lib64  mysql    nginx         share

[root@wangmingxin local]# cd /usr/local/mysql

[root@wangmingxin mysql]# ls

bin      data  include         lib  mysql-test  scripts  sql-bench

COPYING  docs  INSTALL-BINARY  man  README      share    support-files

#提示:

二進制安裝包,僅須要解壓就能夠了,不須要執行cmake/configure,make,make install等過程

 

注意:

  • #當安裝LNMP一體化環境時,MySQL數據庫要裝在Nginx所在的機器上。若是MySQL和Nginx不在一臺機器上,那麼,Nginx服務器上的MySQL數據庫軟件包只要解壓移動到/usr/local/目錄,更名爲mysql就能夠了,不須要進行後面的初始化配置。
  • #在非一體的LNMP環境(Nginx和MySQL不在一臺機器上),編譯PHP環境時,也是須要MySQL數據庫環境的,可是高版本的PHP,例如5.3版本以上,內置了PHP須要的MySQL程序,所以,對於此類版本就不須要在Nginx服務器上安裝MySQL軟件了,只須要在編譯PHP時指定相關參數便可。這個PHP的編譯參數爲--with-mysql=mysqld,表示PHP程序在編譯時會調用內置的MySQL的庫。

#初始化 MySQL配置文件my.cnf

[root@wangmingxin mysql]# cd /usr/local/mysql

[root@wangmingxin mysql]# ls -l support-files/*.cnf

-rw-r--r-- 1 7161 wheel  4691 Jun 19  2013 support-files/my-huge.cnf

-rw-r--r-- 1 7161 wheel 19759 Jun 19  2013 support-files/my-innodb-heavy-4G.cnf

-rw-r--r-- 1 7161 wheel  4665 Jun 19  2013 support-files/my-large.cnf

-rw-r--r-- 1 7161 wheel  4676 Jun 19  2013 support-files/my-medium.cnf

-rw-r--r-- 1 7161 wheel  2840 Jun 19  2013 support-files/my-small.cnf

[root@wangmingxin mysql]# /bin/cp support-files/my-small.cnf /etc/my.cnf

提示: 

- support-files下有my.cnf的各類配置樣例。 

- 使用cp全路徑/bin/cp,可實現拷貝而不出現替換提示,即若是有重名文件會直接覆蓋 

- 本例爲測試安裝環境,所以選擇參數配置小的my-small.cnf配置模版,若是是生產環境能夠根據硬件選擇更高級的配置文件,上述配置文件模版對硬件的要求從低到高依次爲:

1.  my-medium.cnf (最低)

2.  my-small.cnf

3.  my-large.cnf

4.  my-huge.cnf

5.  my-innodb-heavy-4G.cnf(最高)

# 初始化MySQL數據庫文件

[root@wangmingxin ~]# mkdir -p /usr/local/mysql/data   //創建MySQL數據文件目錄

[root@wangmingxin ~]# chown -R mysql.mysql /usr/local/mysql   //受權mysql用戶管理MySQL的安裝目錄

[root@wangmingxin ~]# yum -y install libaio  //光盤源安裝依賴包,不然下一步的編譯會報錯

[root@wangmingxin ~]# /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

#初始化MySQL數據庫文件,會有不少信息提示,若是沒有ERROR級別的錯誤,會有兩個OK的字樣,表示初始化成功,不然就要解決初始化的問題

以上命令的主要做用是在/usr/local/mysql/data/目錄下生成MySQL正確運行所必需的基本數據庫文件,其功能是對MySQL權限,狀態等進行管理。

# 初始化故障排錯集錦

錯誤示例1:

usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared ob

#錯誤緣由是沒有libaio函數庫的支持。須要

yum -y install libaio

錯誤示例2:

WARNING:The host'mysql'could not be looked up with resolveip

#須要修改主機名解析,使其和uname -n同樣,修改後的結果以下:

[root@localhost ~] # grep `uname -n` /etc/hosts

錯誤示例3

ERROR:1004Can't create file '/tmp/#sql300e_1_o.frm'(errno:13)

#緣由是/tmp目錄的權限有問題。

解決辦法爲處理/tmp目錄,以下:

[root@localhost ~]# ls -ld /tmp

drwxrwxrwt. 3 root root 4096 Jul 14 07:56 /tmp

[root@localhost ~]# chmod -R 1777 /tmp/

```

此故障必須解除,不然,後面會出現登錄不了數據庫等問題。

#配置並啓動MySQL數據庫(PHP安裝須要先有mysql環境,否則php會報錯)

1 設置MySQL啓動腳本

[root@wangmingxin mysql]# /bin/cp support-files/mysql.server /etc/init.d/mysqld   //拷貝MySQL啓動腳本到MySQL的命令路徑

[root@wangmingxin mysql]# chmod +x /etc/init.d/mysqld   //使腳本可執行

 

(2)MySQL二進制默認安裝路徑是/usr/local/mysql,啓動腳本里是/usr/local/mysql。若是安裝路徑不一樣,那麼腳本里路徑等都須要替換

(3)啓動MySQL數據庫,命令以下:

[root@wangmingxin mysql]# /etc/init.d/mysqld start

Starting MySQL........ SUCCESS!

以上是啓動數據庫的規範方法之一,但還能夠用以下方式啓動, 

/usr/local/mysql/bin/mysqld_safe --user=mysql & 

這個命令結尾的「&」符號,做用是在後臺執行MySQL服務,命令執行完還須要按下回車才能進入命令行狀態。

(4)檢查MySQL數據庫是否啓動,命令以下:

[root@wangmingxin mysql]# netstat -antup | grep mysql

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4037/mysqld     

若是發現3306端口沒起來,請tail -100 /usr/local/mysql/data/主機名.err查看日誌信息,看是否有報錯信息,而後根據相關錯誤提示進行調試。常常查看服務運行日誌是個很好的習慣,也是高手的習慣。

(5)查看MySQL數據庫啓動結果日誌,命令以下:

[root@wangmingxin mysql]# tail -10 /usr/local/mysql/data/zhangminagjuan.err InnoDB: Creating foreign key constraint system tables

InnoDB: Foreign key constraint system tables created

181127 19:08:47  InnoDB: Waiting for the background threads to start

181127 19:08:48 InnoDB: 5.5.32 started; log sequence number 0

181127 19:08:48 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306

181127 19:08:48 [Note]   - '0.0.0.0' resolves to '0.0.0.0';

181127 19:08:48 [Note] Server socket created on IP: '0.0.0.0'.

181127 19:08:48 [Note] Event Scheduler: Loaded 0 events

181127 19:08:48 [Note] /usr/local/mysql/bin/mysqld: ready for connections.

Version: '5.5.32'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

(6)設置MySQL開機自啓動,命令以下:

[root@wangmingxin mysql]# chkconfig --add mysqld

[root@wangmingxin mysql]# chkconfig mysqld on

[root@wangmingxin mysql]# chkconfig --list mysqld

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off

提示:也能夠將啓動命令/etc/init.d/mysqld start 放到/etc/rc.local裏面

(7)配置mysql命令的全局使用路徑,命令以下:

[root@wangmingxin mysql]# ln -s /usr/local/mysql/bin/* /usr/local/bin/

[root@wangmingxin mysql]# which mysqladmin

/usr/local/bin/mysqladmin

#MySQL安全配置

爲MySQL的root用戶設置密碼,命令以下:

[root@wangmingxin mysql]# mysqladmin -u root password '666666'

[root@wangmingxin mysql]# mysql -uroot -p666666

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.5.32 MySQL Community Server (GPL)

 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql>

 

LNMPPHPFastCGI方式)服務的安裝和準備

檢查NginxMySQL的安裝狀況

[root@wangmingxin ~]# ls -ld /usr/local/nginx     //檢查確認Nginx及MySQL的安裝路徑

drwxr-xr-x 6 root root 4096 Nov 27 16:47 /usr/local/nginx

[root@wangmingxin ~]# ls -ld /usr/local/mysql

lrwxrwxrwx 1 mysql mysql 12 Nov 27 18:48 /usr/local/mysql -> mysql-5.5.32

[root@wangmingxin ~]# netstat -antup | grep -E "80|3306"     //檢查端口及啓動狀況

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4037/mysqld     

測試訪問Nginx及mysql是否OK,

是否是能curl通

能不能登陸mysql

#檢查安裝PHP所需的lib庫

 [root@localhost ~]# rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel

zlib-devel-1.2.3-29.el6.x86_64

 [root@localhost ~]# rpm -qa freetype-devel libpng-devel gd libcurl-devel libxslt-devel

  • 注:每一個lib通常都會存在對應的以「*-devel」命名的包,安裝lib對應的-devel包後,對應的lib包就會自動安裝好,例如安裝gd-devel時就會安裝gd。
  • 這些lib庫不是必須安裝的,可是目前的企業環境下通常都須要安裝。不然,PHP程序運行時會出現問題,例如驗證碼沒法顯示等。



執行下面命令安裝相關的lib軟件包

 [root@localhost ~]# yum -y install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel

 [root@localhost ~]# yum -y install freetype-devel libpng-devel gd libcurl-devel libxslt-devel

安裝後的結果以下:

[root@wangmingxin ~]# rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel

libjpeg-turbo-devel-1.2.1-1.el6.x86_64

zlib-devel-1.2.3-29.el6.x86_64

libxml2-devel-2.7.6-14.el6.x86_64

1. #這裏僅缺乏libiconv-devel包  由於默認的yum源沒有此包,後面會編譯安裝。

[root@wangmingxin ~]#  rpm -qa freetype-devel libpng-devel gd libcurl-devel libxslt-devel

libxslt-devel-1.1.26-2.el6_3.1.x86_64

gd-2.0.35-11.el6.x86_64

libpng-devel-1.2.49-1.el6_2.x86_64

libcurl-devel-7.19.7-37.el6_4.x86_64

freetype-devel-2.3.11-14.el6_3.1.x86_64

#安裝yum沒法安裝的libiconv

[root@wangmingxin libiconv-1.14]# tar xf libiconv-1.14.tar.gz -C /usr/src/

[root@wangmingxin libiconv-1.14]# cd /usr/src/libiconv-1.14/

[root@wangmingxin libiconv-1.14]# ./configure --prefix=/usr/local/libiconv && make && make install

安裝libmcrypt

推薦使用簡單的在線yum的方式安裝:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo 

編譯安裝過程略 

[root@localhost yum.repos.d]# yum -y install libmcrypt-devel

#開始安裝PHPFastCGI方式)服務

1. [root@localhost ~]# tar xf php-5.3.28.tar.gz -C /usr/src/

2. [root@localhost ~]# cd /usr/src/php-5.3.28/

3. [root@localhost php-5.3.28]# ./configure \

4. > --prefix=/usr/local/php5.3.28 \     #表示指定PHP的安裝路徑爲/usr/local/php5.3.28

5. > --with-mysql=/usr/local/mysql \     #表示須要指定MySQL的安裝路徑,安裝PHP須要的MySQL相關內容。固然,若是沒有MySQL軟件包,也能夠不單獨安裝,這樣的狀況可以使用--with-mysql=mysqlnd替代--with-                                                  mysql=/usr/local/mysql,由於PHP軟件裏已經自帶了鏈接MySQL的客戶端工具。

6. > --with-iconv-dir=/usr/local/libiconv \

7. > --with-freetype-dir \

8. > --with-jpeg-dir \

9. > --with-png-dir \

10. > --with-zlib \

11. > --with-libxml-dir=/usr \

12. > --enable-xml \

13. > --disable-rpath \

14. > --enable-safe-mode \

15. > --enable-bcmath \

16. > --enable-shmop \

17. > --enable-sysvsem \

18. > --enable-inline-optimization \

19. > --with-curl \

20. > --with-curlwrappers \

21. > --enable-mbregex \

22. > --enable-fpm \

23. > --enable-mbstring \

24. > --with-mcrypt \

25. > --with-gd \

26. > --enable-gd-native-ttf \

27. > --with-openssl \

28. > --with-mhash \

29. > --enable-pcntl \

30. > --enable-sockets \

31. > --with-xmlrpc \

32. > --enable-zip \

33. > --enable-soap \

34. > --enable-short-tags \

35. > --enable-zend-multibyte \

36. > --enable-static \

37. > --with-xsl \

38. > --with-fpm-user=www \     #nginx表示指定PHP-FPM進程管理的用戶爲www,此處最好和Nginx服務用戶統一

39. > --with-fpm-group=www \     #表示指定PHP-FPM進程管理的組爲www,此處最好與Nginx服務用戶組統一。

40. > --enable-ftp     #表示激活PHP-FPM方式服務,即以FastCGIF方式運行PHP服務。

1. #特別強調:上述每行結尾的換行符反斜線(\)以後不能再有任何字符包括空格

編譯PHP

[root@wangmingxin php-5.3.28]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18

[root@wangmingxin php-5.3.28]# ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/

[root@wangmingxin php-5.3.28]# touch ext/phar/phar.phar

[root@wangmingxin php-5.3.28]# make

 #make最後的正確提示

 Build complete.

 Don't forget to run 'make test'.

[root@wangmingxin php-5.3.28]# make install     //安裝PHP生成文件到系統

配置PHP引擎配置文件php.ini

[root@wangmingxin ~]# ln -s /usr/local/php5.3.28/ /usr/local/php     //設置軟鏈接以方便訪問

[root@wangmingxin ~]# ls -l /usr/local/php

lrwxrwxrwx 1 root root 21 Nov 27 22:24 /usr/local/php -> /usr/local/php5.3.28/

[root@wangmingxin ~]# cd /usr/src/php-5.3.28/   //查看PHP配置默認模板文件

[root@wangmingxin php-5.3.28]# ls php.ini*

php.ini-development  php.ini-production

[root@wangmingxin php-5.3.28]# cp php.ini-production /usr/local/php/lib/php.ini   //拷貝PHP配置文件到PHP默認目錄,並更改文件名爲php.ini

[root@wangmingxin php-5.3.28]# ls -l /usr/local/php/lib/php.ini

-rw-r--r-- 1 root root 69627 Nov 27 22:29 /usr/local/php/lib/php.ini

 

 配置PHPFastCGI方式)的配置文件php-fpm.conf



[root@wangmingxin php-5.3.28]# /bin/cp php.ini-production /usr/local/php/lib/php.ini

[root@wangmingxin php-5.3.28]# ls -l /usr/local/php/lib/php.ini

-rw-r--r-- 1 root root 69627 Nov 27 22:33 /usr/local/php/lib/php.ini

[root@wangmingxin php-5.3.28]# cd /usr/local/php/etc/

[root@wangmingxin etc]# ls

pear.conf  php-fpm.conf.default

[root@wangmingxin etc]# /bin/cp php-fpm.conf.default php-fpm.conf

關於php-fpm.conf,暫時可用默認的配置,先把服務搭好,之後再進行優化。



啓動PHP服務(FastCGI方式)

[root@wangmingxin etc]# /usr/local/php/sbin/php-fpm     //啓動PHP服務php-fpm

[root@wangmingxin etc]# ps -ef | grep php-fpm     //檢查PHP服務php-fpm的進程及啓動端口的狀況

root       4961      1  0 22:35 ?        00:00:00 php-fpm: master process (/usr/local/php5.3.28/etc/php-fpm.conf)

www        4962   4961  0 22:35 ?        00:00:00 php-fpm: pool www          

www        4963   4961  0 22:35 ?        00:00:00 php-fpm: pool www          

root       4965 117449  8 22:35 pts/1    00:00:00 grep php-fpm

[root@wangmingxin yum.repos.d]# lsof -i:9000     //默認9000端口提供服務

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

php-fpm 4961 root    7u  IPv4 123027      0t0  TCP localhost:cslistener (LISTEN)

php-fpm 4962  www    0u  IPv4 123027      0t0  TCP localhost:cslistener (LISTEN)

php-fpm 4963  www    0u  IPv4 123027      0t0  TCP localhost:cslistener (LISTEN)

#配置Nginx支持PHP程序請求訪問

修改配置文件

[root@wangmingxin etc]# cd /usr/local/nginx/conf/

[root@wangmingxin conf]# cp nginx.conf nginx.conf.02

[root@wangmingxin conf]# vim nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {

        listen       80;

        server_name  blog.yunjisuan.com;

        location / {

            root   html/blog;

            index  index.html index.htm;

        }

        location ~ .*\.(php|php5)?$ {

                root html/blog;

                fastcgi_pass 127.0.0.1:9000;

                fastcgi_index index.php;

                include fastcgi.conf;

        }

    }

}

檢查並啓動Nginx

[root@wangmingxin conf]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

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

##此步在生產環境很關鍵,如不提早檢查語法,重啓後發現語法錯誤會致使Nginx沒法提供服務,,給用戶訪問體驗帶來很差的影響。

測試LNMP環境生效狀況

測試PHP解析的請求是否OK

[root@wangmingxin conf]# cd /usr/local/nginx/html/

[root@wangmingxin html]# mkdir blog

[root@wangmingxin html]# cd blog/     //進入指定的默認站點目錄後,編輯index.php

[root@wangmingxin blog]# echo "<?php phpinfo(); ?>" >yunjisuan.php



調整Windows下的host解析:本地IP 域名blog.yunjisuan.com

打開瀏覽器,輸入http://blog.yunjisuan.com/test_info.php 便可打開以下圖所示界面:

 

代表: 出現上述界面,表示Nginx配合PHP解析已經正常。



針對Nginx請求訪問PHP,而後對PHP鏈接mysql的狀況進行測試

[root@wangmingxin php-5.3.28]# cd /usr/local/nginx/html/

[root@wangmingxin html]# cd blog/

[root@wangmingxin blog]# vim test_info.php     //編輯test_mysql.php

<?php

        $link_id=mysql_connect('localhost','root','666666');

    if($link_id){

        echo "mysql successful by juAnne !";

    }else{

        echo mysql_error();

    }

?>

 

 

至此,LNMP的組合已基本搭建完畢。固然,咱們尚未作相關優化

4 部署一個blog程序服務

 開源博客程序WordPress介紹

WordPress 是一套利用PHP語言和MySQL數據庫開發的開源免費的blog(博客,網站)程序,用戶能夠在支持PHP環境和MySQL數據庫的服務器上創建blog站點。它的功能很是強大,擁有衆多插件,易於擴充功能。其安裝和使用也都很是方便。目前WordPress已經成爲搭建blog平臺的主流,不少發佈平臺都是根據WordPress二次開發的,若是你也想像他們同樣擁有本身的blog,可購買網上的域名及空間,而後搭建LNMP環境,部署WordPress程序後就能夠輕鬆成就本身的夢想了。

MySQL數據庫配置準備

[root@localhost ~]# mysql -uroot -p666666     //登錄MySQL數據庫

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 11

Server version: 5.5.32 MySQL Community Server (GPL)

 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> create database wordpress;     #建立一個數據庫,名字爲wordpress,用於存放blog數據

Query OK, 1 row affected (0.27 sec)

 

mysql> show databases like 'wordpress';     #查看

+----------------------+

| Database (wordpress) |

+----------------------+

| wordpress            |

+----------------------+

1 row in set (0.37 sec)

 

mysql> grant all on wordpress.* to wordpress@'localhost' identified by '666666';

Query OK, 0 rows affected (0.33 sec)

 

mysql> flush privileges;     #刷新權限,使得建立用戶生效

Query OK, 0 rows affected (0.28 sec)

 

mysql> show grants for wordpress@'localhost';     #查看用戶對應權限

+------------------------------------------------------------------------------------------------------------------+

| Grants for wordpress@localhost                                                                                   |

+------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'wordpress'@'localhost' IDENTIFIED BY PASSWORD '*B2B366CA5C4697F31D4C55D61F0B17E70E5664EC' |

| GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wordpress'@'localhost'                                                 |

+------------------------------------------------------------------------------------------------------------------+

2 rows in set (0.06 sec)

 

mysql> select user,host from mysql.user;     #查看數據庫裏建立的wordpress用戶

+-----------+----------------+

| user      | host           |

+-----------+----------------+

| root      | 127.0.0.1      |

| root      | ::1            |

|           | localhost      |

| root      | localhost      |

| wordpress | localhost      |             #只容許本機經過wordpress用戶訪問數據庫

|           | zhangminagjuan |

| root      | zhangminagjuan |

+-----------+----------------+

7 rows in set (0.12 sec)

 

mysql> quit

Bye

 



# NginxPHP環境配置準備

選擇以前配置好的支持LNMP的blog域名對應的虛擬主機,命令以下:

[root@localhost ~]# cd /usr/local/nginx/conf

[root@localhost conf]# vim nginx.conf

 server {

        listen       80;

        server_name  blog.yunjisuan.com;

        location / {

            root   html/blog;

            index  index.php index.html index.htm;     #補充一個首頁文件index.php

        }

        location ~ .*\.(php|php5)?$ {

                root html/blog;

                fastcgi_pass 127.0.0.1:9000;

                fastcgi_index index.php;

                include fastcgi.conf;

                }

        }

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

獲取WordPress博客程序,並放置到blog域名對應虛擬主機的站點目錄下,即/usr/local/nginx/html/blog,操做命令以下:

[root@wangmingxin blog]# cd

[root@wangmingxin ~]# cd /usr/local/nginx/html/blog/

[root@wangmingxin blog]# ls      #瀏覽www.wordpress.org下載博客程序

test_info.php  test_mysql.php  wordpress-4.7.4-zh_CN.tar.gz

[root@wangmingxin blog]# tar xf wordpress-4.7.4-zh_CN.tar.gz     #解壓

[root@wangmingxin blog]# ls

test_info.php  test_mysql.php  wordpress  wordpress-4.7.4-zh_CN.tar.gz

[root@wangmingxin blog]# rm -f test_info.php  test_mysql.php     #刪除無用文件

[root@wangmingxin blog]# ls

wordpress  wordpress-4.7.4-zh_CN.tar.gz

[root@wangmingxin blog]# mv wordpress/* .     #把目錄裏的內容移動到blogcom根目錄下

[root@wangmingxin blog]# /bin/mv wordpress-4.7.4-zh_CN.tar.gz /root/     #移走源程序

[root@wangmingxin blog]# ls -l     #完整的blog程序內容

total 192

-rw-r--r--  1 nobody 65534   418 Sep 25  2013 index.php

-rw-r--r--  1 nobody 65534 19935 Jan  3  2017 license.txt

-rw-r--r--  1 nobody 65534  6956 Apr 23  2017 readme.html

drwxr-xr-x  2 nobody 65534  4096 Nov 28 01:08 wordpress

-rw-r--r--  1 nobody 65534  5447 Sep 28  2016 wp-activate.php

drwxr-xr-x  9 nobody 65534  4096 Apr 23  2017 wp-admin

-rw-r--r--  1 nobody 65534   364 Dec 19  2015 wp-blog-header.php

-rw-r--r--  1 nobody 65534  1627 Aug 29  2016 wp-comments-post.php

-rw-r--r--  1 nobody 65534  2930 Apr 23  2017 wp-config-sample.php

drwxr-xr-x  5 nobody 65534  4096 Apr 23  2017 wp-content

-rw-r--r--  1 nobody 65534  3286 May 25  2015 wp-cron.php

drwxr-xr-x 18 nobody 65534 12288 Apr 23  2017 wp-includes

-rw-r--r--  1 nobody 65534  2422 Nov 21  2016 wp-links-opml.php

-rw-r--r--  1 nobody 65534  3301 Oct 25  2016 wp-load.php

-rw-r--r--  1 nobody 65534 33939 Nov 21  2016 wp-login.php

-rw-r--r--  1 nobody 65534  8048 Jan 11  2017 wp-mail.php

-rw-r--r--  1 nobody 65534 16255 Apr  7  2017 wp-settings.php

-rw-r--r--  1 nobody 65534 29896 Oct 19  2016 wp-signup.php

-rw-r--r--  1 nobody 65534  4513 Oct 15  2016 wp-trackback.php

-rw-r--r--  1 nobody 65534  3065 Sep  1  2016 xmlrpc.php

[root@wangmingxin blog]# chown -R www.www /usr/local/nginx/html/blog/     #受權用戶訪問

[root@wangmingxin blog]# ls -l     #最終博客目錄和權限

total 192

-rw-r--r--  1 www www   418 Sep 25  2013 index.php

-rw-r--r--  1 www www 19935 Jan  3  2017 license.txt

-rw-r--r--  1 www www  6956 Apr 23  2017 readme.html

drwxr-xr-x  2 www www  4096 Nov 28 01:08 wordpress

-rw-r--r--  1 www www  5447 Sep 28  2016 wp-activate.php

drwxr-xr-x  9 www www  4096 Apr 23  2017 wp-admin

-rw-r--r--  1 www www   364 Dec 19  2015 wp-blog-header.php

-rw-r--r--  1 www www  1627 Aug 29  2016 wp-comments-post.php

-rw-r--r--  1 www www  2930 Apr 23  2017 wp-config-sample.php

drwxr-xr-x  5 www www  4096 Apr 23  2017 wp-content

-rw-r--r--  1 www www  3286 May 25  2015 wp-cron.php

drwxr-xr-x 18 www www 12288 Apr 23  2017 wp-includes

-rw-r--r--  1 www www  2422 Nov 21  2016 wp-links-opml.php

-rw-r--r--  1 www www  3301 Oct 25  2016 wp-load.php

-rw-r--r--  1 www www 33939 Nov 21  2016 wp-login.php

-rw-r--r--  1 www www  8048 Jan 11  2017 wp-mail.php

-rw-r--r--  1 www www 16255 Apr  7  2017 wp-settings.php

-rw-r--r--  1 www www 29896 Oct 19  2016 wp-signup.php

-rw-r--r--  1 www www  4513 Oct 15  2016 wp-trackback.php

-rw-r--r--  1 www www  3065 Sep  1  2016 xmlrpc.php

 

(3)開始安裝blog博客程序

打開瀏覽器輸入blog.yunjisuan.com(提早作好hosts或DNS解析),回車後,出現下圖:

 

仔細閱讀頁面的文字信息後,單擊「如今就開始」按鈕繼續,而後在出現的頁面表單上填寫相應的內容,以下圖所示:

 

 

 

 

 

 

 

 

 

相關文章
相關標籤/搜索