1. 程式人生 > >PHP搭建伺服器

PHP搭建伺服器

1. 認識網際網路

思考:平常我們上網的時候是怎麼實現的?

引入:上網其實開啟瀏覽器,然後輸入一個URL,最後就看到了網站開啟的效果。

普通使用者訪問網際網路.gif

1.1. 普通使用者訪問網站【瞭解】

定義:URL:Uniformed Resource Location,統一資源定位。是特指網際網路上的一種絕對路徑,一個URL通常包含幾個部分:HTTP協議、主機名和URI。以http://www.taobao.com/index.html 為例。
1.HTTP協議,HTTP協議是網際網路上瀏覽器與伺服器之間進行訪問所規定資料交換規範,通常以http://開始
2.主機名:即伺服器網站的名字,可以通過主機名確定網際網路上對應的某臺提供服務的電腦(主機),通常是www.標誌.com/cn,如www.taobao.com表示淘寶主機


3.URI:Uniformed Resource Identifier,統一資源標誌,是指伺服器上對應要被訪問的檔案從網站根目錄開始對應的路徑,如果在根目錄下的index.html就是/index.html

總結:網站的訪問對於使用者而言非常簡單,其實就是一個輸入URL,然後其他的工作就是瀏覽器與網際網路之間的操作,使用者不需要管理,只管看到最後的結果。但是實際上一個簡單的URL包含了很多資訊。


思考:一個真實的上網環境難道就是這麼簡單的嗎?瀏覽器上輸入一個URL看到的結果到底是怎麼來的呢?

 引入:其實瀏覽器訪問網站本身是一件很複雜的事情,需要通過網路、定位以及軟體服務才最終呈現使用者所看到的效果的。

1.2. 網站訪問實際流程【掌握】

網際網路訪問定義:網際網路的中的網站訪問,本質是一個網際網路上有一臺已知的伺服器,然後使用者知道伺服器對應的“名字”(URL),然後通過URL,再經過網際網路協議(HTTP協議)去自動尋找,並且伺服器提供資料,瀏覽器解析資料的過程。

1.網際網路基本知識

  • 所有計算機在網際網路上訪問到的內容都是由相應的伺服器提供資源
  • 伺服器的本質不是硬體,而是裝有伺服器軟體的計算機
    • 裝有伺服器軟體就可以對外提供對應服務
    • 一臺計算機可以安裝多種服務軟體
  • 所有計算機在網際網路上都有一個唯一的標識代表自己:IP
    • IPV4是由32個位元位組成,轉換成10進位制分成4段,如112.90.32.8
    • IPV6是由128個位元位組成,轉換成16進位制分成8段,如31da:1d3:0:2f3b:2aa:ff:fe28:9c5a
    • 特殊IP:127.0.0.1代表本機電腦
  • 任何軟體都有屬於自己的對外交流的入口:埠(Port),而任何客戶機嘗試訪問伺服器都需要指定訪問的埠(常用的有預設)
    • Web伺服器常用埠:80
    • Telnet遠端登入埠:23
    • FTP伺服器常用埠:21
    • Mysql資料庫伺服器常用埠:3306
  • IP能夠找到電腦,但是使用者記不住,所以需要給IP設定一個別名方便使用者記住,這種別名叫做域名(Domain Name)
    • 域名的存在純粹是為了方便使用者記住:www.baidu.com
    • 域名可以分為頂級/一級域名(.com/.cn/.org/edu),二級域名(baidu.com),三級域名(www.baidu.com)以此類推
  • 域名是人為的不具有唯一性,要找到伺服器只能通過IP,所以計算機需要將使用者輸入的域名轉換成對應的IP地址才能找到伺服器,這個過程叫做域名解析,提供該服務叫域名系統DNS(Domain Name System)
    • 提供服務的產品公司將域名和伺服器IP維護到DNS上(收費)
    • 本地域名解析,可以使用計算機自帶的本地域名系統hosts檔案(C:\Windows\System32\drivers\etc\hosts)

