要利用 LinkStation 來架各種網站(個人網頁、Blog、Wiki 還是討論區),不能或缺的是 Linux 上必備的 AMP (Apache + MySQL + PHP),有了這些基本服務,只要抓程式碼回來解壓縮、做點調整,就可以提供各種 Web-based 的服務和功能。
第一個動作先來裝 Apache 這個 Web Server:
apt-get install apache2
安裝完畢,系統會自動啟動 Apache 服務(啟動過程會看到一點錯誤訊息,先不管),可以用瀏覽器試連網址:http://機器的IP位址,連上成功瀏覽器上會有「It works!」字樣。因為還沒搞好設定的部分,我們先停掉服務:
/etc/init.d/apache2 stop
如果未來有執行 Perl/CGI 的需求,記得要順道安裝給 Apache 用的 Perl 套件:
apt-get install libapache2-mod-perl2
接下來是調整主要設定檔。所有 Apache2 相關的設定檔都在 /etc/apache2 目錄下,以前可以在 /etc/apache2/apache2.conf 裡面一次搞定,現在卻要分散到各處來設定 XD。首先是 Apache 服務執行時預設的編碼語系。目前主流預設都是 UTF-8,但是 Apache 卻是 ISO-8859-1,先編輯 charset 設定檔:
nano /etc/apache2/conf.d/charset
把 AddDefaultCharset UTF-8 前面的 # 刪掉,這樣服務器預設使用的編碼就會是 UTF-8 了。而 Apache 服務的連接埠設定,在檔案:/etc/apache2/ports.conf 裡面,預設是 80,沒要更動所以不用改。接下來設定需要用到的用戶和群組,看 apache2.conf 裡面提到它是連結到檔案 /etc/apache2/envvars,裡面的內容是:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
...
顧名思義,它定義了執行時 Process 的身份、群組和 ID,預設用的是 www-data,為了好看 (?!)、還有和其他服務共享的目的,所以我新增一個帳號 www,並且更改群組到 users,要手動修改帳號資訊,要編輯 /etc/passwd:
nano /etc/passwd
在最後面新增一列:
www:x:106:100:www:/home/www:/bin/false
並且把 envvars 的內容改成:
export APACHE_RUN_USER=www
export APACHE_RUN_GROUP=users
....
新增的帳號名稱是 www,帳號 ID 是 106 (請自己找一個不重複的)、群組 ID 是 100 (屬於 users 這個群組,不確定可以看 /etc/group 內容)、帳號說明以及所屬根目錄 /home/www(這個目錄請自行建立、chown & chgrp 給 www & users),而且也不允許一般登入。以上非硬性規定,可以根據個人需要調整。還記得安裝完、服務自動啟動看到的錯誤訊息嗎?訊息像是:
Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
原因是服務不認得所在機器的名稱,只要在設定檔裡加入機器的 alias 就能排除這個訊息(其實不影響服務啟動),編輯設定檔:
nano /etc/apache2/httpd.conf
加入一行(用系統預設的 hostname):
ServerName %h
該服務的基本設定到此差不多就搞定了,接下來要設定的是網站實際網頁檔案放置的目錄,也就是網頁對外提供服務的根目錄。這裡先處理預設的網站,系統裝好用的預設目錄是 /var/www,對應到網站的根目錄 (http://localhost),要修改關於預設站台的設定檔:
nano /etc/apache2/sites-available/default
範例的設定檔內容為:
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot /home/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi/ /home/www/cgi-bin/
<Directory /home/www/cgi-bin>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
...
</VirtualHost>
以上已經把 www 的目錄指定到 /home/www,也就是把預設網站的網頁根目錄從 /var/www 改到 /home/www。原先的 cgi 目錄指定到 /usr/lib/cgi-bin/,這裡移到 /home/www/cgi-bin/ 下面(目錄也要記得自己建啊),方面網站檔案管理。最後有一段關於 doc 的 alias,完全沒用所以我就拿掉了。最後記得把剛剛那個會顯示「It works!」的網頁檔案複製到新目錄:
cp /var/www/index.html /home/www
啟動伺服器囉(以上設定都正確的話,應該沒有任何錯誤訊息):
/etc/init.d/apache2 start
接下來檢驗服務是否有啟動(每個服務驗證都適用喔):
nmap localhost
裡面應該要有一筆 Port 80 的記錄(像這樣:80/tcp open http),代表服務在跑囉~然後用你的瀏覽器直接連 http://機器的IP位址,一樣看到「It works!」就成功啦!既然上面有裝 CGI 用的 Perl,這裡一定也要測試一下,在設定放 CGI 的目錄下建立一個檔案:
nano /home/www/cgi-bin/test.pl
裡面的內容是:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World!";
存檔後離開,記得更改成可執行檔的屬性(chmod a+x /home/www/cgi-bin/test.pl),然後用瀏覽器連網址:http://機器的IP位址/cgi/test.pl,如果有看到「Hello, World!」,那麼 Perl CGI 也運作正常啦!
如果要在 Apache 上面做 Virtual Host (不同網址、指定到同一個 IP、卻指向不同目錄的網頁目錄),在 /etc/apache2/sites-available 目錄下建立一個設定檔,假設以網域名稱當檔名 (範例的網域叫做 forum.test.com,而對應到的實體路徑是 /home/www/forum):
nano /etc/apache2/sites-available/forum.test.com.conf
然後貼入以下內容(請依網域名稱和網頁目錄更改):
<VirtualHost *>
ServerAdmin webmaster@localhost
Servername forum.test.com
DocumentRoot /home/www/forum
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /home/www/forum>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
在 /home/www/forum 放入一個測試的首頁檔,接下來在 /etc/apache2/sites-enabled 目錄下建立虛擬網站的連結(該目錄應該已經有一個上述 default 的網站連結),以上面的設定檔為例:
ln -s /etc/apache2/sites-available/forum.test.com.conf ./001-forum.test.com
接著重啟 Apache (/etc/init.d/apache2 restart) ,虛擬站台 forum.test.com 就可以生效了(可以開瀏覽器連連看)!搞定網頁伺服器,依照順序 (A、M、P),接著來安裝 MySQL:
apt-get install mysql-server
安裝過程會要求你輸入 MySQL Server 資料管理員 root 的密碼(和系統 root 帳號不一樣),安裝完也會順便啟動服務,可以用下面的命令(和剛剛設定的密碼)去檢查:
mysqladmin -u root -p ping
如果想實際登入,用命令列操作本機的資料庫,可以用以下命令:
mysql -p
這樣預設是以管理者帳號 (root) 登入本機 (localhost),只要輸入剛剛建立的密碼就行了(登入後可以用命令 'show variables;' 看看目前預設的參數設定)。資料庫編碼和語系的問題很常見,尤其是中文亂碼,所以在裝完資料庫後直接設定 Daemon 和 Client 的編碼方式,強制全都用 UTF8,這樣就一勞永逸了~先編輯設定檔:
nano /etc/mysql/my.cnf
裡面找到兩個 Section,分別是 [mysqld] 和 [client],各加入以下設定:
[client]
....
default-character-set = utf8
[mysqld]
...
default-character-set = utf8
init-connect = 'SET NAMES UTF8'
編輯完後存檔,重新啟動 MySQL:
/etc/rc.d/init.d/mysql restart
這時候就搞定資料庫預設編碼的問題啦(一樣可以用 mysql -p 登入資料庫,用 'show variables;' 看看目前關於編碼的參數,原來 character_set_xx 和 collation_xx 後面有 latin1 字集的設定,應該都變成 utf8 了)!至於登入之後有什麼命令、怎麼使用資料庫,請參閱中文參考手冊。最後把 PHP 支援給裝上,主要包括 PHP5 (for Apache),對 MySQL 資料庫和加密功能的支援:
apt-get install php5 php5-mysql php5-mcrypt
完成之後就通通搞定了。以上套件都安裝完先不要重啟,還有設定要改。接下來對 PHP 做設定,編輯設定檔:
nano /etc/php5/apache2/php.ini
搜尋 (Ctrl+W) default_charset,原來是 iso-8859-1,改成:
default_charset = "utf-8"
現在可以重啟 Apache 了 (/etc/init.d/apache2 restart)。要驗證 PHP 能不能動,可以做一個測試檔,然後看看能不能顯示完整的 PHP 和相關功能。在網頁目錄下做一個 test.php (nano /home/www/test.php),填入下面的內容:
<?php
phpinfo();
?>
接著用瀏覽器連接 http://機器的IP位址/test.php,測試正常的話會秀出 PHP 的資訊。有了 PHP,我們來裝一套一套透過 PHP 來管理 MySQL 的網頁工具:PHPMyAdmin,為求安裝單純和程式的最新版,我們不用套件安裝的方法來做 (apt-get install phpmyadmin),抓最新版解壓縮就能用了。直接上官網、到下載頁面找最後的版本,複製連結後在 LinkStation 裡再 wget 下載。舉個例子來說明,我下載的是 3.1.4 全語系版,下載並解壓縮在 /tmp 下面(以下連結不一定能用,請確定官網的最新連結和檔名),把整個目錄改名稱搬到我們預設的網頁根目錄下 (/home/www)、最後刪除用不到了的壓縮檔:
cd /tmp
wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-3.1.4-all-languages.tar.bz2
tar -xjf phpMyAdmin-3.1.4-all-languages.tar.bz2
mv phpMyAdmin-3.1.4-all-languages /home/www/phpMyAdmin
rm -f phpMyAdmin-3.1.4-all-languages.tar.bz2
接下來要做個設定檔(預設沒有),並且自訂一個 cookie secret 這樣 phpMyAdmin 才能動(本步驟是參考官網的 Quick Install):
cp /home/www/phpMyAdmin/config.sample.inc.php /home/www/phpMyAdmin/config.inc.php
nano /home/www/phpMyAdmin/config.inc.php
找到下面這一行,填入一段十六進位的亂數,長度內容不限(下面紅色那個是範例,請訂自己專用的):
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; // use here a value of your choice
這樣就搞定了。 瀏覽器輸入 http://機器的IP位址/phpMyAdmin,用剛剛安裝 MySQL 那組帳號 (root) 和密碼就能登入。如果嫌 phpMyAdmin 名字太長,可以去更改網頁根目錄下面 phpMyAdmin 這個目錄名稱就行了。登入後,可以仿造 root 權限新增一個資料庫管理者帳號,像是 admin,設定完整權限後再砍掉原先的 root 帳號,會比較不容易和系統 root 搞混。(如果愛用命令列登入的,因為管理者帳號不是 root 改成 admin 了,記得用 mysql -u admin -p 來登入)
備註:後來發現登入 phpMyAdmin 常有奇怪的警告,雖然好像不理也沒關係,但一直有個問題總不大舒服,因此這邊加註解決方法。
1. 關聯資料表的附加功能未能啟動。這是因為預設 phpMyAdmin 需要在 mySQL 裡面有一個自己用的資料庫,剛灌完 mySQL 當然沒有、phpMyAdmin 也不會自己建,所以要自己手動處理。先用 mysql -p -u admin 登入 mySQL 資料庫,建立需要的資料庫:
create database phpmyadmin;
用 quit 登出後,用預先定義好的 table 資料匯入剛剛建好的資料庫 phpmyadmin:
mysql -p -u admin < /home/www/phpMyAdmin/scripts/create_tables.sql
接著編輯 phpMyAdmin 的設定檔(/home/www/phpMyAdmin/config.inc.php),移掉 Advanced phpMyAdmin features 下面十行前面的 "//" remark 符號,登出再重新用 phpmyadmin 登入就沒有這個訊息了。
2. Server running with Suhosin. Please refer to documentation for possible issues. 這是提示有啟用 Suhosin 的 PHP 保護機制,要你去調整一些參數有的沒的(請自行瞭解那是幹嘛的),討厭看到這個紅字的,可以到設定檔最後加上如下關閉 warning 提示的參數就行了。
$cfg['SuhosinDisableWarning'] = true;
相關軟體差不多都設定完了,為避免未來安裝其他程式和存取共用的問題,可以把整個網頁根目錄 (/home/www) 的使用者和群組通通設定成上述我們新增的那個工作帳號 (www) 及所屬群組 (users):
chown -R www:users /home/www
到此 AMP 就都安裝設定完畢,現在我們有一個強大的網頁伺服器 Apache、還可以設定虛擬站台,有 PHP5 的支援,還有一套 MySQL 資料庫,這個資料庫還有 Web 介面的管理工具:PHPMyAdmin,有了這些個軟體環境,不管單純做個網站,還是要架設討論區、Blog,都可以很容易地架設起來了。
回應: 7
請問大大是否有安裝好的LinkStation HG改機環境可以提供下載
因為我在安裝大大所寫的AMP的安裝設定
發生了問題 好像是apache有新版的 照成後續的安裝動作無法完成 請問大大有安裝好的備份檔嗎 或是 安裝過程中所需的所有軟體可供下載 感恩~
To jason: 抱歉,我並沒有提供什麼改機環境、備份檔或軟體下載。
請問大大是否可以提供LinkStation HG改機所需要的軟體 現在網路很多新版軟體 造成安裝上的困難 多謝大大幫忙
喔 那這樣的話 只能用LinkStation 提供的陽春功能了 感恩~
可否請你教我LS_GL改機嗎?可以付若干的費用做給我上一課好嗎?因為我一直安裝不起來了....
To Chungmin:
付費上課?我倒從來沒想過這回事。我自認沒有強到能開課啦,遇到問題我也不一定能解決,改機單純只是靠熱血和前人的耕耘,我只不過只是整理改機的步驟和個人想法罷了。
其實改機並不是給一般沒經驗的人來玩的,不過既然你買了、開始做,你可以參照我的步驟一個個做,有問題在發問,看是卡在哪裡,自我學習的部份多參照 Linkstation 的論壇、鳥哥的 Linux 筆記或自購 Linux 書,只要有那個心還是搞得起來的。要不然,只好付費請別人幫你改好,要上一課就能統統搞定,應該沒有人敢做這樣的保證吧!
http://0rz.tw/e74TL
http://0rz.tw/f84Yf
大大這各有救嗎???^^
張貼留言
歡迎留言或發表意見,不過要理性、不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除或無視喔!