Linux(CentOS6.x)下使用yum軟體管理工具安裝LNMP(Nginx+PHP+Mysql)環境並配置虛擬主機vhost
前言:之前本小生也嘗試過原始碼安裝,即在官網下載nginx,php,mysql的tar包然後手工一步一步的搭建,但是期間發現,每個軟體在linux環境執行時都需要大量的依賴包,比如nginx需要gcc等,php需要pcre等,都需要逐個的去官網找安裝包安裝,比較麻煩和繁瑣,尤其是在安裝前執行配置環境變數./configure 時,稍不留神或者之前少安裝了某個依賴包,那就是頻繁的報錯和除錯了,對於有時間做研究來說是可以提高經驗和熟知原理,但是在工作重心放在開發上,想要快速搭建環境來講,還是推薦大家使用CentOS自帶的yum軟體管理工具來實現,比較方便快捷,下面我們來搭建環境:
1準備工作:
關閉防火牆 (老百姓專用),執行
- chkconfig iptables off
配置CentOS 6.x 第三方yum源(CentOS預設的標準源裡沒有nginx軟體包),第三方軟體源很多,我選用的是
atomic
軟體源,當然還有其他輸入Adobe等很多軟體源可選。 首先安裝atomic
軟體源的指令碼,找一個下載存放的目錄,我的是 /usr/local/src 執行:
- cd /usr/local/src
然後下載
atomic
指令碼,執行:- wget http://www.atomicorp.com/installers/atomic
下載後執行這個指令碼,給yum新增
atomic
源的軟體支援,執行:- sh ./atomic
執行後可以執行一下 yum
check
-
update
來看看是否需要有更新的軟體,執行:
- yum check-update
執行過後,我們來安裝Nginx所必要的依賴包和環境,依靠yum的話只要輸入對軟體名稱,yum全搞定,執行:
- yum -y install ntp make openssl openssl-devel pcre pcre-devel libpng libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel
如果你不確定你的主機是否之前裝了環境,可以先解除安裝一下,這裡給出yum解除安裝方法,如果是原始碼安裝的話需要逐個解除安裝,yum解除安裝的話執行:
- yum remove nginx
- yum remove mysql
- yum remove php
2 安裝 Nginx
下面安裝Nginx,由於前邊已經做好準備,後邊很簡單的執行:
- yum install nginx
一切自動安裝完後,啟動Nginx的服務:
- service nginx start
如需系統開機啟動則執行:
- chkconfig --levels 235 nginx on
這裡設定了linux下235級別啟動
3 安裝 Mysql
執行:
- yum install mysql mysql-server mysql-devel
安裝啟動mysql
- service mysqld start
設定開機啟動:
- chkconfig --levels 235 mysqld on
由於Mysql預設安裝後的賬號密碼均為root,你可能需要修改密碼,執行
- mysql -h localhost -u root
輸入預設密碼root(有的沒有預設密碼,直接回車)
執行sql語句來修改mysql密碼,也可以修改配置檔案,這裡修改密碼的sql語句為:
- update mysql.user set password = PASSWORD('*********') where user='root';
- flush privileges;
4安裝PHP
首先安裝PHP需要依賴的環境,依舊是直接yum安裝,執行:
- yum install php lighttpd-fastcgi php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap
然後安裝php,執行:
- yum install php-tidy php-common php-devel php-fpm php-mysql
安裝成功後啟動,執行:
- service php-fpm start
這裡我裝的是php5.4以上的版本,所以啟動fpm。
設定開機啟動
- chkconfig --levels 235 php-fpm on
到此,Nginx,PHP,Mysql已經都安裝完畢並且開始運行了,由於yum軟體管理工具都是選取列入軟體的最穩定版本(注意並不是老舊的版本,軟體源會更新到最新的穩定版)來安裝到你的機器上,也就是說軟體的版本在你安裝的時候不會被選擇,而是yum給你安哪個就是哪個,如果需要最新版則需要手工去更新rpm管理包,但是yum所下載的最穩定版本已經基本夠線上建站,工作,學習使用了,下面我們來配置使Nginx支援PHP
首先備份一下Nginx配置檔案,並使用預設的配置檔案,依次執行:
- mv /etc/nginx/nginx.conf /etc/nginx/nginx.confbak
- cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf
之後
修改nginx配置檔案,新增fastcgi支援(使Nginx可以解析PHP指令碼,有時遇到雖然路徑配對了,但是不顯示php頁面卻把頁面給下載了,就是這塊沒起作用),執行:
- vim /etc/nginx/nginx.conf
開啟後在server作用域括號內找到index index.html index.htm;這行,在後邊新增上index.php,這樣可以預設找到php檔案的首頁,之後找到被註釋了的FastCGI作用域,然後把前邊註釋符號#去掉,類似:
- 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;
- }
注:root引數是你網站的根目錄,我設定的是根目錄下的www目錄
之後,最好修改一下php的系統時間,也就是差八小時那個問題,並設定一下cgi.fix_pathinfo = 1
來防止壞蛋用二進位制程式碼通過php上傳來惡意搞你,可以訪問 :
- vi /etc/php.ini
來設定
最後,重啟Nginx和php-fpm來更新我們的配置,執行:
- service nginx restart && service php-fpm restart
現在,我們就可以執行php檔案了,在你的根目錄下,建立一個index.php檔案,裡面輸出phpinfo()函式,然後通過主機ip,我這裡是http://10.3.130.46/index.php,訪問,如果出現正確的輸出,證明環境搭建完畢。
在開發和學習中,我們可能需要很多的虛擬主機來安置不同的網站和開發任務,yum安裝後搭建虛擬主機的方法如下:
訪問:
- cd /etc/nginx
在這個資料夾下建立一個vhost資料夾,執行:
- mkdir vhost
然後在這個目錄內建立一個你的虛擬站點的配置檔案,我這裡起名叫www.test.com.conf,執行:
- vim vhost/www.test.com.conf
開啟後加入這個虛擬站點的基本配置,根目錄(之前在/www下建好test目錄)和php支援等,如下:
- server
- {
- listen 80;
- server_name www.test.com;
- index index.php index.html;
- root /www/test;
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
- {
- expires 30d;
- }
- location ~ .*\.(js|css)?$
- {
- expires 12h;
- }
- location /
- {
- try_files $uri $uri/ /index.php$is_args$args;
- }
- location ~ \.php$
- {
- try_files $uri =404;
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- include fcgi.conf;
- }
- access_log /var/log/www.test.com.log;
- }
儲存完畢後,我們需要在nginx主配置檔案nginx.conf中引入vhost內的配置檔案,執行:
- vim /etc/nginx/nginx.conf
在http作用域括號內,server作用域括號外,我這裡選擇了放在server結束大括號下邊,新增
- include vhost/*.conf;
儲存,之後重啟nginx,執行:
- service nginx restart
在本機綁定了host之後,瀏覽器訪問www.test.com檢視你配置的虛擬主機,如果可以訪問則成功。