centos6.8下安裝部署LNMP-(nginx1.8.0+php5.6.10+mysql5.6.12)

zting科技發表於2017-11-08

在平時運維工作中,經常需要用到LNMP應用框架。

以下對LNMP環境部署記錄下:

1)前期準備:為了安裝順利,建議先使用yum安裝依賴庫

[root@opd ~]#yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt libmcrypt-devel pcre-devel openssl-devel freetype-devel libcurl-devel

2)安裝nginx

[root@opd ~]#cd /opt/src

[root@src ~]#wget http://nginx.org/download/nginx-1.8.0.tar.gz

[root@src ~]#tar -zxvf nginx-1.8.0.tar.gz

[root@src ~]#cd nginx-1.8.0
新增www使用者,其中-M參數列示不新增使用者家目錄,-s參數列示指定shell型別
[root@nginx-1.8.0 ~]#useradd www -M -s /sbin/nologin
[root@nginx-1.8.0 ~]#vim auto/cc/gcc
將這句註釋掉取消Debug編譯模式 大概在179行
#CFLAGS=”$CFLAGS -g”

我們再配置下nginx編譯引數
[root@nginx-1.8.0 ~]#./configure –prefix=/opt/nginx –user=www –group=www –with-http_stub_status_module –with-http_ssl_module
[root@nginx-1.8.0 ~]#make
[root@nginx-1.8.0 ~]#make install clean
新增開機自啟動
[root@nginx-1.8.0 ~]#vim /etc/rc.local
在這個檔案裡面新增:/opt/nginx/sbin/nginx
[root@nginx-1.8.0 ~]#/opt/nginx/sbin/nginx

———————————-順便說下:Centos7採用yum方式安裝nginx———————————–

centos7系統庫中預設是沒有nginx的rpm包的,所以我們自己需要先更新下rpm依賴庫

1)使用yum安裝nginx需要包括Nginx的庫,安裝Nginx的庫

# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2)使用下面命令安裝nginx

# yum install nginx

3)啟動Nginx

# service nginx start



# systemctl start nginx.service
———————————————————————————————————

3)安裝PHP

由於PHP需要這些類庫的支撐

先下載PHP

[root@opd ~]#cd /opt/src/

[root@src ~]#wget http://cn2.php.net/distributions/php-5.6.10.tar.gz

[root@src ~]#tar -zxvf php-5.6.10.tar.gz

[root@src ~]#cd php-5.6.10

我們先配置下PHP的編譯引數

[root@php-5.6.10 ~]#./configure –prefix=/opt/php –with-mysql –with-mysqli –with-iconv-dir –with-zlib –with-libxml-dir –enable-xml –with-curl –enable-fpm –enable-mbstring –with-gd –with-openssl –with-mhash –enable-sockets –with-xmlrpc –enable-zip –enable-soap –with-libdir=/usr/lib64 –with-jpeg-dir=/usr/lib64 –with-freetype-dir=/usr/lib64 –with-png-dir=/usr/lib64

[root@php-5.6.10 ~]#make

[root@php-5.6.10 ~]#make install clean

複製php.ini

[root@php-5.6.10 ~]#cp php.ini-development /opt/php/lib/php.ini

[root@php-5.6.10 ~]#cd /opt/php/etc/

[root@php-5.6.10 ~]#cp php-fpm.conf.default php-fpm.conf        //在php-fpm.conf檔案中可以定義php的服務埠、程式啟動的使用者和組許可權(最好和nginx服務啟動許可權一直)等。

使用PHP-FPM管理指令碼,在編譯包裡面已經配置好了,只需要複製到/etc/init.d/中即可

[root@php-5.6.10 ~]#cd /opt/src/php-5.6.10/sapi/fpm/

[root@php-5.6.10 ~]#cp init.d.php-fpm /etc/init.d/php-fpm

[root@php-5.6.10 ~]#chmod +x /etc/init.d/php-fpm

啟動php-fpm

[root@php-5.6.10 ~]#service php-fpm start

加入開機啟動策略

[root@php-5.6.10 ~]#chkconfig –add php-fpm

[root@php-5.6.10 ~]#chkconfig php-fpm on

