網頁

2015年7月18日 星期六

[RPi] setup lightweight webserver


其實並不一定需要 webserver 來開放 Raspberry Pi 的遠端存取. 然而, 如果需要存取的時候, 有一些條件判斷, 透過 web server 會是一個方便的途徑. 例如說, Raspberry Pi 上面有兩個 web cam, 雖然可以直接連線, 但是透過 web server 轉址, client 不需要事先知道 Raspberry Pi 上面有幾個 web cam, 可以透過 web 的方式查詢, 就方便許多.
Linux 上面的 Web Server, 一般就是 LAMP, 所謂的 LAMP, 指的就是 Linux + Apache + MySQL + PHP 的軟體組合, 以提供一個完整, 功能強大的 web server, 可以完成一個商用的 web server. 但是我們並不需要一個功能非常強大的 web server, 所以這邊會採用一個輕量級的解決方案 lighttpd.
* 目前我這邊並沒有適合的網際網路環境 (這個說法很怪, 不過最近是這樣). 因此會以 LAN 實作, 要注意的部份是 static IP, 以及 DNS 的設定, 另外 raspberry Pi 上面的密碼也應該要修改. 這部份日後再補上.

Install lighttpd

$ sudo apt-get install lighttpd
出現以下訊息表示 lighttpd 已經安裝完成, 重開機之後就會自動啟動
[ ok ] Starting web server: lighttpd.

Install MySQL

(option) 如果沒有用到資料庫, 這部份其實是可以不用裝. 而且, 由於 Raspberry Pi 在 3.12 之後的版本, 不能正確安裝, 必需要 roll back 到之前的版本. 所以這裡就不安裝. 如果一定要安裝可以用以下的命令先 roll back 到之前的版本
$ sudo rpi-update  f6eef32dd6388c3b04dbf462bd324d93281bf397
$ sudo apt-get install mysql-server

Install PHP

$ sudo apt-get install php5-common php5-cgi php5
這個安裝的順序很重要. PHP5 如果找不到 php5-cgi 會去安裝 Apache, 那就失去我們要安裝輕量級方案的用意了.

Set Directory permission

Web Server 預設會使用到 /var/www 這個目錄, 這個目錄的權限需要做一些設定
$ sudo chown www-data:www-data /var/www
$ sudo chmod 775 /var/www
$ sudo usermod –a –G www-data pi

測試

刪除 /var/www/index.lighttpd.html
新增 /var/www/index.php, 參考以下內容. 注意, HTML copy 的時候, 可能會多出一些不必要的字元.
<?php
  print <<< EOT
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test successful</title>
</head>
<body>
<h1>Hello from Raspberry Pi</h1>
<p>Congratulations.</p>
<p>Your webserver and PHP are working.</p>
</body>
</html>
EOT;
?>

結果

在 IE 輸入網址或 IP Address, 會出現錯誤
image
這是因為 lighttpd 沒有設定對應到 PHP 的問題.
$ sudo apt-get install php5-cgi
$ sudo lighttpd-enable-mod fastcgi fastcgi-php
$ sudo service lighttpd force-reload
然後. 再重新載入網頁, 就可以了.
image

沒有留言:

張貼留言

請提供您寶貴的意見