IIS可以掛網站
IIS可以掛FTP
1.啟用IIS服務
控制台 -> 程式集 -> 程式和功能 -> 開啟或關閉 Windows 功能來啟用IIS功能
IIS 管理主控台 & World Wide Web服務
測試 : http://127.0.0.1 成功應該會看見IIS歡迎畫面
2.IIS 點首頁的ASP,設定啟用上層路徑 = true
1.新增虛擬目錄.權限新增everyone (允許 讀取和執行/列出資料夾內容/讀取)
2.在虛擬目錄下放hello.asp
<html>
<body>
<%=now()%>
<%="Hello World!"%>
<%
response.write("Hello World!")
%>
</body>
</html>
3.查看localhost/ASP/hello.asp
網頁資料呈現方式(HTML版)
網頁資料呈現方式(動態頁面)
所以Server端環境建置,需有
1.webservice :IIS
2.後端語言解譯器 : ASP
3.DB : SQLServer
ref
http://ezgo.cajh.chc.edu.tw/course/php/1php.html
網頁資料呈現方式(動態頁面-進階版)
ref
http://bluelove1968.pixnet.net/blog/post/222280096-cgi---html---web-server
PHP解析器 / ASP解析器 都依CGI協定
它是個協定.但什麼是協定?
web server(比如說nginx)只是內容的分發者。比如,如果請求/index.html,那麼web server會去文件系統中找到這個文件,發送給瀏覽器,這裡分發的是靜態數據。好了,如果現在請求的是/index.php,根據配置文件,nginx知道這個不是靜態文件,需要去找PHP解析器來處理,那麼他會把這個請求簡單處理後交給PHP解析器。 Nginx會傳哪些數據給PHP解析器呢? url要有吧,查詢字符串也得有吧,POST數據也要有,HTTP header不能少吧,好的,CGI就是規定要傳哪些數據、以什麼樣的格式傳遞給後方處理這個請求的協議。仔細想想,你在PHP代碼中使用的用戶從哪裡來的。
比如說,如果請求 index.html,web server會去找到這個文件再丟給瀏覽器,但這個只限於靜態文件而已,如果是index.php呢,就需要去找php解析器來處理了,接下來web service就會把這個請求交給php 解析器處理,那會傳那一些資料呢?像是 post或是url還有http header等,CGI就是規定要傳哪些資料、以及怎麼樣的格式
*CGI是規定,就像規定紅燈停,綠燈走.而紅綠燈(PHP Praser)實作了這個規定,看到紅燈停,看到綠燈走.
CGI
在許多的資料庫系統裡,我們必須定義一個標準介面來結合資料庫和 HTML 之間的連接,以期不同的資料庫系統都能提供標準介面的連接方式,使用 HTML 所製作的程式就很容易連結到各種資料庫系統,甚至程式設計師不需要去考慮到底使用何種資料庫統,皆可使用標準模式發展應用程式。
這個標準介面稱之為『共通閘門介面』(Common Gateway Interface, CGI),凡是具有 CGI 介面的程式也稱為 CGI 程式。CGI 程式可由 Perl、C 、或 Java 等程式語言發展。當瀏覽器執行到 CGI 程式時,它會透過 CGI 介面查詢資料庫系統
http://www.tsnien.idv.tw/Network_WebBook/chap6/6-8%20Web-based%20%E7%B6%B2%E8%B7%AF%E6%87%89%E7%94%A8%E6%9E%B6%E6%A7%8B.html
CGI
當web server收到/index.php這個請求後,會啟動對應的CGI Process,這裡就是PHP的解析器。接下來PHP解析器會解析php.ini文件,初始化執行環境,然後處理請求,再以規定CGI規定的格式返回處理後的結果,結束Process。 web server再把結果返回給瀏覽器。
*傳統的CGI接口方式安全性也很差,現在已經很少被使用了。
又模糊了
*CGI是interface (有這樣的說法)
*cgi 是網頁伺服器(用以發放網頁予瀏覽器)和其他伺服器/伺服器上其他程式(用以作其他資料處理工作)之間的中介,因此命名為「Interface」。
*以Perl編寫cgi + cgi可以做到javascript能做的(又模糊了)
*微軟公司開發了一種功能與 cgi 類似的技術,也須在伺服器上處理資料,稱為「ASP (Active Server Page)」,有些人把 ASP 也視作 cgi 的一種,然而,二者技術其實完全不同,不應混為一談。
FastCGI
好了,CGI是個協定,跟Process什麼的沒關係。那fastcgi又是什麼呢? Fastcgi也是個協定,但改善CGI的缺點,提高了CGI Process效能。
提高效能,那麼CGI 的效能問題在哪呢? "PHP解析器會解析php.ini文件,初始化執行環境",就是這裡了。標準的CGI對每個請求都會執行這些步驟(不嫌累啊!啟動Process很累的說!),所以處理每個時間的時間會比較長。這明顯不合理嘛!那麼Fastcgi是怎麼做的呢?首先,Fastcgi會先啟一個master,解析配置文件,初始化執行環境,然後再啟動多個worker。當請求過來時,master會傳遞給一個worker,然後立即可以接受下一個請求。這樣就避免了重複的勞動,效率自然是高。而且當worker不夠用時,master可以根據配置預先啟動幾個worker等著;當然空閒worker太多時,也會停掉一些,這樣就提高了效能,也節約了資源。這就是fastcgi的對Process的管理。
PHP-FPM
那PHP-FPM又是什麼呢?是一個實現了Fastcgi的軟體,被PHP官方收了。
大家都知道,PHP的解析器是php-cgi。 php-cgi只是個CGI Process,他自己本身只能解析請求,返回結果,不會Process管理(皇上,臣妾真的做不到啊!)所以就出現了一些能夠調度php-cgi Process的程式,比如說由lighthttpd分離出來的spawn-fcgi。好了PHP-FPM也是這麼個東東,在長時間的發展後,逐漸得到了大家的認可(要知道,前幾年大家可是抱怨PHP-FPM穩定性太差的),也越來越流行。
所以最後才會造成如果修改php.ini檔案之後,才需要重新啟動php-fpm,原因就是這個樣子
*解析器Praser
*web server網路伺服器
一台提供服務的電腦
一台負責提供網頁的電腦,主要是HTML檔案,透過HTTP協定傳給客戶端(一般是指網頁瀏覽器)。
一個提供網頁的伺服器程式。
每一台網頁伺服器(??)會執行最少一個網頁伺服器程式(??)。
● Apache軟體基金會的Apache HTTP伺服器
● Microsoft的Internet Information Server(IIS)
● Google的Google Web Server
● nginx公司的nginx
● lighttpd公司的lighttpd
ref
https://www.newscan.com.tw/all-knowledge/knowledge-detail-6.htm
ref
https://www.astralweb.com.tw/what-is-differences-between-fastcgi-php-fpm/
王者的解釋
https://segmentfault.com/q/1010000000256516