開源高效之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 "<?php phpinfo(); ?>" > /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