LNMP環境搭建(CentOS7+Nginx1.10.1+MySQL5.6.31+PHP5.6.22)
零、準備工作
安裝wget:yum install wget -y
安裝gcc及g++:yum install gcc gcc-c++ -y
後續所有源代碼都下載到/usr/local/src目錄
防火墻更改配置及關閉selinux見另一篇文章《LAMP環境搭建》
一、安裝Nginx
Nginx依賴pcre(重寫rewrite)、zlib(網頁gzip壓縮)及openssl(加密傳輸)。
1、安裝pcre
[root]wget http://pilotfiber.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz
[root]tar -xvzf pcre-8.38.tar.gz
[root]cd pcre-8.38
[root] ./configure --prefix=/usr/local/pcre
[root]make && make install
2、安裝zlib
[root]wget http://zlib.net/zlib-1.2.8.tar.gz
[root]tar -xvzf zlib-1.2.8.tar.gz
[root]cd zlib-1.2.8
[root] ./configure --prefix=/usr/local/zlib
[root]make && make install
3、安裝openssl
[root]wget http://www.openssl.org/source/openssl-1.0.2h.tar.gz
[root]tar -xvzf openssl-1.0.2h.tar.gz
[root]cd openssl-1.0.2h
[root] ./config --prefix=/usr/local/openssl
[root]make && make install
4、安裝Nginx
為了安全起見,創建一個nginx賬號專門用於運行nginx,當然為了簡便直接用root賬號運行的話(不推薦),就不需要創建nginx賬號及將nginx相關文件開放權限給nginx賬號。
[root]groupadd nginx
[root]useradd -g nginx nginx -s /bin/false#該賬號只用於運行nginx及相關軟件,不能登錄
[root]wget http://nginx.org/download/nginx-1.10.1.tar.gz?
[root]tar -xvzf nginx-1.10.1.tar.gz?
[root]cd nginx-1.10.1
[root] ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.38 --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.2h
[root]make && make install
提示:./configure --help可以查看編譯選項
註意這裏:
http_image_filter_module是nginx提供的集成圖片處理模塊,需要gd-devel的支持,錯誤信息如下:
./configure: error: the HTTP image filter module requires the GD library.
You can either do not enable the module or install the libraries.
- 1
- 2
解決方法:
yum -y install gd-devel
5、配置Nginx
1)修改配置文件
[root]vi /usr/local/nginx/conf/nginx.conf
若需要,則將http -> server -> server_name改為服務器的外網ip地址,或你的網站域名?
2)配置開機自啟動
方法一:在/etc/rc.d/rc.local文件最後增加一行腳本
[root]/usr/local/nginx/sbin/nginx
方法二:將Nginx加入服務,新增/etc/init.d/nginx腳本,內容請見nginx腳本,然後設置開機自啟動:
[root]chmod +x /etc/init.d/nginx
[root]chkconfig nginx on #設置開啟自啟動後會自動將其加入服務
3)啟動Nginx
若Nginx已加入服務,則用service命令啟動服務
[root]service nginx start
否則運行Nginx程序
[root]/usr/local/nginx/sbin/nginx
二、安裝MySQL
1、安裝ncurses-devel
[root]yum install ncurses-devel -y
2、安裝cmake
[root]wget https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
[root]tar -xvzf cmake-3.5.2.tar.gz
[root]cd cmake-3.5.2
[root] ./configure --prefix=/usr/local/cmake
[root]make && make install
[root]export PATH=$PATH:/usr/local/cmake/bin#臨時加入PATH環境變量
3、安裝mysql
同nginx一樣,創建一個mysql賬號專門用於運行mysql
[root]groupadd mysql
[root]useradd -g mysql mysql -s /sbin/false
[root]wget http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.31.tar.gz
[root]tar -xvzf mysql-5.6.31.tar.gz
[root]cd mysql-5.6.31
[root]cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \#mysql安裝到的路徑
-DSYSCONFDIR=/etc \ #mysql配置文件(my.cnf)路徑
-DMYSQL_DATADIR=/usr/local/mysql/data \ #data目錄路徑
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \ #sock存放路徑
-DDEFAULT_CHARSET=utf8 \ #默認字符集
-DDEFAULT_COLLATION=utf8_general_ci#默認字符集校驗
[root]make && make install
4、配置mysql
以下所有操作都在/usr/local/mysql路徑下執行。
1)初始化數據庫
[root]scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data
2)拷貝配置文件
[root]cp support-files/my-default.cnf /etc/my.cnf
3)啟動mysql
[root]cp support-files/mysql.server /etc/init.d/mysqld#服務名也可以取做mysql,隨你
[root]chkconfig mysqld on
[root]service mysqld start
4)修改mysql的root賬號密碼
[root]bin/mysql_secure_installation
然後設置密碼,並進行一些配置
5)登錄mysql
[root]mysql -uroot -p
然後輸入密碼登錄。若運氣不好的話(比如我),輸入密碼登錄,裏面關閉,並輸出segment fault提示,那麽就需要修改源代碼並重新編譯安裝了。打開/usr/local/src/php.5.6.31/cmd-line-utils/libedit/terminal.c,在terminal_set函數中:
a、註釋char buf[TC_BUFSIZE];一行
b、將area = buf改成area = NULL
然後重新編譯安裝。
三、安裝php
本文最小安裝php。
1、安裝php
[root]wget http://cn2.php.net/distributions/php-5.6.22.tar.bz2
[root]tar -xvjf php-5.6.22.tar.bz2
[root]cd php-5.6.22
[root] ./configure --prefix=/usr/local/php \ #php安裝路徑
--with-libdir=lib64 \ #64位操作系統需要
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-mysql_sock=/var/lib/mysql/mysql.sock \
--enable-fpm \
--enable-opcache \
--with-mhash \
--with-ldap#本人的項目用到,需yum install openldap-devel
[root]make && make install
2、配置php
以下命令都是在/usr/local/php路徑下執行。
1)查看php.ini文件存放路徑
[root]bin/php --ini
Configuration File (php.ini) Path: /usr/local/php/lib
[root]cp /usr/local/src/php-5.6.22/php.ini-production lib/php.ini
2)配置php.ini
a.關閉在http頭中顯示php版本信息?
? expose_php = Off
b. 設置時區
date.timezone = PRC?
3、配置php-fpm
以下命令都是在/usr/local/php路徑下執行。
[root]cp etc/php-fpm.conf.default etc/php-fpm.conf
1)去掉25行 ;pid = run/php-fpm.pid 前面的分號,使之生效
2)第148行改為 user = nginx 設置php-fpm運行賬號為nginx
3)第149行改為 group = nginx #設置php-fpm運行組為nginx
4)可選。php-fpm默認采用tcp通信,若需要采用unix socket通訊,則配置如下
listen = /dev/shm/php-fpm.sock?
listen.owner = nginx?
listen.group = nginx
4、啟動php-fpm
[root]cp /usr/local/src/php-5.6.22/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root]chmod +x /etc/init.d/php-fpm
[root]chkconfig php-fpm on
[root]service php-fpm start
5、配置nginx支持php
[root]vi /usr/local/nginx/conf/nginx.conf
1)頂部行改成 user nginx nginx;
2)將
location ?/ {
root html;
index index.html index.htm
}?
改為:
?location ?/ {
root /www;
index index.php index.html index.htm
}??
註:需要將web根目錄/www開放權限給nginx賬號:chown nginx:nginx /www
3)取消location ~ \.php$ { 一段的註釋,如下:
location ~ \.php$ {
root /www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
這是php-fpm采用tcp通信時的配置,若其采用unix socket通信,則fastcgi_pass一行需該為:
fastcgi_pass unix:/dev/shm/php-fpm.sock;
6、配置php支持mysql
其實到這一步,php已經支持mysqli及pdo_mysql了(由於mysql_connect等函數已經廢棄,所以在編譯php時沒有--with-mysql)。但是用mysqli_connect連接本機時,只能使用‘127.0.0.1‘,而不能使用‘localhost‘來連接,原因是:mysql通過tcp連接到127.0.0.1,通過unix socket連接到localhost。只要在php.ini設置mysqli及pdo_mysql的default_socket為/var/lib/mysql/mysql.sock即可。貌似在編譯php時帶上--with-mysql-sock=/var/lib/mysql/mysql.sock選項就不用配置php.ini中的default_socket了。
7、重啟php-fpm及nginx
[root]service php-fpm restart
[root]service nginx restart
8、測試nginx對php的支持
新建/www/info.php文件,內容如下:
<?php phpinfo(); ?>
在瀏覽器中查看:localhost/info.php
9、測試對mysqli及pdo_mysql的支持
新建/www/mysql.php文件,測試mysqli時內容為:
<?php var_dump(mysqli_connect(‘localhost‘, ‘root‘, ‘111111‘)); ?>
測試pdo_mysql時內容為:
<?php var_dump(new PDO(‘mysql:host=localhost;db=mysql‘, ‘root‘, ‘111111‘)); ?>
上面的root和111111為mysql賬號和密碼。
分別在瀏覽器中查看:localhost/mysql.php,正常時,顯示內容分別含”object(mysqli)“和”object(PDO)“。
LNMP環境搭建(CentOS7+Nginx1.10.1+MySQL5.6.31+PHP5.6.22)