大家都聽過linux很適合用來當伺服器,Ubuntu是最多人熟悉的linux版本,現在就來說明如何在Ubuntu上架設網頁伺服器

來架設屬於自己的網頁吧!

本篇使用LAMP架構L:Linux作業系統  A:Apache網頁伺服器  M:MySQL資料庫  P:PHP

 

1.安裝及設定Apache

apache是apache軟體基金會研發的open source網頁伺服器,目前到2.4.25版

http01

進到/etc/apache2,所有與apache相關的檔案全在這裡

http02

首先打開設定檔apache2.conf(記得用root權限打開),apache2.conf包含apache主要的設定

http03

找到Global configuration,從這裡以下開始設定

ServerRoot "(路徑)"         apache設定檔所在的目錄,例如設定擋在etc的apache2這個目錄裡,就是"/etc/apache2",最右邊不要加/,預設有mark掉,要把#拿掉才會生效

Timeout (秒數)                 設定client端多久沒反應就自動踢出

KeepAlive On/Off             是否讓client端建立一次連線可以對server發出多次request,打開可以讓client一次連上後同時做多件事(例如同時上傳下載多個檔案),不用每次都要重新連接

http04

MaxKeepAliveRequests (數量)          client端每次連線可以同時從網頁下載的檔案數,0為無限制

KeepAliveTimeout (秒數)                   client端上次發出request後多久沒再發出request即自動踢出

HostnameLookups On/Off/Double     紀錄每個連上的client的方式,On會紀錄client的網域名稱,Off會紀錄client的ip,Double兩者都會紀錄                  

http05

下面有一個<Directory />,這裡設定要對個別目錄內容在網頁上如何呈現,每段代表一個目錄,開頭的<Directory (目錄名)>代表要對哪個目錄設定,結尾用</Directory>結束,夾在中間的是設定項目和參數,例如<Directory />代表對/這個目錄的設定,</Directory>是結尾,中間是設定

Options 

 Indexes:如果這個目錄下沒有首頁檔,就在網頁上顯示出這個目錄下所有檔案的檔名

 ※首頁檔就是在這個網頁首頁對應到的目錄裡叫index.html的這個檔案,內容要用html設計,首頁上的背景、物件、連結等都可以用這個檔設計

 FollowSymLinks:當client連到你的網頁時,apache會讀取index.html,這個參數可以透過連結載入目錄外的index.html,所以有了這個參數,再將目錄外的index.html建一個symbolic link在這個目錄裡,就可以在網頁上顯示index.html的內容了

 ※symbolic link的指令sudo ln -s /(原檔位置、檔名) /(要建立連結的目錄)

 ExecCGI:讓這個目錄有執行CGI程式的權限

 Includes:讓一些server-side include程式可以執行

 MultiViews:在紀錄錯誤的檔案中以多種語言紀錄錯誤訊息,語言種類取決於系統設定

AllowOverride

 ALL:這個目錄的全部權限設定皆可以被client端的.htaccess這個檔覆寫

 AuthConfig:只有網頁認證設定可以被client端的.htaccess覆寫

 Indexes:只有indexes相關的設定可以被client端的.htaccess覆寫

 Limits:可以直接設定client端可在這個目錄下做哪些動作

 None:不可覆寫任何權限設定

 AllowOverride設定為Limits時,直接在<Directory (目錄名)>和</Directory>之間加入

 <Limit A B C....>

 Order allow,deny/deny,allow 

 Allow/Deny from all/(ip位址)

 </Limit>

 A、B、C...是要規範client在這個目錄下的網頁做的事,allow,deny代表基本上允許,特別規定者除外,deny,allow代表基本上不允許,特別規定者除外

 all是對所有的client都用此設定,或可以指定對哪些ip位址的client用此設定

 例如

 <Limit GET POST OPTIONS>
 Order allow,deny
 Allow from all
 </Limit>

 代表允許所有client在這個目錄的網頁做GET、POST、OPTIONS這些動作,特別規定者除外

Require all denied:所有使用者的apache都不可以使用這個目錄當網頁,特別規定者除外

Require all granted:所有使用者的apache都可以使用這個目錄當網頁,特別規定者除外 

http

預設只有三個目錄,當然也可以自己加入想要當網頁的目錄,格式與上面的一樣

打開apache2目錄裡的ports.conf 

ports.conf設定伺服器要用的port

Listen (port數)                                http協定要用哪個port

<IFModule ssl_module>
Listen (port數)                                ssl協定要用哪個port
</IFModule>

<IFModule mod_gnutls.c>
Listen (port數)                                gnutls模式要用哪個port
</IFModule>                        