2.網際網路真實訪問流程 網站實際訪問過程.gif

總結:網際網路的訪問站在使用者角度操作簡便,但是站在一個網站服務提供的角度,需要提供硬體、軟體和協議的各種支援,最終才能實現資料的使用者共享。


思考:伺服器的本質是為其他計算機提供服務,那麼如何區分伺服器呢?

引入:伺服器的區分是根據伺服器安裝的軟體提供的服務型別來區分和命名的,當然也有根據伺服器的硬體來區分專業和普通之說。 服務分類.png

1.3. 伺服器分類【瞭解】

定義:伺服器根據所安裝的軟體不同,分別對外提供不同的服務,根據日常所提供的服務的不同,我們就有了不同的伺服器分類。

1.域控制器-是用於內網中,擔當域的使用者、安全策略和檔案/列印資源等方面的管理,通常是需要連線幾十、幾百、甚至上千個使用者的併發連線。而且域控制器又是整個內間的核心所在,關係著整個公司網路的正常執行。這樣一來,一是穩定性要求就非常高,白色支援長時間不間斷執行;另一方面處理器效能、記憶體和網絡卡效能都要求非常高,只有這樣才能支援這麼多使用者的併發連線。
2.檔案伺服器-要求與域控制器的要求相似,只是在併發使用者數支援方面要求稍低,因為並不是所有網路使用者都會訪問檔案伺服器的。但檔案伺服器是用來儲存網路使用者檔案的,所以在硬體讀寫效能,以及硬碟容量方面的要求較域控制器更高,建議選擇磁碟讀寫效能好的:SCSI、SATA、SAS 介面硬碟。正因如此,在檔案伺服器中通常是採取RAID5以上級別的硬碟陣列,一方面用於提高檔案伺服器的檔案讀寫效能,另一方面也進一步提高檔案伺服器中的資料安全。
3.Web伺服器-主要特徵是併發連線多(不僅是指併發使用者,因為一個使用者通常遠不止開啟一個網頁,而每開啟一個網頁都是一個單獨的連線),另外,同樣需要相當的穩定性。併發連線多的需求就要求伺服器的硬碟讀取效能,以及網絡卡的連線效能非常高,另外也要確保伺服器處理器能力有足夠的保障。
4.FTP 伺服器-效能需求與Web 伺服器也類似,但FTP 伺服器在併發連線方面要比Web 伺服器要求稍低,但FTP 伺服器一般都允許使用者上傳檔案,所以FTP 伺服器的硬體讀寫效能方面要求要比Web 伺服器高,而且,所要求的硬碟容量也比Web 伺服器大,也需要選擇傳輸效能更好的SCSI、SATA 、SAS 介面硬碟。在網絡卡方面,儘管併發連線數通常不會如Web 伺服器那麼多,但FTP 伺服器所進行的是檔案傳輸,需要佔用較大的頻寬,特別是大容量;檔案的上傳和下載, 所以要求FTP 伺服器的網絡卡連線效能也非常高。
5.郵件伺服器-就與FTP伺服器比較相近,因為它們都需要允許使用者的檔案讀寫功能。在郵件伺服器中,除了要為使用者提供郵件接收功能外,還要為使用者提供郵件傳送的功能。一方面要求郵件伺服器的硬碟容量比較大,另一方面也要求郵件服務榕的硬碟讀寫能力非常強。當然郵件伺服器的網絡卡連線效能更是不可忽視的,否則郵件的接收和傳送佇列無法及時完成。
6.資料庫伺服器-效能要求相對前面幾種伺服器來說就更加高了。因為資料庫伺服器在呼叫檔案和程式時不像前面介紹的伺服器那樣是直接訪問的,而是通過各種索引、條件比較、動態頁面訪問、頁面提交等方式從分佈在各資料檔案中抽取的一些或全部欄位,濃度更大,更需要消耗伺服器的CPU 、記憶體和硬碟等資源。在CPU 的選擇方面,目前的高高主頻、多核、多執行緒處理器(如Intel 的雙核、四核至強處理器,AMD 的雙核、四核Opteron 處理器, IBM的四核 Powers 、雙核Power幣,以及Sun 的四核ULtraSPRC Tl 和八核ULtraSPRC T2 處理器等)是比較好的選擇,記憶體通常是需要在8GB以上的。另外,資料庫資訊條數通常是幾十、上百萬級的,整個資料庫存檔案所需要佔用的硬碟容量非常大。再加上資料庫中的資料對於企業使用者來說特別重要,所以對於資料庫伺服器的資料通常是採取像RAID5 以上級別的硬碟陣列技術來保障硬碟讀寫效能和資料安全的。所以資料庫伺服器的選擇應該特別慎重考慮。當然,資料庫伺服器的網絡卡效能也不可忽視,否則即使資料庫伺服器本身效能非常商,終端使用者仍無法及時得到正確的響應。
7.VoD 伺服器-強調的是實時性,而且所傳輸的是非常消耗資源的流媒體,從總體上來說,對伺服器的要求堪與資料庫伺服器媲美。這一方面要求VoD 伺服器的流媒體處理作能非常高,記憶體資源非常足,硬碟容量非常大,硬碟讀取和穩定效能都非常高;另一方面要求VoD伺服器的網路連線頻寬足夠寬,連線效能足夠好。

