注:本文只是我的研究以及探索的方法,可能不太嚴謹,若是犯了什麼專業性的錯誤,還但願各位看官加以指正,謝謝。(´・ω・`)php
特別感謝:闊空晴雲(每次遇到什麼問題都問你真是太麻煩你了 膜拜)
本文由 赤石俊哉 原創撰寫,您能夠用於任何的學習交流用途,不得用於任何形式的商業用途。如需轉載請註明原做者的版權信息和來源。css
操做系統:Ubuntu Server x64 14.04.1 LTS 參考官方說明
CPU資源:Intel Core i7 3610QM (VirtualBox僅適用一個核心)
MEM資源:512MB DDR3 1600MHz
存儲資源:10Gb 筆記本機械硬盤html
操做系統:Ubuntu 14.04 X86
CPU資源:Intel(R) Xeon(R) CPU E31245 @ 3.30GHz (4 cores)
MEM資源:524288 kB (512MB)
存儲資源:20GB SSDlinux
發起HTTP請求以後,先通過Nginx,若是是PHP站點則轉發到Apache2,若是是ASP.NET站點則轉發到Jexus。nginx
參考:在Ubuntu操做系統上安裝mono的具體方法apache
sudo apt-get update sudo apt-get upgrade
sudo apt-get install build-essential sudo apt-get install automake autoconf sudo apt-get install bison gettext libtool libglib2.0-dev libfreetype6-dev libfontconfig-dev
sudo apt-get install libtiff5-dev sudo apt-get install libgif-dev libtiff4-dev libpng12-dev libexif-dev libx11-dev libxft-dev sudo apt-get install libjpeg-dev
注:這一步跟原文不太同樣,我是根據錯誤提示修改了一些。ubuntu
下載:vim
wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2 wget http://download.mono-project.com/sources/mono/mono-3.0.12.tar.bz2
注:(2015/10/13)最新版爲libgdiplus-3.12.tar.gz
、mono-4.2.1.60.tar.bz2
。
個人服務器安裝的是最新版,上面的代碼貼的是參考文章的原文。瀏覽器
解壓:(改爲你下載的對應版本就好了)服務器
tar jvxf libgdiplus-2.10.tar.bz2 tar jvxf mono-3.0.12.tar.bz2 //若是下載的是新版,使用的是gzip(tar.gz),使用下面的命令解壓。 tar zxvf libgdiplus-3.12.tar.gz
cd libgdiplus-3.12 ./configure --prefix=/usr make sudo make install cd ..
遇到問題:gdiplus-private.h:33:31: fatal error: freetype/tttables.h: No such file or directory
參考:Ubuntu Server(Ubuntu 14.04 LTS 64位)安裝libgdiplus2.10.9出錯問題記錄
具體操做以下:
這個錯誤就是說建立/usr/X11/include/freetype連接失敗了,由於找不到freetype,可是咱們找到了freetype2,這樣咱們作個連接吧。(用上面參考資料的解決方案發現權限不夠,因而加上了
sudo
。)sudo ln -s /usr/include/freetype2 /usr/include/freetype注:原文中說起的
/usr/lib64/libglib-2.0.so.0: could not read symbols: Invalid operation
問題,因爲我並無遇到,因此略過,若是遇到這個問題,能夠參考上面參考連接的解決方法。
遇到問題:No package 'cairo' found
參考:Cairo Download
sudo apt-get install libcairo2-dev
cd mono-4.2.1.60 ./configure --prefix=/usr make sudo make install cd ..
wget http://www.linuxdot.net/down/jexus-5.5.3.tar.gz tar -zxvf jexus-5.5.3.tar.gz cd jexus-5.5.3 sudo ./install
一下就成功了,此次並無遇到什麼問題,Jexus此時就裝好了。接下來須要爲Jexus配置開機啓動,和默認站點。此部分先留到最後。
Apache+PHP的部分就不知道配置過多少回了,這個就沒有那麼複雜了。
sudo apt-get install apache2
打開瀏覽器輸入"服務器地址"測試訪問Apache2的默認頁面,能夠看到一個Apache2 Ubuntu Default Page則說明Apache2的安裝成功了,接着安裝PHP就好了~
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5 //註釋:上面的安裝是爲Apache2安裝PHP5的支持。 sudo /etc/init.d/apache2 restart
出現錯誤:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
參考:ubuntu 14.04 apache2 服務重啓出現 AH00558...
在/etc/apache2/apache2.conf配置文件中加入:
ServerName localhost
修改後重啓Apache2
sudo vim /var/www/html/test.php
輸入
<?php echo "Hello RMEGo!"; ?>
訪問:http://服務器ip/test.php
若顯示的是Hello RMEGo
,就說明配置成功了。
在配置Nginx以前,咱們先要爲Apache2和Jexus作一些更改,默認他們使用的都是80端口,然而咱們須要把80給Nginx,若是是一個PHP站點則轉發到Apache2上,若是是ASP.NET站點,則轉發到Jexus上,我相信沒有人閒到同一個站點同時用PHP和ASP.NET吧╮(╯_╰)╭,若是有的話,能夠轉發到Jexus上,而且啓用Jexus的Fast-CGI來使用PHP,這裏就不詳細討論了。
sudo vim /etc/apache2/ports.conf
將Listen 80
改成Listen 8081
或者其餘你以爲合適的端口,只要不和其餘端口衝突就行。
而後,再改變默認站點的端口
sudo vim /etc/apache2/sites-available/000-default.conf
將第一行的<VirtualHost *:80>
改爲<VirtualHost *:8081>
固然,這裏8081不是必定的,可是要和上面咱們修改的一致。P.S.這句話等因而廢話,反正配置完了默認站點要刪除的,配置新站點的時候注意端口同樣吧。
重啓Apache2,測試是否能從8081端口訪問,而不能從80端口訪問。
http://ServerName:80/ //ServerName換成域名或者服務器IP,測試結果應該爲"載入頁面時到服務器的鏈接被重置。"(火狐) http://ServerName:8081/ //此時測試結果應該爲Apache2默認頁 It works.
Jexus好像沒有全局使用端口的說法,直接進入到站點配置裏面把默認站點的端口改爲8082吧,也能夠是你以爲不衝突的端口,注意之後添加站點的時候使用一樣的端口就好了。
sudo vim /usr/jexus/siteconf/default
打開以後,有一個很顯眼的port=80
在上面,修改爲port=8082
,保存退出便可。
剛剛不立刻添加開機啓動的緣由,就是由於你們都在用80端口,因此會出現端口占用,沒法啓動的狀況,如今將Jexus和Apache2的端口都分開了,再來添加Jexus的開機啓動吧。
sudo vim /etc/init.d/rc.local
在文件的最後加上
/usr/jexus/jws start
而後執行sudo reboot
重啓服務器,再看看服務是否正常吧。
重啓以後,運行:
sudo /usr/jexus/jws status
若是顯示的是Jexus is Runing,那麼就成功了。
而後去瀏覽器測試一下:
http://ServerName:80/ //ServerName換成域名或者服務器IP,測試結果應該爲"載入頁面時到服務器的鏈接被重置。"(火狐) http://ServerName:8081/ //此時測試結果應該爲Apache2默認頁 It works. http://ServerName:8082/ //此時測試結果應該爲Jexus的默認頁,或者是Jexus報出的404錯誤。
大功告成,接下來就差Nginx了呢~!
sudo apt-get install nginx
通過查閱多處文章和闊空晴雲的指導,Nginx反向代理的配置大概以下:css
jpg
js
png
gif
等靜態內容,直接由Nginx處理。php
等php內容,反向代理到8081端口,也就是Apache2,給Apache2處理。aspx
cshtml
等ASP.NET內容,反向代理到8082端口,也就是Jexus。
P.S. 對於使用PHP的,靜態內容交給Nginx,非靜態內容的任何內容都反代給Apache2,這樣等於咱們仍然還能夠照原來使用Apache2的習慣去作僞靜態等等的配置。一樣的,對於使用ASP.NET的站點則除靜態內容以外,都交給Jexus來處理。
我的認爲,避免Apche2和Jexus混用纔是上上策。至少我感受我會亂掉。 QAQ
這樣前Nginx,後Apache+Jexus的環境就算配好了,若是須要使用到其餘的環境,能夠獨立配置好服務器,設置爲其餘端口,而後再在nginx中加入反代的處理。
Nginx配置筆記(待補充)