天天看點

開源高效之LNMP環境搭建

開源高效之LNMP環境搭建

LNMP是一個縮寫,指的是一組一起使用來運作動态網站或者伺服器的自由軟體:包括Linux作業系統、Nginx網絡伺服器、MySQL資料庫和PHP、Perl或者Python。由于它們的開源廉價,這個組合開始流行,LNMP正在進軍主流計算機市場。 

Nginx是一個小巧而高效的Linux下的Web伺服器軟體,它占用資源少,支援并發連接配接數多,及相當穩定,尤其作為反向代理伺服器性能最佳, Nginx 同時也是一個非常優秀的郵件代理伺服器及在CDN網絡架構中的分發裝置來實作負載均衡,官網http://nginx.org

PHP是一種HTML内嵌式的語言,它是開源、免費的,并且使用非常廣泛。PHP 無疑是一種高效率的選擇

好了,下面開始LAMP的搭建之旅

1、準備好所需的源碼包如下:

nginx-1.0.11.tar.gz

mysql-5.5.15-linux2.6-i686.tar.gz

php-5.3.7.tar.bz2

phpMyAdmin-2.11.10.1-all-languages.zip

你可以分别到他們的官網去下載下傳最新版本如果需要

2、必須檢視linux系統的預編譯環境指令yum grouplist

Legacy Software Development  傳統的軟體開發

Development Libraries   開發庫

Development Tools   開發工具

X Software Development   X圖形界面下的開發或者使用Gnome或是Kde圖形界面

以上四個組安裝了就會省去安裝很多依賴。

如果沒安裝,用yum groupinstall  "Legacy Software Development" 指令來一一進行安裝

3、開始安裝nginx(你要将安裝的源碼包上傳到伺服器上( ⊙ o ⊙ )!)

       先安裝pcre-devel  及建立nginx服務的指定組及使用者

       yum -y install pcre-devel 

       groupadd -r nginx

       useradd -r -g nginx -s /bin/false -M nginx

     下面安裝nginx-1.0.11.tar.gz

     tar -zxvf nginx-1.0.11.tar.gz -C /usr/local/src   解壓縮到/usr/local/src/

      cd /usr/local/src/nginx-1.0.11/   切換到解壓縮的目錄

      ./configure    \            由于參數比較多加一個'"\" 換行輸入參數

      --prefix=/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 \   

    --with-http_gzip_static_module \    

    --http-client-body-temp-path=/var/tmp/nginx/client/ \   

--http-proxy-temp-path=/var/tmp/nginx/proxy/ \  

    --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \  

    --with-pcre    支援正規表達式,很重要

   編譯安裝

make

make  install

   啟動nginx伺服器并檢視端口

   nginx   啟動nginx指令

   netstat -tupln |grep nginx

  tcp       0     0 0.0.0.0:80    0.0.0.0:*         LISTEN      10201/nginx: master 

   在用戶端測試一下:

<a href="http://blog.51cto.com/attachment/201211/182251213.png" target="_blank"></a>

好了nginx已經開始工作了,為了啟動友善,你可以下載下傳一個nginx啟動腳本,并添加一下開機啟動會更好。

4、安裝Mysql 

tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/mysql/     聲明一下:這個包是一個已經編譯好的綠色包,隻需要配置一下就可以,節省時間。。。。

cd /usr/local/mysql/

groupadd -r mysql    建立mysql組

useradd -r -g mysql -s /sbin/nologin -M mysql  建一個mysql自己的使用者

cd /usr/local/mysql/ 切換到mysql目錄

chown -R mysql.mysql .   “.”表示目前目錄

scripts/mysql_install_db --user=mysql  初始化mysql資料庫

chown -R root .         改回以前的root使用者              

chown -R mysql data

cp support-files/my-medium.cnf /etc/my.cnf  mysql的記憶體檔案

cp support-files/mysql.server /etc/init.d/mysqld  mysql的啟動腳本

service mysqld start  啟動mysql

[root@localhwsm mysql]# netstat -tupln |grep mysql  檢視端口

tcp        0      0 :::3306            :::*         LISTEN      10736/mysqld 

編輯/etc/profile檔案,加入一下内容

PATH=$PATH:/usr/local/mysql/bin/  

執行source  /etc/profile指令 使之立即生效

登入mysql,檢視資料庫

<a href="http://blog.51cto.com/attachment/201211/182321580.png" target="_blank"></a>

為mysql設定密碼,加強安全

mysqladmin -u root -p password "love123" 

指定庫路徑 

在/etc/ld.so.conf.d/目錄下建立一個mysql.conf檔案添加mysql的庫路徑入下一句話:

/usr/local/mysql/lib/

在執行指令ldconfig  重新讓系統加載

ldconfig -pv |grep mysql 檢視是否加載

<a href="http://blog.51cto.com/attachment/201211/182357647.png" target="_blank"></a>