4)安裝MySQL (可參考:centos 6x系統下原始碼安裝mysql操作記錄

MySQL5.7.x以上的版本不支援本安裝新增了boost引擎,後續我會更新……

先下載MySQL

[root@opd ~]#cd /opt/src/

[root@src ~]#wget http://cdn.mysql.com//archives/mysql-5.6/mysql-5.6.21.tar.gz

[root@src ~]#tar -zxvf mysql-5.6.12.tar.gz

[root@src ~]#cd mysql-5.6.12

我們先配置下MySQL的編譯引數 一般我們就配置下安裝路徑就可以了 如你有特殊配置也可以在安裝之後修改引數也可以的

[root@mysql-5.6.12 ~]#cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DCOMPILATION_COMMENT=`production environment` -DWITH_READLINE=ON -DSYSCONFDIR=/opt/mysql -DMYSQL_UNIX_ADDR=/opt/mysql/mysql.sock -DMYSQL_DATADIR=/opt/data

————————————————————————————————————————————-

注意:mysql5.5以上的編譯就用cmake了,而不是使用./configure了。

cmake編譯的優化引數說明如下:
————————————-
-DCMAKE_INSTALL_PREFIX=dir_name       安裝的主目錄
-DDEFAULT_CHARSET          字符集,預設字符集是latin1

-DDEFAULT_COLLATION=collation_name       服務校對,預設的是latin1_swedish_ci,可以通過SHOW COLLATION語句檢視哪個校對匹配的字符集

-DENABLED_LOCAL_INFILE       是否開啟LOAD DATA INFILE的LOCAL引數

-DWITH_INNOBASE_STORAGE_ENGINE=1       將INNODB儲存引擎編譯進去

-DWITHOUT_FEDERATED_STORAGE_ENGINE=1       將FEDERATED儲存引擎編譯進去

-DWITH_BLACKHOLE_STORAGE_ENGINE=1       將BLACKHOLE儲存引擎編譯進去

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1      不編譯EXAMPLE儲存引擎

-DWITH_PARTITION_STORAGE_ENGINE=1          將分割槽儲存引擎編譯進去

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1       將Performance Schema(效能檢視)儲存引擎編譯進去

-DCOMPILATION_COMMENT=string       編譯環境描述

-DWITH_READLINE=bool       是否使用readline庫
-DSYSCONFDIR=dir_name my.cnf       引數檔案的路徑

-DMYSQL_UNIX_ADDR=file_name Unix socket        檔案的路徑,socket檔案用於伺服器監聽連線,這個引數必須是絕對路徑

-DENABLED_PROFILING=bool       是否開啟profiling程式碼的查詢(用於SHOW PROFILE and SHOW PROFILES語句)
-DMYSQL_DATADIR=dir_name MySQL       檔案目錄的路徑,這個引數也可以在啟動MySQL的時候帶上–datadir引數進行設定

-DWITH_EXTRA_CHARSETS=name       指定額外的字符集,預設是all,包含所有的字符集。

-DINSTALL_BINDIR=dir_name      安裝使用者程式的路徑,預設路徑是DCMAKE_INSTALL_PREFIX/bin

-DINSTALL_DOCDIR=dir_name      安裝文件的路徑,預設路徑是DCMAKE_INSTALL_PREFIX/doc

-DINSTALL_INCLUDEDIR=dir_name      安裝標頭檔案的路徑,預設路徑是DCMAKE_INSTALL_PREFIX/include

-DINSTALL_LIBDIR=dir_name       安裝庫檔案的路徑,預設路徑是DCMAKE_INSTALL_PREFIX/lib

-DINSTALL_MANDIR=dir_name      安裝幫助手冊的路徑,預設路徑是DCMAKE_INSTALL_PREFIX/man

-DINSTALL_PLUGINDIR=dir_name      安裝外掛的路徑,預設路徑是DCMAKE_INSTALL_PREFIX/lib/plugin

-DINSTALL_SBINDIR=dir_name      安裝mysqld服務端啟動指令碼的路徑,預設路徑是DCMAKE_INSTALL_PREFIX/bin

-DINSTALL_SCRIPTDIR=dir_name      初始化MySQL資料庫的資料檔案路徑的mysql_install_db指令碼路徑,預設路徑是DCMAKE_INSTALL_PREFIX/scripts

-DINSTALL_SQLBENCHDIR=dir_name      安裝sql-bench的路徑,預設路徑是DCMAKE_INSTALL_PREFIX

-DINSTALL_SUPPORTFILESDIR=dir_name      安裝支援檔案的路徑,預設路徑是DCMAKE_INSTALL_PREFIX/support-files

-DMYSQL_TCP_PORT=port_num     伺服器監聽TCP/IP連線的埠,預設是3306

如若要編譯進其它功能,如SSL等,則可使用類似如下選項來實現編譯時使用某庫或不使用某庫:

-DWITH_READLINE=1

-DWITH_SSL=system

-DWITH_ZLIB=system

-DWITH_LIBWRAP=0
————————————————————————————————————————————-

編譯需要較長的時間

[root@mysql-5.6.12 ~]#make

[root@mysql-5.6.12 ~]#make install clean

新增mysql使用者,設定mysql目錄許可權

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

[root@mysql-5.6.12 ~]# chown -R mysql:mysql /opt/mysql 

[root@mysql-5.6.12 ~]# chown -R mysql:mysql /opt/data

安裝資料庫

[root@mysql-5.6.12 ~]# cd /opt/mysql/scripts

[root@scripts ~]#./mysql_install_db –user=mysql –basedir=/opt/mysql –datadir=/opt/mysql/data 

[root@scripts ~]#cd /opt/mysql/support-files

複製mysql管理指令碼

[root@support-files ~]#cp mysql.server /etc/rc.d/init.d/mysql

複製mysql配置檔案

[root@support-files ~]#cp my-default.cnf /etc/my.cnf

新增mysql服務

[root@support-files ~]#chkconfig –add mysql

加入開機啟動策略

[root@support-files ~]#chkconfig mysql on

[root@support-files ~]#service mysql start

4)nginx+php配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
server {
        listen       80;
        server_name  www.wangshibo.com;
 
        #charset koi8-r;
 
        access_log  /Data/logs/nginx/www.wangshibo.com/access.log main;
        error_log  /Data/logs/nginx/www.wangshibo.com/error.log;
 
        ## maintence
        if ($remote_addr !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {             //nginx訪問的白名單限制
          rewrite ^.*$ /maintence.php last;
        }
 
        location / {
            root   /var/www/vhosts/www.wangshibo.com/main;
        try_files $uri $uri/ @router;
            index  index.php;
        }
 
        location /nginx_status {
           stub_status on;
           access_log off;
        }
 
 
        #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   html;
        }
     
        location @router {
        rewrite ^.*$ /index.php last;
        }
 
        location ~ .php$ {
            root       /var/www/vhosts/www.wangshibo.com/main;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_read_timeout 30;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;               //這一行最好將/scripts換成$document_root,否則可能出現白麵
            #include        fastcgi_params;
            include        fastcgi.conf;
        }
     
        location ~ ^/(status|ping)$
        {
           include fastcgi_params;
           fastcgi_pass 127.0.0.1:9000;
           fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        }
 
        }
***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************
本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5761338.html,如需轉載請自行聯絡原作者


相關文章