編譯安裝Nginx實現網絡訪問多虛擬主機(wordpress+phpmyadmin)

一、安裝Nginx

    後面會有一篇博客專門介紹Nginx,在這篇博客中僅僅介紹如何安裝Nginx並配置,使其實現多個虛擬主機,分別根據不同的域名訪問wordpress和phpMyadmin,對於這兩個軟件已經使用apache進行過配置,詳細的過程可以參考原先的博客。

    安裝Nginx有兩種方式,一種是使用yum進行安裝,在這裏要說的是編譯安裝,首先要到官網或者鏡像網站下載Nginx的源代碼(下載完成之後導入虛擬機中):http://nginx.org/en/download.html

    我下載的是nginx-1.12.1.tar.gz這個版本的源代碼包,如果虛擬機能夠連接網絡,也可以直接使用命令進行下載:

wget http://nginx.org/download/nginx-1.12.1.tar.gz

    現在在機器中如果能夠查看到這個軟件,就可以進行下一步了:

wKiom1nhmXzxMTXlAAARrqNIvMc031.png-wh_50

    使用命令來解壓到當前目錄:

~]# tar -zxf nginx-1.12.1.tar.gz -C ./

    注意:在安裝之前要確保編譯所需的環境已經配置好,可以使用下面這個命令來進行安裝(還有編譯所需包,如Development Tools):

~]# yum install openssl-devel pcre-devel libevent-devel -y

    然後在當前目錄下就可以看到一個“nginx-1.12.1”目錄,切換到這個目錄中:

~]# cd nginx-1.12.1

    在這個目錄中可以看到Nginx的所有源代碼,下面使用configure來進行編譯前的設置,可以使用下面這條命令查看幫助,根據自己的需要選擇安裝的模塊,在這個幫助中以“ --without”開頭的是默認安裝的,如果寫上這個選項則不安裝,而以“--with”開頭的是默認不安裝的,只有寫上這個選項纔會安裝:

nginx-1.12.1]# ./configure --help

    在這篇博客中就不詳細介紹每一個選項的功能了,下面我們直接使用這條命令進行編譯:

nginx-1.12.1]# ./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.pid \
--lock-path=/var/lock/subsys/nginx.lock \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_dav_module \
--with-threads \
--with-file-aio \
--with-http_stub_status_module

    如果在使用了上面這條命令之後出現的畫面如圖所示,則代表成功,如果報錯,則說明openssl-devel pcre-devel libevent-devel等包沒有安裝,返回上面重新安裝這幾個包:

wKiom1nhncPjZqsrAACzAbyzx_Q132.png-wh_50

    成功之後就可以進行編譯和安裝了:

 nginx-1.12.1]# make && make install


二、配置Nginx

    到這裏,Nginx就算是安裝好了,接下來我們要對其進行配置,首先要啓動這個程序,需要事先創建nginx用戶和nginx組(也可以在配置文件中修改成別的用戶和組):

nginx-1.12.1]# useradd nginx  #同名組自動創建

    因爲在進行編譯配置的時候我們就將nginx的二進制文件寫到了“/usr/sbin/”下,所以我們可以直接使用命令來啓動nginx:

nginx-1.12.1]# nginx

    接下來我們使用命令來查看nginx是否啓動成功:

nginx-1.12.1]# ss -tlpn

    發現,nginx已經啓動了,但是因爲我的主機中還存在httpd所以nginx自動將端口切換爲了801(可以通過“/etc/nginx/nginx.conf”來修改監聽的端口,不過在這裏我就不改了),如果你的主機中沒有httpd那麼他就會監聽80端口,下面我將801端口改成80:

wKiom1nhoQGi55-xAAEaRUwr9gs634.png-wh_50

    使用命令停掉httpd(如果沒啓動就不用管了):

~]# service httpd stop

    此時在真實主機上就可以通過瀏覽器訪問“192.168.3.10”(這個IP是剛纔虛擬機的IP)

wKiom1nhoYGABpfhAABzZLWfvcA602.png-wh_50

    這樣的Nginx的配置就完成了,下面開始配置兩個虛擬主機,兩個虛擬主機的根目錄我分別存放在“/myweb/wordpress”和“/myweb/phpmyadmin”中,現在分別建立這兩個目錄,並在其中寫入兩個不同的主頁來進行測試:

