史上最全配置macOS中Nginx和apache的教程

文章原文連接:http://www.valarvo.com/edwardvoon/1293.html

Nginx和apache的抉擇

Nginx

  1. 輕量級,採用 C 進行編寫,同樣的 web 服務,會佔用更少的內存及資源
  2. 抗併發,nginx 以 epoll and kqueue 作爲開發模型,處理請求是異步非阻塞的,負載能力比 apache 高很多,而 apache 則是阻塞型的。在高併發下 nginx 能保持低資源低消耗高性能 ,而 apache 在 PHP 處理慢或者前端壓力很大的情況下,很容易出現進程數飆升,從而拒絕服務的現象。
  3. nginx 處理靜態文件好,靜態處理性能比 apache 高三倍以上
  4. nginx 的設計高度模塊化,編寫模塊相對簡單
  5. nginx 配置簡潔,正則配置讓很多事情變得簡單,而且改完配置能使用 -t 測試配置有沒有問題,apache 配置複雜 ,重啓的時候發現配置出錯了,會很崩潰
  6. nginx 作爲負載均衡服務器,支持 7 層負載均衡
  7. nginx 本身就是一個反向代理服務器,而且可以作爲非常優秀的郵件代理服務器
  8. 啓動特別容易, 並且幾乎可以做到 7*24 不間斷運行,即使運行數個月也不需要重新啓動,還能夠不間斷服務的情況下進行軟件版本的升級
  9. 社區活躍,各種高性能模塊出品迅速

Apache

  1. apache 的 rewrite 比 nginx 強大,在 rewrite 頻繁的情況下,用 apache
  2. apache 發展到現在,模塊超多,基本想到的都可以找到
  3. apache 更爲成熟,少 bug ,nginx 的 bug 相對較多
  4. apache 超穩定
  5. apache 對 PHP 支持比較簡單,nginx 需要配合其他後端用
  6. apache 在處理動態請求有優勢,nginx 在這方面是雞肋,一般動態請求要 apache 去做,nginx 適合靜態和反向。
  7. apache 仍然是目前的主流,擁有豐富的特性,成熟的技術和開發社區
  8. 你對web server的需求決定你的選擇。大部分情況下nginx都優於APACHE,比如說靜態文件處理、PHP-CGI的支持、反向代理功能、前端Cache、維持連接等等。在Apache+PHP(prefork)模式下,如果PHP處理慢或者前端壓力很大的情況下,很容易出現Apache進程數飆升,從而拒絕服務的現象。 

總結

兩者最核心的區別在於 apache 是同步多進程模型,一個連接對應一個進程,而 nginx 是異步的,多個連接(萬級別)可以對應一個進程

一般來說,需要性能的 web 服務,用 nginx 。如果不需要性能只求穩定,更考慮 apache ,後者的各種功能模塊實現得比前者,例如 ssl 的模塊就比前者好,可配置項多。epoll(freebsd 上是 kqueue ) 網絡 IO 模型是 nginx 處理性能高的根本理由,但並不是所有的情況下都是 epoll 大獲全勝的,如果本身提供靜態服務的就只有寥寥幾個文件,apache 的 select 模型或許比 epoll 更高性能。當然,這只是根據網絡 IO 模型的原理作的一個假設,真正的應用還是需要實測了再說的。

更爲通用的方案是,前端 nginx 抗併發,後端 apache 集羣,配合起來會更好。

由於在macOS系統下,apache是默認就存在的,所以也就不需要安裝和配置,但是如果同時使用nginx,那就要大費一番周折。那麼,現在開始折騰吧~

>>>配置Apache

第一步:先修改apache端口號:

macOS系統中,apache的配置文件位置爲:/etc/apache2,接下來使用快捷鍵:command+空格鍵進入系統自帶的搜索工具,粘貼路徑,回車,如下圖:

選擇文件名爲httpd.conf,雙擊進行編輯

第二步:將<IfDefine SERVER_APP_HAS_DEFAULT_PORTS></IfDefine><IfDefine !SERVER_APP_HAS_DEFAULT_PORTS></IfDefine>中的Listen 80,改爲Listen 8080,如下圖:

修改端口號

第三步:command+空格鍵後進入路徑:/etc/apache2/extra/httpd-vhost.conf,對httpd-vhost.conf編輯:

將80更換爲8080

第四步:接下來,也是最重要的,當你重啓apache服務時,重啓apache服務時的命令爲:sudo /usr/sbin/apachectl restart,千萬別直接用:sudo apachectl restart,這是因爲你有兩種不同的Apache安裝 – 系統附帶的安裝和你自己安裝的安裝。

第五步:打開瀏覽器,地址輸入爲:127.0.0.1:8080,必須要加端口號,因爲在後邊配置Nginx的時候,會和apache端口號衝突。

apache已經開始工作了

恭喜你,apache已經配置成功了!

>>>配置Nginx

第一步:如果你電腦上還沒有安裝,推薦使用homebrew安裝(homebrew的安裝,建議使用默認源,國內的brew源很容易宕機,如果還是不可以,電腦連接手機熱點,進行安裝)。nginx的具體命令爲:brew install nginx,由於我電腦上已經安裝,這裏就不再贅述,不明白homebrew和nginx的安裝可以自行百度。

第二步:使用mac自帶搜索工具,command+空格鍵,複製粘貼/usr/local/etc/nginx/,打開並編輯將默認的8080端口號改爲:80,如下圖:

修改Nginx端口號

第三步:打開瀏覽器,地址輸入爲:127.0.0.1,至此,訪問nginx服務就不需要加80端口號了。

nginx已經開始工作了

恭喜你,apache和nginx全部配置成功了!區別就在於加8080和不加8080端口號,是不是很簡單。

附加選項:

根據自己的業務需求,如果nginx用的多,那就將apache服務取消自啓動,具體命令爲:sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist,如果因爲其他原因,又需要將apache重置自啓動,那就將上邊這條命令的unload改爲load。

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