Web伺服器:一般指網站伺服器,是指駐留於因特網上某種型別計算機的程式,可以向瀏覽器等Web客戶端提供文件,也可以放置網站檔案,讓全世界瀏覽;可以放置資料檔案,讓全世界下載。目前最主流的三個Web伺服器是Apache Nginx IIS。伺服器使用HTTP(超文字傳輸協議)與客戶機瀏覽器進行資訊交流,這就是人們常把它們稱為HTTP伺服器的原因。

總結:伺服器的分類非常簡單,根據提供的服務區分即可。那麼在接下來的學習過程中,我們主要是從事Web開發,因此需要對Web伺服器進行深入瞭解。


思考:Web也就是網站的訪問就是之前所瞭解的網站訪問流程那樣簡單嗎?

引入:之前所瞭解的Web訪問流程確實就是Web服務的基本架構,這一點不會改變。但是隨著使用者需求的改變,隨著服務質量的提升,Web的發展也是經歷過階段提升的。

1.4. Web發展史【掌握】

定義:Web的發展一共經歷了兩個階段,俗稱Web1.0和Web2.0,站在開發者和使用者的角度來說就是靜態網站和動態網站。

  1. Web 1.0(資訊共享) Web技術發展的第一個階段就是靜態技術階段,在這個階段,HTML語言就是Web向用戶展示資訊的最有效載體。在這個階段,是以編輯為特徵,網站提供給使用者的內容是網站編輯處理後的,使用者閱讀網站提供的內容,這個過程是網站向用戶的意向行為。 靜態網站訪問流程.gif

總結:最開始在Web1.0時代,只需要一個Web伺服器軟體(Apache/Nginx/IIS)就可以實現網站服務。

  1. Web 2.0(資訊共建) web技術發展的第二個階段是動態技術階段,在Web 1.0時代,Web伺服器會返回整個頁面或者文件,但隨著動態指令碼語言的出現(ASP、JSP和PHP),使得使用者可以在獲取資訊的同時還能提供資訊,並且可以將提供的資訊分享給其他使用者。在這個階段加強了網站與使用者之間的互動,網站內容基於使用者提供,網站的諸多功能也由使用者參與建設,實現了網站與使用者的雙向互動交流,Web2.0不同於Web1.0的最大之處在於它的互動性,使用者擁有自己的資料,並完全基於WEB,所有功能都能通過瀏覽器完成。 動態網站訪問流程.gif