nginx-1.12.1]# mkdir -pv /myweb/{wordpress,phpmyadmin}
nginx-1.12.1]# echo "This is wordpress" > /myweb/wordpress/index.html
nginx-1.12.1]# echo "This is phpmyadmin" > /myweb/phpmyadmin/index.html

    下面要進行兩個虛擬主機的配置,首先編輯文件“/etc/nginx/nginx.conf”添加內容,使其包含片段配置文件,這是爲了將接下來的配置和主配置分開,避免配置錯誤:

nginx-1.12.1]# vim /etc/nginx/nginx.conf

    在“http”的大括號中添加下面這條:

include /etc/nginx/conf/*.conf"

    接下來我們在“/etc/nginx/conf/”下創建一個以“.conf”結尾的片段配置文件並寫入內容:

server {
  listen 80;
  server_name myweb.wordpress.com;
  location / {
    root /myweb/wordpress;
    index index.html;
  }
}
server {
  listen 80;
  server_name myweb.phpmyadmin.com;
  location / {
    root /myweb/phpmyadmin;
    index index.html;
  }
}

    保存並退出之後,使用“nginx -t”命令檢查配置文件是否有錯誤,如果沒有錯誤,就使用“nginx -s reload”命令重新載入配置:

wKioL1nhpVPzEicVAAAyHQMFoso944.png-wh_50

    再次使用“ss -tnlp”命令查看,發現現在是Nginx在使用80端口(801端口依然在使用,那是主配置文件裏的東西,暫時不去管它):

wKiom1nhuaHgjD97AAD5bkKNzuM959.png-wh_50

    然後回到真實主機上,在“C:\\Windows\System32\drivers\etc\hosts”內配置下面兩條解析(如果不可以保存請更改權限,具體操作查看http://11142243.blog.51cto.com/11132243/1966271):

192.168.3.10 myweb.wordpress.com
192.168.3.10 myweb.phpmyadmin.com

    保存之後通過瀏覽器訪問這兩個網址就可以發現配置成功了:

wKiom1nhujrhMvdxAAA2JuGpTDw860.png-wh_50

wKiom1nhujyCorVPAAA5Uv3ooQ8585.png-wh_50

    接下來刪掉這兩個測試目錄:

~]# rm -frv /myweb/*

三、安裝並配置wordpress和phpmyadmin

    這兩個軟件都需要使用MySQL[MariaDB]和PHP,所以我們要安裝這兩個軟件,具體的安裝過程參考:

http://11142243.blog.51cto.com/11132243/1966271

    首先將程序包上傳到服務器中:

wKiom1nhu4fiMVuOAAAaZ19Cwhw831.png-wh_50

    然後分別解壓到各自對應的目錄中:

~]# tar -zxf /software/phpMyAdmin-3.5.4-all-languages.tar.gz -C /myweb/

~]# tar -zxf /software/wordpress-4.8.1-zh_CN.tar.gz -C /myweb/

    改個名字或者建立鏈接:

~]# mv /myweb/{phpMyAdmin-3.5.4-all-languages,phpmyadmin}

wKiom1nhvWqilMjgAABJe2-5Dwk830.png-wh_50

    使用命令安裝所需軟件:

~]# yum install php php-fpm mysql mysql-server

    然後進行wordpress的配置,參考:http://11142243.blog.51cto.com/11132243/1964468

    配置完成之後,我們還需要回到剛纔配置虛擬主機那裏把剛纔的配置增加幾條選項,變成下面的樣子(因爲Nginx默認將PHP註釋掉了,需要我們自己開啓):

server {
  listen 80;
  server_name myweb.wordpress.com;  
  location / {
    root /myweb/wordpress;
    index index.html index.php;
  }     
  location ~ \.php$ {
    root /myweb/wordpress;
  include        fastcgi_params;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  }     
}
server {
  listen 80;
  server_name myweb.phpmyadmin.com; 
  location / {
    root /myweb/phpmyadmin;
    index index.html index.php;
  }     
  location ~ \.php$ {
    root /myweb/phpmyadmin;
  include        fastcgi_params;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  }     
}

    保存退出之後重新加載配置,即可看到兩個虛擬主機配置成功:

wKiom1nhxjDhbwL4AAC3JMieakM080.png-wh_50


wKiom1nhxjHQD4LRAACdLagj_Zc360.png-wh_50wKioL1nhw3vQjsFEAAGCyz4rb0o095.png-wh_50




    可能會遇到的錯誤:

        配置phpmyadmin可能會出現下面的錯誤:

Cannot start session without errors, please check errors given in your PHP and/or webserver log file and configure your PHP installation properly.

需要將/var/lib/php/session的所有者改爲nginx

chown -R nginx:nginx /var/lib/php/session


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章