大家都聽過linux很適合用來當伺服器,Ubuntu是最多人熟悉的linux版本,現在就來說明如何在Ubuntu上架設網頁伺服器
來架設屬於自己的網頁吧!
本篇使用LAMP架構L:Linux作業系統 A:Apache網頁伺服器 M:MySQL資料庫 P:PHP
1.安裝及設定Apache
apache是apache軟體基金會研發的open source網頁伺服器,目前到2.4.25版
進到/etc/apache2,所有與apache相關的檔案全在這裡
首先打開設定檔apache2.conf(記得用root權限打開),apache2.conf包含apache主要的設定
找到Global configuration,從這裡以下開始設定
ServerRoot "(路徑)" apache設定檔所在的目錄,例如設定擋在etc的apache2這個目錄裡,就是"/etc/apache2",最右邊不要加/,預設有mark掉,要把#拿掉才會生效
Timeout (秒數) 設定client端多久沒反應就自動踢出
KeepAlive On/Off 是否讓client端建立一次連線可以對server發出多次request,打開可以讓client一次連上後同時做多件事(例如同時上傳下載多個檔案),不用每次都要重新連接
MaxKeepAliveRequests (數量) client端每次連線可以同時從網頁下載的檔案數,0為無限制
KeepAliveTimeout (秒數) client端上次發出request後多久沒再發出request即自動踢出
HostnameLookups On/Off/Double 紀錄每個連上的client的方式,On會紀錄client的網域名稱,Off會紀錄client的ip,Double兩者都會紀錄
下面有一個<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都可以使用這個目錄當網頁,特別規定者除外
預設只有三個目錄,當然也可以自己加入想要當網頁的目錄,格式與上面的一樣
打開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>
打開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,這就是為什麼很多網頁的網域名後面會有/囉
2.安裝及設定PHP
PHP是伺服器端script,是給伺服器看的,不像html、CSS、javascript是給瀏覽器看的,所有與伺服器相關的動作(存取資料庫、在伺服器端讀寫檔案、與其他伺服器端的程式溝通)都必須由PHP達成,安裝php後網頁伺服器(Apache)才能編譯所有.php檔,雖然簡單的不涉及後端的網頁可以不用PHP,但大多數網頁都需要使用,至於PHP語法這裡不提
以下指令安裝php
到/etc/php/(php版本)/apache2裡,會看到php.ini,它是php的設定檔,打開它
找到allow_url_fopen、allow_url_include,確定它們是On
找到post_max_size,這個參數是以POST方法傳送表單的最大容量限制,0是無限制,如果太小,會發現在上傳檔案時跑很久,有可能是這個原因
此外,upload_max_filesize和memory_limit這兩個值也檢查一下,三個參數的大小關係必須是memory_limit>post_max_size>upload_max_filesize
在terminal打a2enmod php7.0,這個指令是啟動php用的,看到Module php7.0 already enabled表示php已啟動
service apache2 restart重新啟動apache
打開/etc/apache2/mods-available/php7.0.conf
裡面是如下畫面
在</FilesMatch>下面加上
<FilesMatch ".\.html$">
SetHandler application/x-httpd-php
</FilesMatch>
如下
php部分完成
3.安裝及設定MySQL資料庫
MySQL是一種資料庫,除了儲存資料,還提供查詢、排序(sort)、刪除、分類、合併、分開等功能,它以表單欄位的形式儲存資料,可以由PHP下達指令自動化操作,MySQL看的是SQL語法,至於SQL語法這裡不提
以下指令安裝MySQL
設定資料庫root使用者(資料庫管理員)的密碼
安裝phpmyadmin
以下按照圖上選擇
設定phpmyadmin登入密碼
下面輸入剛剛root user相同的密碼即可
以下如圖上選擇
port number留白即可
MySQL database name for phpmyadmin設一個自己喜歡的名字
MySQL username for phpmyadmin預設是phpmyadmin,直接確定即可
以下預設是root,直接確定即可
如出現以下畫面,選keep the local version currently installed
打開/etc/apache2/apache2.conf
在IncludeOptional sites-enabled/*.conf底下加一行Include /etc/phpmyadmin/apache.conf
安裝php7.0-mbstring
重新啟動apache
在瀏覽器打http://localhost/phpmyadmin,如出現以下畫面代表成功了,試著用username:root和剛剛設定的root使用者密碼登入
大功告成!😃😃😃
*如無安裝mysql-server會出現此錯誤
*如出現以下錯誤
到/etc/dbconfig-common/phpmyadmin.conf
找到dbc_dbport=' '這行
將它設為0
retry