總結:在進入Web2.0時代後,純粹的Web伺服器就不能滿足要求,需要多種服務軟體共同配合才行,搭配方式就是:作業系統+Web伺服器+動態語言直譯器+資料庫伺服器。全球使用的PHP開發的Web網站基本就是兩種:LAMP或者WAMP

  • LAMP:Linux(作業系統)+Apache(Web伺服器)+Mysql(資料庫伺服器)+PHP(指令碼語言直譯器)
  • WAMP:Windows(作業系統)+Apache+Mysql+PHP

思考:隨著Web2.0的到來,出現了動態指令碼語言PHP,那麼PHP到底是什麼?

引入:其實PHP只是一種為了動態網站應運而生的指令碼語言,同時代還有很多能夠實現動態網站的語言,比如ASP和JSP,但是PHP因為其開源免費的性質,以及簡單易用的特性深得網站開發者的喜愛。

1.5. 認識PHP【瞭解】

定義:PHP種執行在伺服器端的可以嵌入到HTML指令碼/程式語言,是一種簡單的、面向物件的、解釋型的、健壯的、安全的、效能非常之高的、獨立於架構的、可移植的、動態的指令碼語言。是一種廣泛用於 Open Source(開放原始碼)的尤其適合 Web 開發並可以嵌入 HTML 的多用途指令碼語言。它的語法接近 C,Java 和 Perl,而且容易學習。該語言讓 Web 開發人員快速的書寫動態生成的網頁。

  • PHP前身:Personal HomePage,個人主頁,使用Perl語言開發的用於追溯訪問其部落格的使用者資訊
  • PHP:PHP Hypertext Preprosessor,php超文字前處理器,底層使用C語言
  • 伺服器端:意味著必須依賴在伺服器端解析,瀏覽器不能解析
  • 解釋型:指令碼執行時才編譯,而且每次執行都需要編譯
  • PHP常用版本:目前市面上常用的PHP版本為php5(2004年)和php7(2015年)

總結:PHP是一種市場應用廣泛的動態網站開發的指令碼語言,佔據了市場全部網站開發的80%以上,因此市場對於PHP程式設計師的需求旺盛。而PHP的語法間接性、擴充套件庫的全面性能夠讓初學者快速掌握動態網站開發的奧義。


2. 搭建伺服器

思考:作為一名開發人員,如何將自己的網站讓網際網路上其他的電腦能夠訪問呢?

引入:網站想要讓其他使用者訪問,其實就是讓其他使用者知道你有一臺Web伺服器,而且知道伺服器所在的地址即可。

2.1. 搭建基礎Web伺服器【掌握】

定義:基礎Web伺服器,就是在電腦上安裝一個對應的Web伺服器,能夠對外提供本地已有的網頁資源(靜態網頁)。而與PHP配合最好的Web伺服器無外乎兩種:Windows下通常是Apache,而Linux下可以是Apache或者Nginx。Windows系統通常初學者都比較熟悉,因此第一臺基礎Web伺服器就是在Windows下安裝Apache。

1.獲取Apache:apache官網,但是下載步驟還比較麻煩(大家也可以百度一下如何下載),直接給大家一個下載連結: Apache2.4下載注意選擇系統對應位數(64位和32位)

2.解壓檔案

3.將Apache24資料夾複製到安裝目錄:案例地址D:/server/

Apache安裝1.png 4.檢視檔案目錄

Apache安裝2.png 5.修改配置檔案:配置網站預設站點

  • ServerRoot:伺服器所在目錄:D:/server/Apache24 Apache安裝3.png
  • DocumentRoot:網站預設根目錄:D:/server/Web(為了方便新建一個Web資料夾,學習通常可以放到預設網站根目錄:Apache/htdocs)
  • Directory:許可權控制,指定與網站預設根目錄一致:D:/server/Web