2016-12-21 13-54-59 的螢幕擷圖

打開sites-available資料夾,裡面有一個檔名有default的檔,另外在sites-enabled資料夾裡有它的symbolic link,sites-enabled裡放的都是sites-available的連結,所以改其中一個檔兩邊的檔會一起改

打開sites-available裡檔名帶有default的那個檔

ServerName (網域名)            網頁的DNS名稱,必須先註冊過或設定在hosts裡(下面會詳細說明)

ServerAdmin (電郵信箱)        網頁管理員的電子郵件信箱

DocumentRoot (目錄位置)     網頁相關檔案擺放的目錄

當在瀏覽器打上DNS位置,也就是servername,會看到以documentroot設定的目錄為首頁的網頁,如果目錄內有擺index.html這個網頁檔,頁面會顯示網頁檔的內容,如果沒有就要看apache2.conf裡對這個目錄的設定

可以在documentroot目錄下建子目錄,子目錄的網址是documentroot的網域名稱加上/(目錄名),例如網域名稱叫www.example.com,首頁目錄是/var/www/html,如果在/var/www/html目錄裡建一個目錄A,那麼在瀏覽器打www.example.com/A可以進到目錄A,這就是為什麼很多網頁的網域名後面會有/囉

2016-12-24 12-02-04 的螢幕擷圖

2016-12-24 14-39-00 的螢幕擷圖

 

2.安裝及設定PHP

PHP是伺服器端script,是給伺服器看的,不像html、CSSjavascript是給瀏覽器看的,所有與伺服器相關的動作(存取資料庫、在伺服器端讀寫檔案、與其他伺服器端的程式溝通)都必須由PHP達成,安裝php後網頁伺服器(Apache)才能編譯所有.php檔,雖然簡單的不涉及後端的網頁可以不用PHP,但大多數網頁都需要使用,至於PHP語法這裡不提

以下指令安裝php

php01

到/etc/php/(php版本)/apache2裡,會看到php.ini,它是php的設定檔,打開它

php02

找到allow_url_fopen、allow_url_include,確定它們是On

php04

找到post_max_size,這個參數是以POST方法傳送表單的最大容量限制0是無限制,如果太小,會發現在上傳檔案時跑很久,有可能是這個原因

此外,upload_max_filesize和memory_limit這兩個值也檢查一下,三個參數的大小關係必須是memory_limit>post_max_size>upload_max_filesize

2017-09-04 16-37-48 的螢幕擷圖

在terminal打a2enmod php7.0,這個指令是啟動php用的,看到Module php7.0 already enabled表示php已啟動

php05

service apache2 restart重新啟動apache

php06

打開/etc/apache2/mods-available/php7.0.conf

php07

裡面是如下畫面

php08

在</FilesMatch>下面加上

   <FilesMatch ".\.html$">
   SetHandler application/x-httpd-php
   </FilesMatch>

如下

php09

php部分完成

 

3.安裝及設定MySQL資料庫

MySQL是一種資料庫,除了儲存資料,還提供查詢、排序(sort)刪除、分類、合併分開等功能,它以表單欄位的形式儲存資料,可以由PHP下達指令自動化操作,MySQL看的是SQL語法,至於SQL語法這裡不提

以下指令安裝MySQL

mysql00.0

設定資料庫root使用者(資料庫管理員)的密碼

mysql00.1

安裝phpmyadmin

mysql01

以下按照圖上選擇

mysql02

mysql03

設定phpmyadmin登入密碼

mysql04

下面輸入剛剛root user相同的密碼即可

mysql05

以下如圖上選擇

mysql08

mysql09

port number留白即可

mysql10

MySQL database name for phpmyadmin設一個自己喜歡的名字

mysql11

MySQL username for phpmyadmin預設是phpmyadmin,直接確定即可

mysql12

以下預設是root,直接確定即可

mysql13

如出現以下畫面,選keep the local version currently installed

mysql15

打開/etc/apache2/apache2.conf

mysql20

在IncludeOptional sites-enabled/*.conf底下加一行Include /etc/phpmyadmin/apache.conf

mysql21

安裝php7.0-mbstring

mysql22

重新啟動apache

mysql23

在瀏覽器打http://localhost/phpmyadmin,如出現以下畫面代表成功了,試著用username:root和剛剛設定的root使用者密碼登入

mysql24

大功告成!😃😃😃

 

如無安裝mysql-server會出現此錯誤

mysql16

如出現以下錯誤

mysql06.0

到/etc/dbconfig-common/phpmyadmin.conf

mysql06.1

找到dbc_dbport=' '這行

mysql06.2

將它設為0

mysql06.3

retry

mysql07

相關文章