LNMP環境搭建

在平時運維工做中,常常須要用到LNMP應用框架。
如下對LNMP環境部署記錄下:php

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-develhtml

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"mysql

咱們再配置下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/nginxnginx

----------------------------------順便說下: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.rpmc++

2)使用下面命令安裝nginx
# yum install nginxsql

3)啓動Nginx
# service nginx start

# systemctl start nginx.service
---------------------------------------------------------------------------------------------------------shell

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/datavim

-------------------------------------------------------------------------------------------------------------------------------------
注意: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鏈接的端口,默認是3306centos

如若要編譯進其它功能,如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;
         }
 
         }
相關文章
相關標籤/搜索