Apache安裝4.png 6.開啟windows控制檯:Windows選單->windows系統->命令提示符(當前我的系統的win10,不同系統可能路徑不同),然後使用管理員身份(郵件->管理員身份執行)開啟

Apache安裝5.png

以後建議使用快捷鍵:win鍵+R鍵(同時按),然後輸入cmd命令(常用)

Apache安裝6.png

進入到控制檯介面

Apache安裝7.png 7.切換磁碟路徑為Apache所在磁碟D盤:直接輸入碟符:D:(帶冒號),然後回車

Apache安裝8.png 8.使用CD命令(Change Directory)進入到Apache的bin目錄下:cd server/Apache24/bin,然後回車

Apache安裝9.png 9.安裝Apache,並將Apache安裝成Windows系統服務,輸入:httpd.exe -k install

Apache安裝10.png 10.第一次安裝後不會自動啟動,需要手動啟動,輸入:httpd.exe -k start(也可以啟用ApacheMonitor(Apache/bin/ApacheMonitor.exe)

Apache安裝11.png 11.結果驗證

Apache安裝12.png 12.修改配置檔案,除去錯誤資訊。找到ServerName,增加一個ServerName 為localhost

Apache安裝13.png 13.通過httpd.exe -t進行配置檔案錯誤檢查

Apache安裝14.png

至此,Web伺服器就安裝完成,如果只是一般的靜態頁網站(純HTML、CSS和JavaScript網頁)就可以通過該伺服器對外發布了。如果要完成對外發布,只需要額外做以下幾件事情:

1.購買或者租用(通常已經安裝好)一臺伺服器安裝上Apache 2.購買一個域名,將Apache的配置檔案中的ServerName由localhost改成對應的域名 3.在購買域名的服務商那裡繫結所購買的域名指向的你伺服器對應的IP地址 4.將網站頁面放到對應的Web資料夾(DocumentRoot所指向的檔案路徑)

總結:基礎Web伺服器就是需要安裝一個Apache即可,隨即可以向外提供對應的網站服務,操作還是很簡單的。


思考:靜態網站通過Apache可以服務,但是如果開發的是一個動態網站,用的是PHP語言,那麼Apache能夠解決問題嗎?

引入:PHP是一種執行在伺服器端的指令碼語言,言外之意需要在伺服器端(Apache)就解析掉,瀏覽器不可識別。而Apache的本質只是從伺服器獲取已有檔案,提供給瀏覽器的功能,並不能解析PHP或者其他動態指令碼語言。因此,想要解析PHP指令碼就必須安裝PHP解釋程式。

2.2. 安裝PHP【掌握】

定義:PHP直譯器是一種能夠將PHP編寫的程式碼解析成HTML格式的程式碼的軟體,它由Zend公司提供,專門解析PHP程式碼。因此伺服器端若需要解析PHP指令碼,就必須通過PHP解釋程式來實現。接下來就在伺服器端實現PHP的安裝。

1.獲取PHP:php官網,獲取最新版本7.2.4,或者直接進入PHP7.2.4下載介面下載(注意下載適合計算機的位數的版本zip檔案,當前電腦為64位作業系統,另外下載的軟體應該是Thread Safety) 2.解壓縮壓縮檔案到D:/server目錄下 安裝PHP1.png 3.為了方便管理,將資料夾名字改成PHP7(至此PHP已經安裝完畢) 安裝PHP2.png 4.掌握PHP常用內容

  • PHP擴充套件:ext(extension)資料夾,存放了PHP所支援的各類擴充套件 安裝PHP3.png
  • PHP執行檔案:php.exe,PHP程式碼直譯器,能夠將PHP程式碼解析成HTML檔案
  • PHP配置檔案:php.ini,預設的PHP提供了兩套配置檔案php.ini-development(開發環境)和php.ini-production(生產環境) 安裝PHP4.png

5.將php.ini-development修改成php.ini格式(建議複製一份php.ini-development然後修改成php.ini) 安裝PHP5.png 6.測試php.exe的功能

  • 在D:/server/Web資料夾下建立一個index.php檔案(需要通過檔案系統修改顯示檔案字尾名,Windows系統預設隱藏字尾名) 安裝PHP6.png
  • 使用編輯器開啟檔案,然後輸入對應的程式碼(不建議使用Windows自帶的TXT編輯器,建議使用程式碼編輯器:editplus/phpstorm/subline) 
  • 在控制檯(CMD)下進入到php.exe所在目錄 安裝PHP8.png
  • 使用命令測試php.exe對程式碼的執行:php.exe -f D:/server/Web/index.php 安裝PHP9.png

總結:PHP的安裝很簡單,PHP也的確能夠將PHP的指令碼解析成對應的HTML檔案。在安裝的過程中沒有過多要注意的東西,但是在安裝路徑上要注意不能使用中文路徑


思考:PHP能夠解析PHP檔案,Apache能夠根據使用者的需求去訪問PHP檔案,但是二者的操作是獨立的,這樣能夠實現動態網站嗎?

引入:PHP與Apache的“獨立”工作無法實現動態網站,因為實際的請求是使用者請求Apache伺服器,而Apache想要的結果是拿到一個PHP檔案並解析成HTML,自己卻做不到。要實現動態網站,就需要Apache在拿到PHP檔案請求的時候,能夠讓PHP直譯器來幫忙解析。

2.3. Apache載入PHP【掌握】

定義:Apache的工作原理是模組化載入工作,即載入某個模組後就可以使用對應模組的功能;而PHP是獨立工作,不具備從網際網路中接收別人請求的能力,二者需要相互協作。協作的模式就是PHP為Apache提供的呼叫功能模組,Apache只需要按照正確的方式去呼叫PHP,並且讓PHP在需要的時候能夠工作即可。

1.找到PHP為Apache提供的模組檔案:php7apache2_4.dll Apache載入PHP1.png
2.在Apache配置檔案中使用LoadModule命令載入PHP模組:LoadModule php7_module php7apache2_4.dll路徑(絕對路徑) Apache載入PHP2.png
3.在Apache中指定需要PHP解析的檔案(以後綴區分):AddType application/x-httpd-php .php .html(多種檔案可以使用空格分離,通常就是php和HTML檔案) Apache載入PHP4.png
4.PHP雖然為Apache打工,但是PHP的執行是獨立的,如果想讓PHP完全服從Apache,需要將PHP的配置檔案載入到Apache中:PHPIniDir php.ini檔案路徑(絕對路徑) Apache載入PHP4.png
5.任何Apache配置檔案修改(包括已經載入到Apache中的php.ini)都需要重啟Apache才能生效:執行Apache->bin->ApacheMonitor.exe,然後重啟 Apache載入PHP5.png
6.測試執行:在D:/server/Web/index.php中輸入phpinfo()函式 Apache載入PHP6.png
7.在瀏覽器中開啟訪問:localhost/index.php 
8.在PHP環境中往下找可以看到,timezone(時區)對應的預設的是UTC(世界標準時間),作為中國開發者應該修改為PRC時區,所以需要在php.ini中找到timezone,並新增一個為PRC(預設註釋掉了) Apache載入PHP8.png
9.重啟Apache生效 Apache載入PHP9.png

總結:Web伺服器要實現製作動態網站,需要Apache和PHP共同協作。而Apache和PHP是獨立的軟體,PHP知道自己的缺點(不能獨立獲取使用者請求),便“委身於”Apache,為Apache提供呼叫模組,Apache就可以在特定情況下呼叫PHP。Apache載入PHP在實際開發中經常用到,而實際的操作只有那麼幾步,務必掌握好。


思考:Apache加上PHP之後的確能夠實現網站的動態效果,但是所謂的動態的很大的前提是根據使用者的需求提供不同的資料,Apache顯然是不能儲存資料的,PHP是否可以做到呢?

引入:PHP是一種動態處理的指令碼語言,能夠在記憶體執行過程中儲存資料,但是所有的資料是基於記憶體的,一旦執行結束,記憶體就會返回給作業系統,意味著資料就會消失。所以PHP本身不能長久持續的保留資料,所以不能夠對外提供資料支援。因此,如果想要持久的資料支援,Apache和PHP還做不到,還需要能夠持久化儲存資料的資料庫支援。

2.4. 安裝Mysql資料庫【掌握】

定義:資料庫是一種能夠持久化儲存資料,同時高效的管理資料的軟體,是為動態網站根據使用者提供不同資料的基礎支撐。mysql資料庫是一種獨立的軟體,是一種在PHP需要的時候通過程式碼去操作的軟體。因此mysql的安裝可以完全獨立出來,不需要在安裝時就與Apache或者PHP關聯(Apache無法操作資料庫)。同時,mysql也是一款開源免費的資料庫產品,深得廣大開發公司的喜愛。接下來就完成Mysql資料庫的安裝。

1.獲取Mysql安裝軟體:Mysql官網,獲取最新版本mysql5.7.21(同樣注意計算機位數)
2.解壓縮檔案,同時把解壓後的資料夾放到Server目錄,即D:/server/下 安裝mysql1.png
3.為了方便管理,把資料夾重新命名為mysql 安裝mysql2.png
4.mysql以後會經常使用,因此先新增系統環境變數:以Windows10為例,郵件“我的電腦”選擇“屬性”,然後點選“高階系統設定” 安裝mysql3.png
5.點選“環境變數”,選中“系統變數”中的“path”,點選下面的“編輯”按鈕,進入到系統環境變數管理介面 安裝mysql4.png6.點選“新建”增加環境變數,並輸入:D:\server\mysql\bin(注意:在Windows下正斜槓“/”和反斜槓“\”都可以作為路徑分隔符),然後點選各種“確定”按鈕 安裝mysql5.png 7.當前mysql的安裝並不是傻瓜式安裝檔案,所以需要在mysql目錄下新建一個配置檔案mysql.ini 安裝mysql6.png 8.在mysql.ini中輸入以下配置內容

[mysqld]  
port = 3306  
basedir=D:/server/mysql  
datadir=D:/server/mysql/data   
max_connections=200  
character-set-server=utf8  
default-storage-engine=INNODB  
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  
[mysql]  
default-character-set=utf8    

安裝mysql7.png 9.在控制檯(CMD)進行命令安裝(管理員身份進入),進入到Mysql的bin目錄,輸入:mysqld.exe -install 安裝mysql8.png 10.進行初始化操作,繼續輸入:mysqld --initialize-insecure --user=mysql 安裝mysql9.png 11.此時會在mysql安裝目錄下多出一個data目錄,用於儲存資料 安裝mysql10.png 12.第一次安裝不會自動啟動mysql,需要手動啟動(以後自動啟動),輸入:net start mysql 安裝mysql11.png 13.預設安裝mysql有一個超級管理員使用者root,但是當前沒有密碼,非常不安全,因此需要修改root使用者的密碼,輸入:mysqladmin -u root -p password 新密碼 安裝mysql12.png 14.在增加新密碼的時候,會讓你輸入舊密碼,而原來沒有密碼,所以直接回車即可 安裝mysql13.png 15.安裝好了之後測試下效果:Mysql是一種C/S結構軟體,因此需要使用客戶端去訪問服務端,mysql提供了自己的客戶端mysql.exe,可以在控制檯(CMD)下通過mysql.exe進行訪問,輸入:mysql.exe(或者mysql) -u使用者名稱 -h主機地址 -P埠 -p密碼 安裝mysql14.png

總結:Mysql資料庫是一種廣泛應用的資料庫軟體,64位的資料庫(Apache也一樣)都是通過配置安裝,如果32位的有安裝檔案(.exe結尾),安裝過程比配置安裝要簡單一點。至此,一個真正有效的動態網站的伺服器環境搭建(WAMP)就搭建完成,我們可以在這種環境下去開發需要的網站了。


思考:Web伺服器已經完成了,可是我們的網站訪問是通過localhost來訪問,但是實際上網路上網站的訪問都不是通過localhost訪問的,這個怎麼實現呢?

引入:localhost訪問通常是開發階段,程式設計師在本地開發和測試的時候使用的,如果部署好對外訪問的話,需要申請公網有效的域名並進行維護。而且通常,程式設計師在開發的時候手上不止一個專案,為了安全和方便,都不會放到一個資料夾,而是分開維護。所以還需要通過Apache來實現多專案開發管理。

2.5. 安裝虛擬主機【掌握】

定義:Apache為了方便使用者開發,也方便伺服器對外提供多個網站的訪問,提出了虛擬主機的概念。虛擬主機是指在一臺計算機上,理論上只能代表一臺主機,但是因為需求需要在一臺電腦上對外提供多個網站服務,Apache可以通過一定的技術手段(配置),讓一臺電腦好像擁有多個主機,這個技術稱之為Apache虛擬主機。

1.虛擬主機分類:Apache虛擬主機根據設定的方式可以分為兩類:

  • 基於IP的虛擬主機:一臺電腦繫結多個IP(多個網絡卡,一個網絡卡一個IP),每個IP針對一個網站;
  • 基於域名的虛擬主機:一臺電腦上只有一個IP,但是通過給不同資料夾命名一個“虛擬”的主機名號,一個資料夾對應一個網站。

2.搭建基於域名的虛擬主機:基於域名的虛擬主機可以在Apache的主配置檔案中httpd.conf下進行配置,但是Apache為了方便配置檔案的管理,將虛擬主機單獨形成了一個配置檔案叫做httpd-vhosts.conf,在主配置檔案同級目錄的extra資料夾下。

①.在主配置資料夾中開啟虛擬主機配置檔案的載入(預設關閉的):httpd.conf 配置虛擬主機1.png ②.在虛擬主機配置檔案中清除已有的示例虛擬主機 配置虛擬主機2.png③.增加基於域名的虛擬主機標籤 配置虛擬主機3.png ④.配置虛擬主機主要資訊:站點位置(資料夾路徑)和主機名,其中站點位置就是本地某個確定要放網頁的資料夾;主機名如果是本地開發隨便取,如果是對外提供服務就應該是一個真實的域名 配置虛擬主機4.png ⑤.許可權配置,許可權是針對資料夾的,通常至少會設定網站的根目錄,實際上目錄可以設定N個

  • Directory:針對指定目錄
  • Require:訪問許可權
    • Require local:本地訪問
    • Require all granted:全部訪問
    • Require all Denied:拒絕所有訪問
    • Require ip 127.0.0.1:允許指定IP訪問(內部訪問)
    • Require not ip 192.168.98.1:禁止指定IP訪問(防止指定攻擊)
    • Require host localhost:允許使用localhost訪問(私有主機)
  • DirectoryIndex:使用者沒有指定訪問指令碼的時候預設提供哪個檔案 配置虛擬主機5.png

⑥.一旦啟動虛擬主機,原來的預設localhost主機便失效,因此需要為localhost配置新的虛擬主機 配置虛擬主機6.png

⑦.所有的修改在重啟Apache後生效
⑧.以上操作只能代表伺服器準備完畢,使用者訪問的話還需要配置DNS(開發時本地hosts檔案) 配置虛擬主機7.png

總結:Apache提供的虛擬主機能夠為一些企業提供一套伺服器對外提供多個網站的服務需求,解決了中小企業很多資金問題(不需要根據網站資料量配置大量伺服器硬體),也能夠讓伺服器實現更大化的利用價值。

注意配置Chorme代理關閉,在httpd.conf中將directory相應更改,配置DirectoryIndex index.php index.html