指定頭檔案

建立一個軟連接配接即可

ln -s /usr/local/mysql/include/ /usr/include/mysql

設定開機啟動

5、安裝PHP

先安裝 libmcrypt-2.5.8.tar.gz 、mhash-0.9.9.9.tar.gz、 mcrypt-2.6.8.tar.gz這三個依賴

tar -zxvf libmcrypt-2.5.8.tar.gz -C /usr/local/src 

/usr/local/src/libmcrypt-2.5.8

Cd  /usr/local/src/libmcrypt-2.5.8

./configure

Make

Make install

tar -zxvf mhash-0.9.9.9.tar.gz -C /usr/local/src

cd /usr/local/src/mhash-0.9.9.9/

為上面兩個建立一個到/usr/lib的軟連接配接解決mcrypt的依賴

ln -s /usr/local/lib/libmcrypt* /usr/lib 

ln -s /usr/local/lib/libmhash.* /usr/lib/

tar -zxvf mcrypt-2.6.8.tar.gz -C /usr/local/src/

Cd  /usr/local/src/mcrypt-2.6.8

 tar -jxvf php-5.3.7.tar.bz2 -C /usr/local/src  解壓縮到/usr/local/src/目錄下

 cd /usr/local/src/php-5.3.7/   

./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --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 --enable-mbstring

make     //編譯

make install   //安裝

cp  /usr/local/src/php-5.3.7  php.ini-development  /usr/local/php/php.ini  将php的配置檔案拷貝到php的安裝目錄 

ln -s /usr/local/php/bin/php /usr/bin/

    這裡使用nginx調用php的時候使用fpm的方式,我所用的php 5.3.7中以加入了對php-fpm的支援了,不需要額外安裝了

[root@localhwsm php]# cp etc/php-fpm.conf.default  etc/php-fpm.conf  在php安裝目錄下

編輯php-fpm.conf檔案如下:

<a href="http://blog.51cto.com/attachment/201211/182622930.png" target="_blank"></a>

mkdir /var/run/php-fpm

/usr/local/php/sbin/php-fpm    啟動php-fpm

啟動錯誤解決:

ALERT: [pool www] pm.min_spare_servers(0) must be a positive value

編輯php-fpm.conf找到pm.min_spare_servers 去除;号,注意非注釋内容pm.min_spare_servers

ALERT: [pool www] pm.max_spare_servers(0) must be a positive value

編輯php-fpm.conf找到pm.max_spare_servers 去除;号,同樣非注釋内容pm.max_spare_servers

WARNING: [pool www] pm.start_servers is not set. It's been set to 20.

編輯php-fpm.conf找到pm.start_servers 去除;号,同樣非注釋内容pm.start_servers

ERROR: bind() for address '127.0.0.1:9000' failed: Address already in use (98)

# netstat -ntlpps -ef|grep php檢視程序,有N多程序

nobody 26152 26151 0 15:45 ? 00:00:00 php-fpm: pool www

nobody 26153 26151 0 15:45 ? 00:00:00 php-fpm: pool www

nobody 26154 26151 0 15:45 ? 00:00:00 php-fpm: pool www

nobody 26155 26151 0 15:45 ? 00:00:00 php-fpm: pool www

...........................

#killall php-fpm 結束所有php-fpm程序

再啟動php-fpm

#/usr/local/php/sbin/php-fpm

成功   

7、修改nginx.conf配置檔案如下:

重新開機nginx 

pkill  nginx     殺死程序

nginx           啟動 也也已直接使用一條指令pkill -1 nginx 

8、測試

echo "&lt;?php phpinfo();  ?&gt;" &gt; /usr/local/nginx/html/index.php  一個小的php代碼調用php

<a href="http://blog.51cto.com/attachment/201211/182647645.png" target="_blank"></a>

編輯index.php如下:

<a href="http://blog.51cto.com/attachment/201211/182702135.png" target="_blank"></a>

<a href="http://blog.51cto.com/attachment/201211/182717208.png" target="_blank"></a>

9、安裝phpmyadmin

unzip phpMyAdmin-2.11.10.1-all-languages.zip  解壓縮

mv phpMyAdmin-2.11.10.1-all-languages /usr/local/nginx/html/phpmyadmin   轉移到html目錄下并改名phpmyadmin

 cd /usr/local/nginx/html/phpmyadmin/  切換到該目錄下

 cp config.sample.inc.php config.inc.php

 vim config.inc.php 如下:

<a href="http://blog.51cto.com/attachment/201211/182727207.png" target="_blank"></a>

在用戶端通路

<a href="http://blog.51cto.com/attachment/201211/182751153.png" target="_blank"></a>

輸入使用者名密碼即可,至此基本的LNMP環境已經搭建好了。。。。

本文轉自 abc16810 51CTO部落格,原文連結:http://blog.51cto.com/abc16810/1059231