LNMP是指Linux+Ngnix+Mysql+Php的組合。以下分別進行介紹:
首先來介紹一下Nginx.Nginx是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。Nginx不僅可以作爲web服務器,也可以作爲負載均衡器。
MySQL是一款開源免費的數據軟件,MySQL是一個小型關係型數據庫管理系統,其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站爲了降低網站總體擁有成本而選擇了MySQL作爲網站數據庫.
PHP,是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛的運用。
一、預編譯環境
1.源碼包
nginx-1.1.18.tar.gz
mysql-5.0.87.tar.gz
php-5.4.0.tar.gz
下載:
http://nginx.org/en/download.html nginx各版本下載
http://www.mysql.com/downloads/ mysql各版本下載
http://www.php.net/downloads.php php各個版本下載
2.系統環境
Linux 5.4 (2.6.18-164.el5)
想要實現源碼安裝,必須先要配置好編譯環境。使用yum grouplist |less進行查看。
Development Tools --開發工具
Legacy Software Development -- 傳統軟件開發工具
Development Libraries –開發工具庫
如果需要圖形。那麼以下安裝包是需要的。
Kde環境需要安裝:
Kde software development
Gnome環境需要安裝:
Gnome software development
X software development
[root@server ~]# yum groupinstall "Development Libraries"
[root@server ~]# yum groupinstall "Development Tools"
3.上傳軟件到系統
將軟件包上傳到系統中(略),查看
[root@server ~]# ll
total 36632
-rw------- 1 root root 1291 Feb 8 02:05 anaconda-ks.cfg
-rw-r--r-- 1 root root 35236 Feb 8 02:04 install.log
-rw-r--r-- 1 root root 3995 Feb 8 02:02 install.log.syslog
-rw-r--r-- 1 root root 22231820 Feb 8 02:36 mysql-5.0.87.tar.gz
-rw-r--r-- 1 root root 714741 Feb 8 02:36 nginx-1.1.18.tar.gz
-rw-r--r-- 1 root root 14449872 Feb 8 02:36 php-5.4.0.tar.gz
[root@server ~]#
二、源碼安裝Nginx
1.安裝所依賴的包
[root@server ~]# yum -y install zlib-devel pcre-devel openssl-devel
2.拆包
[root@server ~]# ll
total 36632
-rw------- 1 root root 1291 Feb 8 02:05 anaconda-ks.cfg
-rw-r--r-- 1 root root 35236 Feb 8 02:04 install.log
-rw-r--r-- 1 root root 3995 Feb 8 02:02 install.log.syslog
-rw-r--r-- 1 root root 22231820 Feb 8 02:36 mysql-5.0.87.tar.gz
-rw-r--r-- 1 root root 714741 Feb 8 02:36 nginx-1.1.18.tar.gz
-rw-r--r-- 1 root root 14449872 Feb 8 02:36 php-5.4.0.tar.gz
[root@server ~]# tar -zxvf nginx-1.1.18.tar.gz -C /usr/src
這裏解釋下解壓參數,z代表gzip(也就是後面的.gz文件)x代表加壓,v表示顯示詳細信息,-f使用檔案文件或設備(必選參數) -C 指定解壓目錄,一般都放在/usr/src目錄下
3.配置
[root@server ~]# cd /usr/src/nginx-1.1.18/ //切換到源碼存放目錄
[root@server nginx-1.1.18]# ./configure \ //"\"表示參數未完待續。
>--prefix=/usr/local/nginx \ //指定安裝目錄爲/usr/local/nginx
> --sbin-path=/usr/sbin/nginx \
> --conf-path=/etc/nginx/nginx.conf \
> --error-log-path=/var/log/nginx/error.log \
> --http-log-path=/var/log/nginx/access.log \
> --pid-path=/var/run/nginx/nginx.pid \
> --lock-path=/var/lock/nginx.lock \
> --user=nginx \
> --group=nginx \
> --with-http_ssl_module \
> --with-http_flv_module \
> --with-http_stub_status_module \ //安裝可以查看nginx狀態的程序
> --with-http_gzip_static_module \
> --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
> --with-pcre //啓用正規表達式
4.編譯安裝
[root@server nginx-1.1.18]# make //編譯
[root@server nginx-1.1.18]# make install //安裝
5.查看
[root@server ~]# ls /usr/local/nginx/ //查看安裝文件
html
[root@server ~]#
[root@server ~]# groupadd -r nginx //創建組帳號
[root@server ~]# useradd -r -g nginx -s /bin/false -M nginx //創建用戶,並不允許其登錄
[root@server ~]# nginx //啓動nginx
[root@server ~]# netstat -tupln |grep nginx //查看端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9275/nginx: master
[root@server ~]#
6.測試
使用pc查看結果
7.其它
爲了方便,可以爲nginx提供一個啓動服務的腳本(您可以下載附件)
[root@server ~]# vim /etc/rc.d/init.d/nginx //nginx文件已經共享爲附件
[root@server ~]# chkconfig --add nginx //添加nginx服務
[root@server ~]# chkconfig nginx on //設置nginx服務開機啓起
[root@server ~]# chkconfig --list nginx //查看nginx端口
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
三、源碼安裝Mysql
1.安裝所依賴的包
[root@server ~]# yum -y install ncurses-devel
2.拆包
[root@server ~]# ll
total 36632
-rw------- 1 root root 1291 Feb 8 02:05 anaconda-ks.cfg
-rw-r--r-- 1 root root 35236 Feb 8 02:04 install.log
-rw-r--r-- 1 root root 3995 Feb 8 02:02 install.log.syslog
-rw-r--r-- 1 root root 22231820 Feb 8 02:36 mysql-5.0.87.tar.gz
-rw-r--r-- 1 root root 714741 Feb 8 02:36 nginx-1.1.18.tar.gz
-rw-r--r-- 1 root root 14449872 Feb 8 02:36 php-5.4.0.tar.gz
[root@server ~]# tar -zxvf mysql-5.0.87.tar.gz -C /usr/src
3.配置
[root@server ~]# cd /usr/src/mysql-5.0.87/ //切換到源碼目錄
[root@server mysql-5.0.87]#
[root@server mysql-5.0.87]# ./configure \ //"\"表示參數未完待續。
>--prefix=/usr/local/mysql \ //指定安裝目錄
> --without-debug \ //取消調試模式提高性能
> --with-extra-charsets=utf8,gbk \ //僅僅指定需要的默認字符集提高性能
> --enable-assembler \ //使用匯編模式提高性能
> --with-mysqld-ldflags=-all-static \ //以靜態方式編譯提高性能
> --with-client-ldflags=-all-static \
> --with-unix-socket-path=/tmp/mysql.sock \ //使用unix socket提高性能
> --with-ssl
4.編譯
[root@server mysql-5.0.87]# make //編譯
[root@server mysql-5.0.87]# make install //安裝
5.修改相關文件
安裝完成後複製配置文件和啓動腳本:
[root@server mysql-5.0.87]# cp support-files/my-medium.cnf /etc/my.cnf //複製配置文件
[root@server mysql-5.0.87]# cp support-files/mysql.server /etc/init.d/mysqld //複製啓動腳本
[root@server mysql-5.0.87]# chmod +x /etc/init.d/mysqld //給啓動腳本執行權限
爲了以後方便我們爲所有的二進制可執行文件和動態鏈接庫文件做一個軟連接
[root@server mysql-5.0.87]# ln -s /usr/local/mysql/bin/* /usr/local/bin/ //爲可執行的二進制文件做軟連
[root@server mysql-5.0.87]# ln -s /usr/local/mysql/lib/mysql/lib* /usr/lib/ //爲動態鏈接庫做一個軟連接
然後我們初始化數據庫
[root@server mysql-5.0.87]# mysql_install_db --user=mysql //用MySQL用戶安裝數據庫
爲了MySQL能正常使用我們需要更改一下MySQL安裝目錄和MySQL的數據庫目錄的屬主和屬組
[root@server mysql-5.0.87]# chown -R root.mysql /usr/local/mysql/ //更改安裝目錄屬主爲root,屬組爲mysql
[root@server mysql-5.0.87]# chown -R mysql.mysql /usr/local/mysql/var/ //更改數據庫目錄屬主和屬組都爲mysql
[root@server mysql-5.0.87]#
6.測試
root@server ~]# service mysqld start //開啓mysql服務
Starting MySQL. [ OK ]
[root@server ~]#
[root@server ~]# netstat -antlp | grep 3306 //查看端口
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 31513/mysqld
[root@server ~]#
[root@server ~]# mysql //連接mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.87-log Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases; //查看數據庫
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> \q
Bye
[root@server ~]#
四、源碼安裝Php
1.上傳所依賴的包
安裝PHP前首先要安裝幾個源碼包依賴:libmcrypt、mhash、mcrypt ,本例中使用源碼包如下: libmcrypt-2.5.8.tar.bz2、mhash-0.9.9.9.tar.bz2、mcrypt-2.6.8.tar.gz 。將所需要的源碼包上傳到系統中。(略)
[root@server ~]# ll
total 38608
-rw------- 1 root root 1291 Feb 8 02:05 anaconda-ks.cfg
-rw-r--r-- 1 root root 35236 Feb 8 02:04 install.log
-rw-r--r-- 1 root root 3995 Feb 8 02:02 install.log.syslog
-rw-r--r-- 1 root root 875425 Feb 8 04:39 libmcrypt-2.5.8.tar.bz2
-rw-r--r-- 1 root root 471915 Feb 8 04:38 mcrypt-2.6.8.tar.gz
-rw-r--r-- 1 root root 655906 Feb 8 04:38 mhash-0.9.9.9.tar.bz2
-rw-r--r-- 1 root root 22231820 Feb 8 02:36 mysql-5.0.87.tar.gz
-rw-r--r-- 1 root root 714741 Feb 8 02:36 nginx-1.1.18.tar.gz
-rw-r--r-- 1 root root 14449872 Feb 8 02:36 php-5.4.0.tar.gz
2.安裝所依賴的包
安裝libmcrypt
[root@server ~]# tar -jxvf libmcrypt-2.5.8.tar.bz2 -C /usr/src //解壓縮
[root@server ~]# cd /usr/src/libmcrypt-2.5.8/ //切換到源文件目錄
[root@server libmcrypt-2.5.8]# ./configure //配置
[root@server libmcrypt-2.5.8]# make //編譯
[root@server libmcrypt-2.5.8]# make install //安裝
安裝mhash
[root@server ~]# tar -jxvf mhash-0.9.9.9.tar.bz2 -C /usr/src //解壓縮
[root@server ~]# cd /usr/src/mhash-0.9.9.9/ //切換到源文件目錄
[root@server mhash-0.9.9.9]# ./configure //配置
[root@server mhash-0.9.9.9]# make //編譯
[root@server mhash-0.9.9.9]# make install //安裝
這兩個包安裝完成後要把動態鏈接庫做一個軟連接到/usr/lib,因爲接下來的mcrypt依賴於這兩個包
[root@server ~]# ln -s /usr/local/lib/libmcrypt* /usr/lib
[root@server ~]# ln -s /usr/local/lib/libmhash.* /usr/lib/
安裝mcrypt (如果您不需要加密服務,crypt可以選擇不安裝)
[root@server ~]# tar -zxvf mcrypt-2.6.8.tar.gz -C /usr/src //解壓縮
[root@server ~]# cd /usr/src/mcrypt-2.6.8/ //切換到源文件目錄
[root@server mcrypt-2.6.8]# ./configure //配置
[root@server mcrypt-2.6.8]# make //編譯
[root@server mcrypt-2.6.8]# make install //安裝
3.拆包
我們使用nginx調用php的時候使用fpm的方式,在php 5.4中加入了對php-fpm的支持,所以就不需要打補丁了.安裝PHP,再次安裝所依賴的包
[root@server ~]# yum -y install libxml2-devel curl-devel libpng-devel openldap-devel
[root@server ~]# ll
total 38608
-rw------- 1 root root 1291 Feb 8 02:05 anaconda-ks.cfg
-rw-r--r-- 1 root root 35236 Feb 8 02:04 install.log
-rw-r--r-- 1 root root 3995 Feb 8 02:02 install.log.syslog
-rw-r--r-- 1 root root 875425 Feb 8 04:39 libmcrypt-2.5.8.tar.bz2
-rw-r--r-- 1 root root 471915 Feb 8 04:38 mcrypt-2.6.8.tar.gz
-rw-r--r-- 1 root root 655906 Feb 8 04:38 mhash-0.9.9.9.tar.bz2
-rw-r--r-- 1 root root 22231820 Feb 8 02:36 mysql-5.0.87.tar.gz
-rw-r--r-- 1 root root 714741 Feb 8 02:36 nginx-1.1.18.tar.gz
-rw-r--r-- 1 root root 14449872 Feb 8 02:36 php-5.4.0.tar.gz
[root@server ~]# tar -zxvf php-5.4.0.tar.gz -C /usr/src //拆解
4.配置
[root@server ~]# cd /usr/src/php-5.4.0/ //切換到源碼目錄
[root@server php-5.4.0]# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql/ --with-zlib --enable-xml --disable-rpath --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --with-curl --with-curlwrappers --enable-fpm --enable-fastcgi --with-mcrypt --with-gd --with-openssl --with-mhash --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc -enable-zip --enable-soap //編譯
5.編譯
[root@server php-5.4.0]# make //編譯
[root@server php-5.4.0]# make install //安裝
6.修改PHP相關文件
[root@server php-5.4.0]# cp php.ini-production /usr/local/php/php.ini //如果是開發就複製php.ini-development
[root@server php-5.4.0]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@server php-5.4.0]# ln -s /usr/local/php/bin/php /usr/bin/
[root@server ~]# vim /usr/local/php/etc/php-fpm.conf //配置php-fpm,編輯php-fpm.conf
[root@server ~]# mkdir /var/run/php-fpm
[root@server ~]# /usr/local/php/sbin/php-fpm //啓動php-fpm
7.修改nginx相關文件
[root@server ~]# vim /etc/nginx/nginx.conf //修改nginx配置文件支持php
[root@server ~]# pkill -1 nginx //pkill 參數 -1(數字1) 不需要重啓,只需要重新讀取文件
五、測試
1.測試php
[root@server ~]# vim /usr/local/nginx/html/index.php
使用pc機查看結果
2.測試與數據庫連接
[root@server ~]# vim /usr/local/nginx/html/index.php
使用pc機查看結果