在平時運維工作中,經常需要用到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;
}
}
|