LNMP環境搭建
linux + Nginx + MySQL + php
PHP是一種腳本語言,當前中國乃至世界上使用PHP語言開發的網站非常普遍
Nginx是一個web服務軟件,和apache是一類軟件,目前使用nginx的企業越來越多。
MySQL是當前最為流行的小型關系型數據庫
和LAMP不同的是LNMP中的N指的是Nginx(類似于Apache的一種web服務軟件)其他都一樣。目前這種環境應用的也是非常之多。Nginx設計的初衷是提供一種快速高效多并發的web服務軟件。在靜態頁面的處理上Nginx的確勝Apache一籌,然而在動態頁面的處理上Nginx并不比Apache有多少優勢。但是,目前還是有很多愛好者對Nginx比較熱衷,隨著Nginx的技術逐漸成熟,它在web服務軟件領域的地位越來越高。
安裝MySQL
步驟和LAMP中的mysql安裝步驟是一模一樣的。
1,下載mysql到/usr/local/src/
[root@CentOS100src]#wget http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz
這是64位的包,32位系統要用32位的包:
http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icciglibc23.tar.gz
2, 解壓下載的包
[root@CentOS100 src]# tar -xvzf mysql-5.1.40-linux-x86_64-icc-glibc23.tar.gz
3,把解壓的包移動到/usr/local/并改名為mysql
[root@CentOS100 src]# mv mysql-5.1.40-linux-x86_64-icc-glibc23 /usr/local/mysql
4,建立mysql用戶
[root@CentOS100 src]# useradd -s /sbin/nologin mysql
5,建立mysql數據庫文件夾,并修改所屬主和所屬組
[root@CentOS100 mysql]# mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql
6,初始化數據庫
[root@CentOS101 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
./scripts/mysql_install_db 這個文件是數據庫文件夾里的文件,--user 定義數據庫的所屬主, --datadir 定義數據庫安裝到哪里,建議放到大空間的分區上,這個目錄需要自行創建,執行后如果看到兩個 “OK” 說明執行正確。出問題可根據問題來解決(最后附問題解決辦法?。?/p>
7, 拷貝配置文件
[root@CentOS101 mysql]# cp support-files/my-large.cnf /etc/my.cnf
8, 拷貝啟動腳本文件并修改其屬性
[root@CentOS101 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@CentOS101 mysql]# chmod 755 /etc/init.d/mysqld
9, 修改啟動腳本
[root@CentOS101 mysql]# vim /etc/init.d/mysqld
需要修改的地方有 “datadir=/data/mysql” (前面初始化數據庫時定義的目錄)
把啟動腳本加入系統服務項,并設定開機啟動,啟動mysql
[root@CentOS101 mysql]# chkconfig --add mysqld
[root@CentOS101 mysql]# chkconfig mysqld on
[root@CentOS101 mysql]# service mysqld start
如果啟動不了,到 /data/mysql/ 下查看錯誤日志,這個日志通常是主機名.err. 檢查mysql是否啟動的命令為:
[root@CentOS101 mysql]# ps aux |grep mysqld
安裝php
這里要先聲明一下,針對Nginx的php安裝和針對apache的php安裝是有區別的,因為Nginx中的php是以fastcgi的方式結合nginx的,可以理解為nginx代理了php的fastcgi,而apache是把php作為自己的模塊來調用的。在LNMP中,安裝PHP之前必需先安裝mysql,其它的沒有先后順序。php官方下載地址: http://www.php.net/downloads.php
1.下載php
[root@CentOS5 src]# wget http://am1.php.net/distributions/php-5.3.27.tar.gz
2.解壓php
[root@CentOS5 src]# tar -xvzf php-5.3.27.tar.gz
3.創建相關賬戶
[root@localhost src]# useradd -s /sbin/nologin php-fpm
4.配置編譯參數
[root@localhost src]# cd php-5.3.27
[root@localhost php-5.3.27]# make clean
此命令為了清除之前安裝PHP時生成的一些文件,避免與之前的編譯混淆。
[root@localhost php-5.3.27]# ./configure --PRefix=/usr/local/php_nginx --with-config-file-path=/usr/local/php_nginx/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --enable-zend-multibyte --disable-ipv6 --with-pear --with-curl --with-openssl
配置參數里和之前的有些不同,--enable-fpm必需加上,不加無法生成fpm文件。--with-config-file-path是指定php配置文件的路徑,即php.ini的路徑。
錯誤信息:
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
解決辦法:
yum install -y libcurl-devel
5.編譯php
[root@localhost php-5.3.27]# make
在這一步,通常會遇到一些錯誤
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [sapi/fpm/php-fpm] 錯誤 1
解決辦法:
yum install -y libtool-ltdl-devel
6.安裝php
[root@localhost php-5.3.27]# make install
以上每一個步驟,如果沒有完全執行正確,那么下一步是無法進行的,是否還記得判斷執行是否正確的方法? 使用 echo $? 看結果是否為 “0” , 如果不是,就是沒有執行正確。
7.拷貝配置文件
[root@localhost php-5.3.27]# cp php.ini-production /usr/local/php_nginx/etc/php.ini
[root@localhost php-5.3.27]# cp sapi/fpm/php-fpm.conf /usr/local/php_nginx/etc/
保存配置文件后,檢驗配置是否正確的方法為:
/usr/local/php_nginx/sbin/php-fpm -t
如果出現諸如 “test is successful” 字樣,說明配置沒有問題。
8.啟動php-fpm
先拷貝啟動文件 cp /usr/local/src/php-5.3.27/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
service php-fpm start
如果想讓它開機啟動,執行:
chkconfig php-fpm on
檢測是否啟動:
ps aux |grep php-fpm
netstat -lnp | grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 11265/php-fpm
安裝nginx
Nginx官方網站(http://nginx.org), 從官方網站可以看到nginx更新速度很快,這也反映了一個事實,目前使用nginx跑網站的公司或者個人越來越多。
(近期nginx報出一個安全漏洞,影響版本很廣 CVE-2013-4547,所以之前的老版本都需要升級一下, 1.4.4, 1.5.7以及往后版本沒有問題)
1.下載nginx
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.6.2.tar.gz
2.解壓nginx
tar -xvzf nginx-1.6.2.tar.gz
3.配置編譯參數
cd nginx-1.4.4
./configure --prefix=/usr/local/nginx --with-pcre
編輯過程中出錯:
checking for PCRE library ... not found
checking for PCRE library in /usr/local/ ... not found
checking for PCRE library in /usr/include/pcre/ ... not found
checking for PCRE library in /usr/pkg/ ... not found
checking for PCRE library in /opt/local/ ... not found
缺少pcre ,pcre用來支持正則表達式,解決方法:
yum install -y pcre-devel
4.編譯nginx
make
5.安裝nginx
make install
因為nginx比較小,所以很快就會安裝完,而且也不會出什么錯誤。
6. 啟動nginx,nginx很小巧,本身沒有啟動服務文件。
/usr/local/nginx/sbin/nginx
查看:ps aux | grep nginx
netstat -lnp | grep nginx
測試:從瀏覽器直接訪問本機IP
7.更改nginx配置
配置文件位置:/usr/local/nginx/conf/nginx.conf
vim /usr/local/nginx/conf/nginx.conf
修改:
events {
worker_connections 4096;
}
這個值一般調成很大的數。
“server { }”相關配置就是虛擬主機,server里面的“location”需要改:
location / {
root /web/123;
index index.html index.htm index.php;
}
root指定虛擬主機的目錄,這里換成LAMP時安裝的discuz的目錄。把下面location和php相關的內容打開,并修改:
location ~ /.php$ {
root /web/123;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /web/123$fastcgi_script_name;
include fastcgi_params;
保存配置后,先檢驗一下配置文件是否有錯誤存在:
/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
重新加載nginx:
/usr/local/nginx/sbin/nginx -s reload
如果不能啟動,請查看 “/usr/local/nginx/logs/error.log” 文件
新聞熱點
疑難解答