網路開展事業或在網路創業賺錢的第一步:【架設24小時賺錢網站主機】比網頁設計更優先!

感謝您造訪 Linux主機伺服器架設技術基地。 你可進入替你架設主機.影片教你維護頁面,詳細瞭解Linux主機架設及相關技術維護影片教學(完整配套措施),有主機馬上可以架設網站營運,完全無限制!

租用不如自有主機!聰明的網站經營者都選擇架設Linux主機伺服器做為網站運作平台,因功能完整又強大,免費架站程式超多!完全沒有版權問題,超強『防駭客攻擊與入侵』及安全防護可以讓你無後顧之憂。

                    架設主機.影片教你維護: http://por.tw/linux/new-E_learning/index.php

Linux主機伺服器架設技術基地  維護團隊  敬上
瀏覽模式: 普通 | 列表

網路防火牆的進階功能

網路防火牆的進階功能

隨著安全的需求愈來愈增加,目前的防火牆產品也紛紛提供了一些進階的功能,列舉如下:

◎.整合網路通信協定:
傳統TCP/IP是組不甚安全的協定,應用在網際網路上產生許多安全上的漏洞,但是由於它十分普及,因此有些解決方案是對於內部區域網路的所有主機皆採非TCP/IP的網路協定,而對於必須由TCP/IP服務的主機,可於其中安裝額外的軟體,以令其TCP/IP封包也改採區域網路協定封裝,如此,在內部網路將見不到TCP/IP封包,內部網路的通信皆採特定的區域網路協定,而對外則使用TCP/IP,故安全性較高。
◎.內部轉換:
包括IP轉換與DNS轉換,其目的是保護組織內部的資訊,使其不讓外界知悉。

1.IP轉換:防火牆的內部通常具備一個IP位址的對映機制。
將IP作轉換有兩個好處:
其一是隱藏內部網路真正的IP,使駭客無法直接攻擊內部網路。
另一好處是可以讓內部使用者使用保留的IP,這對許多IP不足的企業是很有幫助的。
2.雙重DNS:
通常的作法是是架設兩個領域名稱伺服器(DomainNameServer),一個負責對外,另一個負責對內,如此外部網路無法獲知企業內部網路的資訊,但不影響內部網路對外界資訊的獲得。
◎.強化的身分識別機制:
一般UNIX主機是一個使用者密碼作為身分識別的機制,但是這種機制會造成密碼在網路上以明碼傳遞,有可能被欄截而得知,並不夠安全。
因此防火牆必須具備至少一種以上的強化身分驗證機制,如讓密碼不要直接在網路上傳遞、或使密碼隨著時間而改變。
防火牆也可以與其他有名的身分識別產品整合。
◎.警告功能(Alarm):
系統被侵入常常是出人意料之外的時機,因此若防火牆軟體能提供通知遠方系統管理者的功能,當嚴重的網路安全事件發生時,可以從電子郵件、甚至以以撥呼叫器等方式來立即通知系統管理者,如此可以爭取時效,立即採取行動。
◎.管理工具:
設計圖形化的管理介面,讓系統管理者易於進行設定、管理及維護。
另外,採用集中式的管理工具,使管理者可以同時管理多個防火牆及伺服器,也是目前防火牆發展的趨勢。
◎.強化作業系統:作業系統多少都有一些安全上的漏洞,使得防火牆軟體容易由作業系統被侵入入。
因此,必須加強防火牆作業系統的安全性,甚至將防火牆直接架在作業系統上,以防範某些網路通信協定或其他原因所造成的安全缺陷。
◎.資料加解密:虛擬私有網路(VirtualPrivateNetwork,簡稱VPN)在目前逐漸受到需求與重視,但它必須對所有網路傳輸內容加密以建立一個虛擬通道,讓不同網路上的使用者可以安全且不受拘束的互相存取,感覺上像在同一個組織內部的網路之中。
所以要達到此功能,防火牆必須能快速、正確地對資料封包加解密,並試圖發展互通的加解密標準。
◎.與防毒軟體的整合:與防毒軟體互相搭配,甚至直接整合,以同時具備防火牆與防毒的功能。
◎.JAVA與ActiveX:JAVA與ActiveX在網路上帶來了一些網路安全的潛在性危機,例如用JAVA寫成的Applet雖然豐富了網頁,但使用者只要連上網頁,等於是把Applet程式抓回自己的機器來執行,有時會存取到機器上不該存取的部分,而造成一些訊息的流出,因此在其中隱藏了許多不可預知的危機。
所以,防火牆必須針對此方面作一些特殊的設計,以過濾這些類型的資訊。
◎.阻絕系統服務型(denial-of-service)攻擊:
有些使用者會對Web站台發出大量的請求,防礙了其他人對此站的連接。防火牆對這類阻絕系統服務的侵入,也必須有解決的對策。

Linux 系統管理篇(環境變量)

Linux 系統管理篇(環境變量)

1. 顯示環境變量HOME
$ echo $HOME
/home/terry
2. 設定一個新的環境變量WELCOME
$ export WELCOME="Hello!"
$ echo $WELCOME
Hello!
3. 使用env指令顯示所有的環境變量
$ env
HOSTNAME=terry.mykms.org
PVM_RSH=/usr/bin/rsh
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
4. 使用set指令顯示所有本地定義的Shell變量
$ set
BASH=/bin/bash
BASH_VERSINFO=([0]="2"[1]="05b"[2]="0"[3]="1"[4]="release"[5]="i386-redhat-linux-gnu")
BASH_VERSION='2.05b.0(1)-release'
COLORS=/etc/DIR_COLORS.xterm
COLUMNS=80
DIRSTACK=()
DISPLAY=:0.0
5. 使用unset指令來清除環境變量
set可以設定某個環境變量的值。清除環境變量的值用unset指令。如果未指定值,則該變量值將被設為NULL。示例如下:
$ export TEST="Test..." #增加一個環境變量TEST
$ env|grep TEST #此指令有輸入,證明環境變量TEST已經存在了
TEST=Test...
$ unset $TEST #刪除環境變量TEST
$ env|grep TEST #此指令沒有輸出,證明環境變量TEST已經存在了
6. 使用readonly指令設定唯讀變量
如果使用了readonly指令的話,變量就不可以被修改或清除了。示例如下:
$ export TEST="Test..." #增加一個環境變量TEST
$ readonly TEST #將環境變量TEST設為唯讀
$ unset TEST #會發現此變量不能被刪除
-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New" #會發現此也變量不能被修改
-bash: TEST: readonly variable
7. 用C程式來訪問和設定環境變量
對於C程式的使用者來說,可以使用下列三個函數來設定或訪問一個環境變量。
◆ getenv()訪問一個環境變量。輸入參數是需要訪問的變量名字,返回值是一個字串。如果所訪問的環境變量不存在,則會返回NULL。
◆ setenv()在程式裡面設定某個環境變量的函數。
◆ unsetenv()清除某個特定的環境變量的函數。
另外,還有一個指標變量environ,它指向的是包括所有的環境變量的一個清單。下面的程式可以列印出現用的運行環境裡面的所有環境變量:
#i nclude
extern char**environ;
int main ()
{
char**var;
for (var =environ;*var !=NULL;++var)
printf ("%s ",*var);
return 0;
}


Linux下的環境變量設定
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
# Path manipulation
if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
pathmunge /usr/X11R6/bin after
unset pathmunge
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done
unset i
JAVA_HOME="/opt/j2sdk1.4.2_01"
MYSQL_HOME="/var/mysql"
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$PATH:$JAVA_HOME/bin:$MYSQL_HOME/bin:/opt/apache-ant-1.5.4/bin
export JAVA_HOME CLASSPATH PATH
CVSROOT=/cvsroot;
export CVSROOT
LINUX系統環境變量
/etc/profile對整個系統有效.
確定你使用的是bash
修改~/.bash_profile
把你要設定的環境變量寫進去
例如
JAVA_HOME=/usr/local/jdk
export JAVA_HOME

主機檢查軟體-Check Host 1.0.11 免安裝版

主機檢查軟體-Check Host 1.0.11 免安裝版

如果你負責維護很多台機器或很關心自己的網站主機是否都正常維持連線、運作中,除了直接用瀏覽器開網頁或用PING指令查詢回應狀況之外,還有沒有更自動化、更方便的方法呢?
Check Host這個軟體可以幫我們同時監控多個網站或主機IP,透過Ping的方式或Socket connection的方式來檢查本機電腦與指定電腦間的連線是否正常。
除了可自定自動檢查頻率之外,還可設定以桌面通知或Email等方式通知我們,甚至還可自動啟動指定程式來執行自動化工作,相當簡單方便。

免費主機檢查軟體 - Check Host,可以定時檢查伺服器是否存活,一旦發現當機(Ping不到)
就可以自動發信通知你指定的信箱,或者,只於軟體中顯示錯誤訊息
最主要的特色是 - 還可以檢測指定的TCP或UDP埠號之服務能否建立連線。
attachments/201304/8121011614.jpg


系統需求:.Net Framework 2.0

您想監視主機伺服器或服務的提供嗎?

檢查主電腦與該程式可以輕鬆地監視伺服器或服務的伺服器。
因此,界定哪些主電腦或IP位址應進行監測。
另外,你可以選取檢查方法:要麼用ping或通過建立一個套接字連線(可選的TCP或UDP)在任何埠上。

當然,知會選項的事件「不再可用」及「可再」可以單獨定義。
知會是盡可能桌面知會,通過 e - mail,也通過執行任何其他程式。

使用方法:

1.安裝好Check Host軟體並啟動主程式之後,視窗中預設會提供兩個測試用的監控項目,可以按把它刪除。如果要新增自己的監控項目,可以按一下左上角的「New program」。

attachments/201009/7699445383.png

2.請在「Description」輸入網站名稱,然後在下面填上IP位址或網域名稱(不可加http://),「Check method」可依需求點選「Ping」或「Socket connection」。

右邊的「Notification」可以選擇是否在桌面顯示提醒通知,或者讓程式自動寄發Email來通知我們。全部設定好再按「Save」按鈕。

attachments/201009/1058967172.png

3.當某個網站掛掉的時候,會出現如下圖的提醒通知視窗,我們可在依照IP或網址前往處理。

attachments/201009/5728813071.png

4.另外如果你選擇寄發Email通知自己或相關工作人員的話,記得要在「Options」設定視窗中的「SMTP Settings」輸入正確的郵件主機相關設定值,才有辦法順利寄信出去。

attachments/201009/7843426413.png


You would like to monitor if a server or service is available?


With the program Check Host you can easily monitor a server or the services of a server.
Therefore define which host or ip address should be monitored. Additionally you can choose the check method: either with a ping or by establishing a socket connection (optionally TCP or UDP) on any port.


Of course, the notification options for the events "no longer available" and "available again" can be defined separately.
A notification is possible as desktop notification, via e-mail and also by executing any other program.



  主機檢查軟體-Check Host 1.0.11 免安裝版下載之檔案位址:
 
  http://por.tw/Downloads/Check-Host-1.0.11.rar

Linux主機伺服器架設技術(主機資料移轉)

Linux主機伺服器架設技術(主機資料移轉)

 主機的移轉要掌握以下幾點原則:

   1. 要注意原網頁應用軟體之安全性
      有些舊的軟體,可能已有漏洞,不要再把舊的版本轉移過來。
   2. 在移轉資料的同時,必須要注意,該資料的檔案權限。不要在完成資料移轉之後,一般 user 都「看」不到,只剩 root 一個才看得到。
   3. 可在兩台 Linux 之間直接使用 gFtp 軟體,以 SFTP2 (SSH2) 協定、 Root 身份,直接把各種資料從舊機器傳送到新機器上。

---------------------------------------------------------------------------------
attachments/201304/9435209677.jpg


  資料庫移轉

    * 資料庫位置:/var/lib/mysql
    * /var/lib/mysql/mysql 及 /var/lib/mysql/test 不可搬動
      除了上述這兩個資料夾不可搬動外,其餘在 /var/lib/mysql/ 底下的資料夾(資料庫),皆可以搬到新 Linux Server主機的 /var/lib/mysql 底下。
          因為 /var/lib/mysql/mysql 是 MySQL 的系統資料庫,它記錄了許許多多 MySQL Server 的設定參數。而且,舊版的 MySQL 與新版的 MySQL ,系統資料庫會有欄位定義上的不同,若您把舊版系統資料庫,直接覆蓋到新版之上,可能會造成 MySQL 啟動失敗。
          例外:若是新舊主機的 Linux/Linux Server 版本一致,理論上其 MySQL 版本應該也一致,就可以執行以下動作即可
         1. 直接把 /var/lib/mysql/ 底下所有資料夾複製到新主機上相同的位置上
         2. 不必再動 MySQL 使用者權限的部份
    * 複製到新主機時,要記得把 /var/lib/mysql 底下所有的資料夾(資料庫)權限,改為 mysql.mysql
      root@dns:~# chown -R mysql.mysql /var/lib/mysql/*
    * 在 Linux 底下可以使用 filezilla 以 SFTP 的協定,直接用 Root 身份進行搬動
      root@dns:~# apt-get install filezilla
    * 檢查所有 PHP+MySQL程式碼(如 ANN 公告欄...etc),把所使用到的 MySQL 使用者帳號密碼,新增至新主機的 MySQL 內
      使用 phpmyadmin,例: http://Your.ServerName/phpmyadmin
      在首頁上點:「權限」 → 「新增使用者」 (新增 MySQL 的使用者)

---------------------------------------------------------------------------------
網頁搬家

    * 網頁位置
          Red Hat 系列: /var/www/html
          Linux/Linux 系列: /var/www
          ☆.自行編譯安裝: /usr/local/apache2/htdocs
    * 可以使用圖形化工具 gFtp 以 SFTP 的協定,直接用 Root 身份進行搬動
          ☆.例1:從舊 Red Hat(含 Fedora) 之/var/www/html → Linux Server 之 /var/www
    * 也可用指令 scp
      例:以 root 身份把遠端的 /var/www/sfs3 複製回本機之 /var/www/sfs3 底下
      root@dns:~# scp root@your.old.host:/var/www/sfs3 /var/www
    * 注意:Linux 的 Apache2 Server 在送出網頁時,預設會採用 utf8 編碼,可是原主機上的網頁卻可能是 Big5 ,此時,我們必須把預設編碼解除,並加強其多國語言編碼之處理能力。
          ☆.解除送出網頁時的預設編碼
            編輯 /etc/apache2/conf.d/charset ,把 AddDefaultCharset UTF-8 變成註解

            # AddDefaultCharset UTF-8
          ☆.加強多國語言編碼處理能力,編輯 /etc/apache2/sites-available/default ,新增紅字部分。

<VirtualHost *:80>
      ServerAdmin webmaster@n10.domo.tnc.edu.tw
      ServerName n10.domo.tnc.edu.tw

      DocumentRoot /var/www/
      <Directory />
         Options FollowSymLinks MultiViews
         AllowOverride None
      </Directory>
 ...

使用者搬家(家目錄移轉)

    * 各使用者的家目錄,集中在 /home/ 底下
    * 用 gFtp 以 SFTP 的協定,直接用 Root 身份進行搬動(檔案權限,會被改為 root.root)


User 移轉

Linux 的 User 相關資料如下:

    * 各使用者資料夾 /home/*
    * 設定檔 /etc/passwd
    * 密碼檔 /etc/shadow
    * 群組檔 /etc/group
    * 群組密碼檔 /etc/gshadow

若是 Linux Server 或 Linux pureXXX 的舊主機,移轉至 Linux Server。把上列各檔,有關使用者的部份,「複製」/「貼上」至新主機同名檔案的檔尾部份。以 /etc/passwd 舉例如下:

   1. 把舊主機 passwd, shadow, group, gshadow 傳輸至新主機 /root 底下
   2. 使用文字編輯器,如 gedit 打開 /root/passwd ,複製舊主機上的使用者資料,貼至新主機的 /etc/passwd 的檔尾處(不要動到原本的資料)。


歸還其原有權限

    * 最後,要把權限還給該使用者
      root@dns:~# chown -R user.user /home/user
          ☆.註:以上 chown 要在下面 User 移轉完畢,才可以處理
    * 若人數過多,這裡有快速做法
      http://myip.tw/itsmw/index.php/Home_chowner



網頁資料庫編碼轉換

本文介紹如何在 Linux Server 下把 Big5 碼的網頁暨其資料庫轉成 UTF8 碼,並轉至 Linux 上的資料庫。當然,這並不是必要性動作,本文在此只是提供一個作法給大家參考而已,並不鼓勵大家把所有網頁暨其資料庫轉碼。


資料庫轉碼

在此,筆者以自己所寫的一支 Big5 小程式「學生資訊檢測練習區」來擔任本次的範例,它內含三支 php 程式碼以及一個資料庫(兩張表)。


Linux Server 上把資料庫轉出

    * 把整個 Big5 碼資料庫,在 Linux Server 上用 phpmyadmin 轉出成 SQL 檔
          ☆.Step1 在 phpmyadmin 首頁上點選「輸出」

          ☆.Step2 選妥所要下載的資料庫 --> 轉成 sql 檔

    * 預設會存成 localhost.sql , 我們把它改成 compuexam.sql,並放到 /root 底下
      root@dns:~# mv localhost.sql compuexam.sql
    * 預處理 compuexam.sql 把文字檔內可能會出現錯誤,如「'成功'」變成「'成功'」
      root@dns:~# vi compuexam.sql
      在 vim 內下取代命令:「:%s/'/'/g」後存檔


    * 下載 ols3 提供的轉碼工具
      root@dns:~# wget http://myip.tw/itsmw/images/f/fe/B2U.zip

    * 執行轉碼作業

   1. 把 B2U.zip 解壓
      root@dns:~# unzip B2U.zip --> 會解出執行檔 bg5-db2-utf8
   2. 轉碼至新資料庫 new_ce
      root@dns:~# ./bg5-db2-utf8 compuexam.sql new_ce mysql_passwd
      註:使用法為「./bg5-db2-utf8 已匯出的sql檔路徑檔名 新的資料庫名稱 MySQL管理密碼」



轉入 Linux Server 上的 MySQL 資料庫

    * 由上述方式製作出的資料庫,其實是預設採用 latin1 字集定義,但骨子裡放的是 utf8 碼的資料庫,使用官方版的 phpmyadmin 會無法正確顯示其文字,不過可以改用筆者修改的 phpMyAdmin解決此一問題。
          ☆.下載並放至 /var/www
            root@dns:~# cd /var/www
            root@dns:/var/www# wget http://myip.tw/itsmw/images/f/fb/PhpMyA.zip
            root@dns:/var/www# unzip PhpMyA.zip
          ☆.瀏覽方式   http://your.Linux.server/phpMyA
          ☆.進入首頁後,先選妥右側語言為: Language: 中文utf8 -- Chinese traditional(utf8)
    * 再來,只要把 Linux server 上 /var/lib/mysql/new_ce 整個資料夾搬至 Linux 上的 /var/lib/mysql 底下,並 chown 為 mysql.mysql 便完成 utf8 資料庫的製作


進一步轉成符合 MySQL 5.x UTF8 編碼校對之資料庫

接著,我們可以再利用筆者的 phpMyA 輸出 new_ce 資料庫,改寫部分內容,再用官方 phpmyadmin 匯入成標準 MySQL 5.x 版接受的 UTF8 編碼資料庫。以下操作是在 Linux Server 上,作法如下:

    * new_ce 資料庫前置處理

   1. 用 phpMyA 把 new_ce 資料庫輸出成 localhost.sql
   2. 改寫 localhost.sql ,把以下這兩行刪除

      CREATE DATABASE `new_ce`;
      USE new_ce;
   3. 把所有建立資料表最後一行 DEFAULT CHARSET=latin1 改成 DEFAULT CHARSET=utf8

      CREATE TABLE IF NOT EXISTS `table name` (
       ...
       ...
      ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ...;


    * 使用官方 phpmyadmin 建立 newutf8 資料庫,示例如下


    * 再點選 newutf8 資料庫 --> 【載入】 --> 選 localhost.sql --> MySQL相容模式要選用 MYSQL40 --> 【執行】

    * 這樣就可以使用官方 phpmyadmin 來檢視該資料庫,不過本動作可能會導致您舊 PHP 程式碼(SQL 語法太舊,沒加入語系校對)無法讀取該資料庫,所以請慎思是否要這麼做!

網頁轉碼

依本例,不止要搬動 compuexam 為 new_ce 資料庫,還要把其應用程式:/var/www/compuexam/ 底下所有的 PHP 程式轉碼為 utf8 才算完成。

    * 先從 Linux Server 把 /var/www/compuexem 複製至 Linux Server 的 /var/www/compuexam
    * 在 Linux Server 的 /var/www/compuexam 下建立以下之 shell 檔
      root@dns:~# vi /var/www/compuexam/b2utf8.sh

#! /bin/sh
for i in *.php; d☆.
   ech☆."$(iconv -f big5 -t utf8 $i)" > $i
done

    * 在 /var/www/compuexam 執行該 shell
      root@dns:~# cd /var/www/compuexam
      root@dns:/var/www/compuexam# chmod +x b2utf8.sh
      root@dns:/var/www/compuexam# ./b2utf8.sh


    * 修改所有的 PHP 程式碼,把語言宣告改成 UTF-8,如下所示

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />



注意資料庫密碼

    * 每支 PHP+MySQL 的 PHP 程式碼,必定會有設定資料庫密碼的程式碼,因此,從 Linux Server 轉至 Linux 後,要打開該程式檢視 MySQL 的密碼是否正確

    * 另外, PHP 程式碼之資料庫名稱設定也要記得修改

    * 若一切就緒,就可以測試瀏覽

主機伺服器的平台(Linux 與 Windows)有什麼不一樣,該如何選擇?

其實討論的再多,了解的人都會知道,Linux的平台是比較受到歡迎而且市占率最高的一種系統平台。
因此總教頭的建議:如果您的網頁是用微軟的程式語言開發的網站,或是您必須使用微軟開發的資料庫服務(MS SQL),只能使用 Windows系統的平台的話,那您就無從選擇,您就使用 Windows+IIS的虛擬主機服務商吧,
否則建議使用 Linux的虛擬主機平台服務。

attachments/201304/2847872769.jpg

所有由 Linux系統建立起的主機平台,因為 Linux系統本身就是所謂的開放源碼,遵循的是開放源碼的公約,不論任何人使用都是免費的。
虛擬主機服務商如果使用這樣的系統平台,和 Windows NT或是 IIS是以註冊人數的多寡計費,相較起來對虛擬主機服務商所負擔的成本是天壤之別。
不僅如此,Apache網頁伺服器也是免費的,平台上使用的 Email系統(sendmail)本身免費的,FTP伺服器也是免費的,您會了解到 Linux平台的虛擬主機成本比 Windows平台的虛擬主機成本便宜非常多!

不僅如此,Linux最被人稱讚的地方是系統核心簡單而且速度快,並且是一個原本就為了架構於多 CPU運作而生成的系統。
在同樣的硬體條件之下,Linux被認為有更大更快的能力同時處理上千筆不同的需求。
也因為如此,許多免費而且功能強大的軟體也都只適用於 Linux系統。
相對於 Windows系統,Linux平台的虛擬主機可以使用的免費軟體和工具會比 Windows系統更來得多樣。

如果您的網站只是一般的靜態網頁,那總教頭建議使用 Linux系統。
如果您的網站使用 PHP,Perl,mySQL,總教頭建議使用 Linux系統。
如果您的網站使用 ASP,VBScript,MS-SQL,那總教頭建議改成別的程式語言,來用 Linux系統吧,如果不改,那就使用 Windows平台囉!

 網路開展事業或在網路創業賺錢第一步:【架設壹台能24小時替你賺錢網站主機】
架設Linux主機,如果是使用中華電信固定制申請1固定IP(其固定IP之變更方法)

如果您架設Linux主機,是使用中華電信固定制,可免費申請1固定IP來架設主機
有這樣的好康(不申請者是:笨蛋!傻瓜!不懂得藉助網站不上班就可賺錢!)
有學員來信問道:如何更中華電信申請的固定IP呢?(需不需要親自到中華電信辦理?)

attachments/201301/3201564466.jpg

總教頭的回覆:
中華電信固定制申請1固定IP
(固定IP其變更方法如下):
1.請進入中華電信的固定制申請1固定IP網址:
http://service.hinet.net/2004/adslstaticip.php
用中華電信給你的帳號與密碼登入

2.點選『您目前IP配發的狀態為 : 八個動態IP 』
這樣就取消了原來的固定IP(全部都改成八個動態IP)

3.經過翌日再次進入請進入中華電信的固定制申請1固定IP網址
重新申請FTTB經濟型IP配發固定IP+7個動態IP
這樣,你就可以重新取得新的固定IP了!

備註:為何經過一日再重新申請呢?根據中華電信客服人的解釋是:你如果要買上申請
很有可能系統還是會配原來的IP給你
如果經過一日,那你的原來IP就分配給他人使用(你再次申請就會得到新的IP)
所以,你如果修改IP後也就不可以反悔(不可能又回覆原來的舊IP)
因此,如果你沒有特殊需要就不要亂變動IP
(網站經營雖然大部分人是使用網址登入,但是IP也是主機位址識別之一)
好啦!您如果需要變更IP,就使用上述方法試試看,如果還不行,那就打中華電信客服電話
就會有專人為您解說!

------------------------------------------------------

Linux Server主機與主機的移轉

Linux Server主機與主機的移轉

本文主要在介紹如何把 Linux 上的資料,含使用者帳號、網頁、資料庫移轉至另一台 Linux Server 上頭。
Linux主機的移轉要掌握以下幾點原則:
要注意原網頁應用軟體之安全性
有些舊的軟體,可能已有漏洞,不要再把舊的版本轉移過來。
在移轉資料的同時,必須要注意,該資料的檔案權限。不要在完成資料移轉之後,一般 user 都「看」不到,只剩 root 一個才看得到。
可在兩台 Linux 之間直接使用 gFtp 軟體,以 SFTP2 (SSH2) 協定、 Root 身份,直接把各種資料從舊機器傳送到新機器上。

attachments/201304/4644131352.jpg

Linux主機的MySQL資料庫移轉:
資料庫位置:/var/lib/mysql
/var/lib/mysql/mysql 及 /var/lib/mysql/test 不可搬動
除了上述這兩個資料夾不可搬動外,其餘在 /var/lib/mysql/ 底下的資料夾(資料庫),皆可以搬到新 Linux Server主機的 /var/lib/mysql 底下。
因為 /var/lib/mysql/mysql 是 MySQL 的系統資料庫,它記錄了許許多多 MySQL Server 的設定參數。而且,舊版的 MySQL 與新版的 MySQL ,系統資料庫會有欄位定義上的不同,若您把舊版系統資料庫,直接覆蓋到新版之上,可能會造成 MySQL 啟動失敗。
例外:若是新舊主機的 Linux/LinuxD Server 版本一致,理論上其 MySQL 版本應該也一致,就可以執行以下動作即可
直接把 /var/lib/mysql/ 底下所有資料夾複製到新主機上相同的位置上
不必再動 MySQL 使用者權限的部份
複製到新主機時,要記得把 /var/lib/mysql 底下所有的資料夾(資料庫)權限,改為 mysql.mysql
root@dns:~# chown -R mysql.mysql /var/lib/mysql/*
在 LinuxD 底下可以使用 filezilla 以 SFTP 的協定,直接用 Root 身份進行搬動
root@dns:~# apt-get install filezilla
檢查所有 PHP+MySQL程式碼(如 ANN 公告欄...etc),把所使用到的 MySQL 使用者帳號密碼,新增至新主機的 MySQL 內
使用 phpmyadmin,例: http://Your.ServerName/phpmyadmin
在首頁上點:「權限」 → 「新增使用者」 (新增 MySQL 的使用者)

FTP檔案傳輸服務(Linux主機伺服器架設技術)

FTP檔案傳輸服務(Linux主機伺服器架設技術)

Linux sqz 上的檔案傳輸服務預設是使用 vsftp 套件,裝妥時的預設狀態如下:

   1. 使用 stand alone 方式提供服務
   2. 任何合法使用者皆可以登入,並存取自己家目錄底下的檔案
   3. 關閉 anonymous
   4. 基於安全因素使用登入後,其家目錄就是根目錄 (chroot_local_user=YES ),因此無法在「第三地」建立「公用資料夾」後,以 link 的方式給各使用者存取。

attachments/201304/0938046037.jpg

安裝

    * 安裝
      root@dns:~# apt-get update
      root@dns:~# apt-get install vsftpd



設定檢查

    * 請檢查 /etc/vsftpd.conf 內的設定值是否與下面所列一致

#在IPv4監聽,若要改成 IPv6 監聽,一定要修改/etc/rc.local內的 ip6tables 以及給予 fix ipv6 address
listen=YES
#listen_ipv6=YES
#不允許anonymous公共下載區
anonymous_enable=NO
#列出資料夾內檔案詳細列表
dirmessage_enable=YES
#使用本機時間
use_localtime=YES
#使用記錄檔
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
#啟動主動式傳輸
connect_from_port_20=YES
#一些安全性設定
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
#啟用本機 User
local_enable=YES
chroot_local_user=YES
write_enable=YES
local_umask=022



建立公用資料夾

如果學校希望使用者在登入 FTP 服務後,只能存取「自己的家目錄」及「共用區」,而看不到別人的資料夾。筆者以 /home/ftp/pub 為公用區為例,其作法如下:

   1. 公用資料夾建在在 /home/ftp/pub 底下
      root@dns:~# mkdir /home/ftp/pub
   2. 檔案權限開成 1777,使共用區內每個人皆可上傳修改自己的東西,但不得互改他人的
      root@dns:~# chmod 1777 /home/ftp/pub 。
   3. 接著,在每個 user 的家目錄下執行以下兩個動作(以 root 身份),便可以達成「共用區」的建立。
          * 每個 User也須建立 pub 資料夾(若已建立,不必再做)
            root@dns:~# mkdir /home/user/pub
          * 把 /home/ftp/pub 掛載至 /home/user 底下(每次重開機,必須執行一次)
            root@dns:~# mount --bind /home/ftp/pub /home/user/pub
          * 下 mount 指令檢視
            root@dns:~# mount


做完之後,大家所存進 pub 資料夾的檔案,實際上是放在 /home/ftp/pub,而且由於 1777 的作用,大家不可互相刪改對方的。只是,還有兩個問題尚待解決:

   1. 每個帳號都要執行一次這樣的指令,著實麻煩。
   2. 下次開機要再 key in 一次這樣的指令



一次把掛進所有使用者

筆者為解決上述的問題,已寫一支 shell script 在此: 檔案:Pubfolder.zip。本方案,會把所輸入的「共用資料夾」建在 /home/ftp 底下。以下是本程式之使用注意事項:

    * 要共用時
      root@dns:~# pubfolder.sh -m 共用資料夾名稱
      若 /home/ftp 底下無此資料夾,會以 1777 權限自動建立
    * 要解除共用時
      root@dns:~# pubfolder.sh -u 共用資料夾名稱
    * 下次開機也能自動掛載時,請在 rc.local 的底下, exit 0 之上,加上
      root@dns:~# vi /etc/rc.local

......

pubfolder.sh -m 共用資料夾名稱

exit 0

    * 使用「root@dns:~# mount」指令來檢視掛載狀態,若有以下字串,代表共用區已掛載

...
/home/ftp/public on /home/tnc01/public type none (rw,bind)
/home/ftp/public on /home/tnc02/public type none (rw,bind)
/home/ftp/public on /home/tnc03/public type none (rw,bind)
...

    * 註1:若 「/home/ftp/共用資料夾」未事先建立,而產生此一錯誤訊息,可以不理會「special device /home/ftp/xxxx does not exist」
    * 註2:預設所建立的共用資料夾權限為 1777 , 若想改為 777 請自行修改原始碼(把唯一有 1777 的地方改掉)
    * 註3:mount 指令的運用,本來就是兩地都要有實體資料夾,意即本工具會在 /home/ftp 底下建一個真正的存放區,也會在各個 User 底下建一個同名「空的」的資料夾,供 mount --bind 用。
    * 註4:延續註3 所提,在使用 pubfolder.sh -u 解除共用區之後,並不會把各家目錄底下的那個「空的」同名資料夾刪除,可能會造成您覺得共用區並沒刪除的假像。



此機制下rSync備份注意事項

由於我們把 /home/ftp/pub 掛載至 /home/user/pub ,因此,事實上所有資料檔案是在 /home/ftp/pub 底下,但 rsync 程式並不知道這件事,在備份執行時,會把每個人的 pub 皆複製一份,造成 pub 重覆備份的現象。解決方法如下:

    * 修改 /root/bk-Linux.sh,在執行 rsync 指令的前面先缷載再掛載,舉例如下:

#! /bin/sh

/root/pubfolder.sh -u pub

/usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /var/lib/mysql my_backup@163.26.x.x::mybk
/usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /var/www yh_backup@163.26.x.x::mybk
...

/root/pubfolder.sh -m pub

何謂NFC?NFC的應用功能與技術規格

 何謂NFC?NFC的應用功能與技術規格

你知道什麼是NFC嗎?
近場通訊(Near Field Communication,NFC)又稱近距離無線通訊,是一種短距離的高頻無線通訊技術,允許電子設備之間進行非接觸式點對點資料傳輸,在20公分距離內,交換資料。
主要由PHILIPS、NOKIA與SONY共同研發的技術
原理是:使用單1晶片,結合感應讀卡器、感應式卡片,利用點對點功能,在20公分距離內以13.56MHz頻率範圍運作
它可讓行動設備在20公分近距離內進行交易存取,最常見的應用有如捷運悠遊卡感應,未來也可當門禁卡使用。
NFC是一種無線連接技術,可以和目前現有的非接觸式智慧卡技術相容(例如"免接觸式射頻識別RFID")。
由於目前NFC已經漸漸成為多家主要廠商提供支援的正式標準。
NFC同時還是一種近距離連接協議,允許讓各種設備在彼此之間輕鬆、安全、迅速而自動的通訊和傳遞資料。
與無線世界中的連接方式相較,NFC是一種近距離的私密通訊方式。

attachments/201410/7786057578.jpg

使用 NFC (近距離無線通訊) 可在您的手機與其他 NFC 裝置之間傳輸資訊
例如:手機、NFC標籤或支付裝置。例如:您可以共享網址、通訊錄、電話號碼、樂曲、影片或相片。
NFC 標籤是經過程式化設定的小型資訊區域,可內嵌於海報、佈告欄公告或零售店面的產品旁邊。
觸碰標籤即可提供其他資訊,例如地圖、網址和電影預告片。
使兩個NFC裝置相互靠近,即可啟動NFC。

透過NFC所提供的無線網路和識別等功能,對國人不可或缺的手機而言,手機將是包含通訊、 娛樂、攝影及導航等多重用途的實用工具,甚至成為我們唯一所需的可攜式設備。
透過將NFC整合在手機系統的解決方案中,手機的可用性、多功能性及附加價值大幅提升,所以安全付費、對等連接以及身份辨識等都將成為現實。
 
那RFID跟NFC又有什麼不同呢?
事實上RFID跟NFC是很相似的,RFID是一種長距離的射頻識別技術,而NFC是短距離的無線通訊技術,有效距離只有20公分的通訊模式。
撇開這些技術不談,簡單的說 NFC就是把一個RFID的晶片跟讀卡機放在手機裡面,就是NFC了。


NFC vs Bluetooth
NFC和藍牙都是短程通信技術,而且都被整合到行動電話。但NFC不需要複雜的設定程序。NFC也可以簡化藍芽連接。
NFC 略勝 Bluetooth 的地方在於設定程序較短,但無法達到Bluetooth的低功率。
NFC的最大資料傳輸量是 424 kbit/s 遠小於 Bluetooth V2.1 (2.1 Mbit/s)。
雖然NFC在傳輸速度與距離比不上BlueTooth,但是NFC技術不需要電源,對於行動電話或是行動消費性電子產品來說,NFC的使用比較方便。
NFC的短距離通訊特性正是其優點,由於耗電量低、一次只和一台機器連結,擁有較高的保密性與安全性,NFC有利於信用卡交易時避免被盜用。
NFC的目標並非是取代藍芽等其他無線技術,而是在不同的場合、不同的領域起到相互補充的作用。
NFC 相容於被動式 RFID (13.56 MHz ISO/IEC 18000-3) 基礎。


NFC的應用
NFC的應用實在是太五花八門了,在日本NFC最常用在電子錢包,因為NFC跟手機做了連結,也有了身份的確認,所以可以加速NFC在電子錢包上的應用。

 
舉幾個例子來說說NFC還可以怎麼用:
手機:除了電子小額付款外,兩個具有NFC的手機可以做資料交換,就像名片交換一樣。
大家就會說啦,那現在的藍芽就可以做得到了,為什麼還需要用到NFC?
大家可以想想,我們平常在操作藍芽配對的時候,花的時間差不多要好幾秒,有時候就是打死都配對不成功
但是NFC的配對非常的快速,就像是我們在坐捷運嗶一下這麼快,而且安全性很高,不會讓其他Hacker有機會入侵您的藍芽設備。

印表機:有了NFC的印表機,您可以拿您的手機跟印表機接觸之後,就可以選擇您要列印的文章或是圖片。

耳機:無線的耳機只要感應到NFC的設備就能完備配對。

遙控器:外面賣場常會有賣萬用的遙控器,若是這個遙控器有NFC的設備,那配對就簡單多了,碰一下電視就能遙控電視,碰一下音響就能遙控音響。
    
數位相框:當您拍完照片要放在數位相框時,不再需要使用USB轉來轉去,只需要碰一下,就能將您的照片,自動上傳到相框裡面。

參考資料:

http://alliance.cust.edu.tw/portfolio/myPortfolio?path=stevehsu&page=43582
標籤: 網路新知
網頁&資料庫  Linux主機服務(Linux主機伺服器架設技術)

Linux 上預載之網頁及資料庫伺服器有,網頁(WWW):Apache2,動態網頁語言:PHP5,資料庫:MySQL5。
這三套的組合,可供網站管理者放置純靜態網頁(HTML)以及含 PHP+MySQL 的動態網頁。
也因此,可以架設一些具 Web 2.0 互動功能的網站,如 XOOPS(CMS), Wordpress(部落格), Moodle(數位學習), MediaWiki(共筆系統), osTube(影音平台), Joomla(CMS), Drupal(CMS)...等等。這樣一來可以服務學校同仁,令所有行政人員皆可自主貼公告、影片及照片,二來減少網管網站內容維運的工作壓力。
開啟PORT

    * TCP 80   Apache2 + PHP
    * TCP 443  加密通道(HTTPS)
    * TCP 3306 MySQL



網頁伺服器 Apache2
基本設定
基本結構

    * 預設網頁存放位置: /var/www
      注意:除了上傳之必要子目錄外,此資料夾切不可以讓 www-data 可完整讀寫
    * 預設個人網頁位置: /home/user/public_html
    * 設定檔位置: /etc/apache2
          主設定檔: /etc/apache2/apache2.conf
          必載入之相關設定: /etc/apache2/conf.d/*
            注意:在此目錄下的所有設定檔皆會被執行,所以若有任何修改,其備份設定檔不可留在原地
          可用模組: /etc/apache2/mods-available
          模組啟用: /etc/apache2/mods-enabled
          可用虛擬站台: /etc/apache2/sites-available
          虛擬站台啟用: /etc/apache2/sites-enabled
    * 記錄檔
          存取記錄: /var/log/apache2/access.log
          錯誤記錄: /var/log/apache2/error.log


模組管理

    * 模組安裝管理
          列出可供安裝的 apache2 套件,裡面名為 apache2-xxx 之套件就是可安裝的模組:
            root@dns:~# apt-cache search libapache2
          安裝模組:
            root@dns:~# apt-get install libapache2-mod-xxxx
    * 啟用模組
         1. 列出模組真實名稱
            root@dns:~# cd /etc/apache2/mods-available
            root@dns:~# ls
         2. 啟用所找到模組,例如:啟用個人網頁模組
            root@dns:~# a2enmod userdir
            注意:模組設定檔大多會有 *.load 及 *.conf 但啟用時,不用輸入副檔名
         3. 重新啟動 Apache2
            root@dns:~# service apache2 restart
    * 註:Apache2 模組並不等於 PHP5 模組,請勿搞混


首頁基本參數

    * 首頁設定檔: /etc/apache2/sites-available/default
    * 參數解說

參數     選項     說明
DocumentRoot     /var/www     首頁資料夾位置在 /var/www
Options     Indexes     首頁沒 index.html 時,自動列出檔案清單

    FollowSymLinks     允許使用 Alias 建立的資料夾捷徑(ex. phpmyadmin)

    MultiViews     增強多國語言支持(Big5 & UTF8 同存也算),但會影響效能
AllowOverride     All     支援 htaccess 程度,若 All 代表完全支援 htaccess 語法
Order
    allow, deny     allow from 及 deny from 抵觸時,以 allow 占較高優先權
allow from     all     允許所有 IP Address 瀏覽本網站



優化Big5與UTF8網頁並存時之處理

    * /etc/apache2/conf.d/charset → 把 AddDefaultCharset 註解掉
      root@dns:~# vi /etc/apache2/conf.d/charset

# AddDefaultCharset UTF-8


    * 在 /etc/apache2/sites-available/default ,加上 MultiViews
      root@dns:~# vi /etc/apache2/sites-available/default

...

     DocumentRoot /var/www
     <Directory />
          Options FollowSymLinks Multiviews
          AllowOverride All
     </Directory>
     <Directory /var/www/>
          Options FollowSymLinks MultiViews
          AllowOverride All
          Order allow,deny
          allow from all
     </Directory>
...



個人網頁

個人網頁功能是讓一般的使用者可以在自己的家目錄底下建立網頁,塔配 ftp 功能,讓使用者自己管理自己的網站。

    * Linux/Linux Server 預設個人網頁位置: /home/username/public_html
    * 連線方式: http://your.host.name/~username/



Linux e 及 sqz 啟用個人網頁功能

Linux e 版本起,預設並沒啟用個人網頁的功能,因此要做一些調整。

    * 啟動個人網頁
      root@dns:~# a2enmod userdir
    * 重新啟動 Apache2
      root@dns:~# service apache2 restart
    * 若要讓個人網頁也可以執行 PHP Code, Linux sqz 這個版本必須繼續修改 /etc/apache2/mods-available/php5.conf , 把下面幾行加 # 註解

<IfModule mod_php5.c>

    <FilesMatch ".ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch ".phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # Tre-enable php in user directories comment the following lines
    # (from <IfModule ...> t</IfModule>.) DNOT set it tOn as it
    # prevents .htaccess files from disabling it.
#    <IfModule mod_userdir.c>
#        <Directory /home/*/public_html>
#           php_admin_value engine Off
#        </Directory>
#    </IfModule>
</IfModule>



自訂個人網頁位置

有時,自舊機器移轉至 Linux 時,由於個人網頁的舊設定值是 /home/user_name/html 與 Linux 上的預設值 /home/user_name/public_html 不同,因而出現一些問題。因此,我們可透過修改一些參數,而不必去把每個有個人網頁的使用者找出來修改其網頁資料夾位置仍能達成個人網頁的使用。


    * 注意: Linux sqz 版預設沒有啟動個人網頁功能,請先啟用
      root@dns:~# a2enmod userdir
      root@dns:~# service apache2 restart
    * 設定檔 /etc/apache2/mods-available/userdir.conf
    * 修改下面紅字的部分

<IfModule mod_userdir.c>

   UserDir html
   UserDir disabled root

   <Directory /home/*/html>
      AllowOverride FileInfAuthConfig Limit Indexes
      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      <Limit GET POST OPTIONS>
         Order allow,deny
         Allow from all
      </Limit>
      <LimitExcept GET POST OPTIONS>
         Order deny,allow
         Deny from all
      </LimitExcept>
   </Directory>
</IfModule>

    * 重新啟動 Apache2 伺服器
      root@dns:~# service apache2 restart
    * 注意: /home/user_name 資料夾的權限必須為 755 才可以


自訂錯誤訊息

這裡所謂的錯誤訊息,是指外面連到學校網頁時,連到某些不存在或有設密碼的網頁時,Apache2 會送出一些警告訊息,以通知瀏覽者。但是,由於這些錯誤訊息並沒有中文版,會造成一些困擾。不過,我們仍可自行製作屬於自己的錯誤訊,比如:瀏覽到不存在網頁,您可以說「別搞怪!本站沒此頁面...看...什麼!」。

    * 設定檔位置,在此,筆者以 /etc/apache2/apache2.conf 為例
          Linux Server(Janaca) ~ Linux e系列: /etc/apache2/apache2.conf
          Linux sqz : /etc/apache2/conf.d/localized-error-pages

    * 修改步驟如下:

   1. 修改設定檔啟用自訂頁面,依本例:只建立 404 及 403 兩訊息,其餘不變
      root@dns:~# vi /etc/apache2/apache2.conf
      找到以下內容,修改紅字部分
      # Customizable error responses come in three flavors:

      # 1) plain text 2) local redirects 3) external redirects
      #
      # Some examples:
      #ErrorDocument 500 "The server made a boboo."
      ErrorDocument 403 /errmsg/e403.php
      ErrorDocument 404 /errmsg/e404.php
      #ErrorDocument 402 http://www.example.com/subscription_info.html
   2. 找一個地方並寫好自訂訊息頁面,依本例其位置在: /var/www/errmsg/
          * 編輯 e403.php 權限不足警告頁例子

            <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
            <html lang="zh-tw">

            <head>
            <meta content="text/html; charset=UTF-8" http-equiv="content-type">
            <title>403 Permission Deny!</title>
            </head>

            <body>
            <br><br>
            <h2 align="center">403 Permission Deny! 抱歉您無權閱讀本網頁!
            <br><br>
            <?php ech"<a href='http://".$_SERVER["HTTP_HOST"]."/>回本站首頁</a>" ?>
            </h2>
            </body>

            </html>

          * 編輯 e404.php 找不到頁面的警告頁例子

            <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
            <html lang="zh-tw">

            <head>
            <meta content="text/html; charset=UTF-8" http-equiv="content-type">
            <title>404 not find!</title>
            </head>

            <body>
            <br><br>
            <h2 align="center">404! 找不到您要求的網頁!
            <br><br>
            <?php ech"<a href='http://".$_SERVER["HTTP_HOST"]."/>回本站首頁</a>" ?>
            </h2>
            </body>

            </html>

   3. 重新啟動 Apache2
      root@dns:~# service apache2 restart



新增虛擬站台

在此,筆者是以下列之模擬情境列文說明,此情境適用於當學校有另一個人需獨立負責某一網站,網管人員可以在不交出 root 權限下,開放一組 PHP+MySQL 網頁空間給該使用者。

    * 管理者開設一組 Linux 及 MySQL 的 user 帳號/密碼,如:myuser。
    * 因此在 /home 及 /var/lib/mysql 底下皆會產生 myuser 資料夾。
      使用者只能用 ftp 及 phpmyadmin 管理自己的網頁及資料庫(看不到其他資料)。
    * 最後管理者改變網址之指定,如下所示:

http://your.host.name/~myuser   -->   http://myuser.your.host.name/


開設 myuser 帳號

    * 新增 Linux 帳號
      root@dns:~# adduser myuser
    * 使用 phpmyadmin 建立 MySQL 空間

   1. 建立資料庫 myuser
      在 phpmyadmin 首頁就有建立資料庫的功能,請依自己的需求建立
   2. 下 SQL 語法,建立 myuser 使用者並使其只能完全存取 myuser 資料庫

GRANT ALL PRIVILEGES
   ON myuser.*
   T'myuser'@'localhost'
   IDENTIFIED BY 'myuser_pwd';


修改 DNS 設定

新增 myuser.your.host.name 網址

以大成國小 dns 正解設定檔 /etc/bind/db.dc1es.tnc.edu.tw 舉例如下:
      :

www  IN   CNAME   dns.dc1es.tnc.edu.tw.
myuser  IN   CNAME   dns.dc1es.tnc.edu.tw.
;
mail    IN   A   163.26.182.1
s2      IN   A   163.26.182.2
      :

以上例而言:筆者新增了一筆 myuser.dc1es.tnc.edu.tw → 163.26.182.1 的 dns 記錄,也就是說目前 163.26.182.1 有多個英文網址,比如 :

    * dc1es.tnc.edu.tw
    * dns.dc1es.tnc.edu.tw
    * www.dc1es.tnc.edu.tw
    * mail.dc1es.tnc.edu.tw
    * myuser.dc1es.tnc.edu.tw

         :
         :
         等
         等
新增 myuser 虛擬站台

    * 設定檔: /etc/apache2/sites-available
    * 工作原理
          原預設值是針對 hostname 設定(ex: dns.dc1es.tnc.edu.tw)
          要啟用多組設定,不能針對您所要的 myuser 設定,必須考慮周詳。亦即把使用者連至學校首頁的所有可能性皆設妥。例如: http://www.dc1es.tnc.edu.tw 、http://dc1es.tnc.edu.tw 、http://163.26.182.1


修改 /etc/apache2/sites-available/default

修改 default 以供 http://dc1es.tnc.edu.tw 使用

    * root@dns:~# vi /etc/apache2/sites-available/default

Linux Server ~ Linux t3 前面幾行舉例如下:
NameVirtualHost *

<VirtualHost *>
   ServerAdmin webmaster@dns.dc1es.tnc.edu.tw
   # ServerName dc1es.tnc.edu.tw
   DocumentRoot /var/www/
      :
      :

Linux e1 ~ Linux sqz 前面幾行舉例如下:
<VirtualHost *:80>

   ServerAdmin webmaster@dns.dc1es.tnc.edu.tw
   ServerName dc1es.tnc.edu.tw
   ServerAlias www.dc1es.tnc.edu.tw
   ServerAlias 163.26.182.1
   DocumentRoot /var/www/
      :
      :



建立 /etc/apache2/sites-available/myuser

建立 myuser 供 http://myuser.dc1es.tnc.edu.tw 使用

    * root@dns:/etc/apache2/sites-available# vi myuser (內容如下所示)

Linux Server 示例

<VirtualHost 163.26.182.1:80>
        ServerAdmin myuser@dc1es.tnc.edu.tw
        ServerName myuser.dc1es.tnc.edu.tw
        DocumentRoot /home/myuser/public_html/
        <Directory /home/myuser/public_html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                AddType application/x-httpd-php .php
        </Directory>
</VirtualHost>



Linux Server 示例

<VirtualHost *:80>
        ServerAdmin myuser@dc1es.tnc.edu.tw
        ServerName myuser.dc1es.tnc.edu.tw
        DocumentRoot /home/myuser/public_html/
        <Directory /home/myuser/public_html/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                AddType application/x-httpd-php .php
        </Directory>
</VirtualHost>



啟動各服務

    * root@dns:~# a2ensite myuser
    * root@dns:~# service bind9 restart
    * root@dns:~# service apache2 restart



Apache2 資安管理
特定網頁之連線限制

若學校有些網頁只限校內 IP 讀取(intranet),但又不想另外架一台網頁伺服器,這時可以透過對資料夾的讀取權限制來達成此一目的。其設定方式可以參考 Linux Server 上 ra-phpmyadmin 之參數寫法,詳見以下說明:


設定方式

    * 設定位置: /etc/apache2/conf.d
    * 舉例說明: /etc/apache2/conf.d/ra-phpmyadmin

# 要鎖的資料夾, 舉例而言 /var/www/myweb --> 要寫成 <Location /myweb>
<Location /phpmyadmin>
  order deny,allow
  deny from all
  # 可連線區, 新增教網中心網段
  allow from 127.0.0.1 163.26.182.0/24 203.68.102.0/24
  Options FollowSymLinks MultiViews
</Location>


無法連線之錯誤訊息
Forbidden


You don't have permission taccess /phpmyadmin/ on this server.
Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny8 with Suhosin-Patch Server at 163.26.182.234 Port 80


解除方式

解除的方式很簡單,把 ra-phpmyadmin 搬走即可,做法如下:

    * root@dns:~# mv /etc/apache2/conf.d/ra-phpmyadmin /root

    * root@dns:~# service apache2 restart

    * 註:絕對不可以把原檔改個名字仍留 conf.d 資料夾內,因為這個資料夾內所有的檔案(無論檔名為何)皆會被執行。



上傳區禁止執行 Script 語言

有時會因一些架站軟體的要求,要建立資料上傳區,如 /var/www/uploads ,而且其檔案權限必須是網頁伺服器(www-data)可讀取(或設成 777)。此時,若有心人士,無論是經由合法手段或透過 PHP 程式漏洞,把 *.php 丟到 uploads ,再經由瀏覽器執行,這樣就會產生資安風險。但如果,不讓 Apache2 伺服器對 uploads 底下特定類型 script 予以解譯並執行的話,那麼此風險就可降到最低。詳細做法如下:

    * 先確認 /etc/apache2/sites-available/default 之 AllowOverride 參數改為 All,擷取部分內容如下

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www/>
        Options FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>


    * 建立 /var/www/uploads/.htaccess
      root@dns:~# vi /var/www/uploads/.htaccess (內容示例如下)

<FilesMatch ".(php|php3|php4|php5|phtml|pl|py|sh|cgi)$">
deny from all
</FilesMatch>

    * 註:影響力只達 .htaccess 所在之資料夾


    * 改 .htaccess 權限為 root 所有,其他身份唯讀,以免被使用者上傳自己的 .htaccess 覆蓋
      root@dns:~# chown root.root /var/www/uploads/.htaccess
      root@dns:~# chmod 644 /var/www/uploads/.htaccess


鎖密碼網頁製作

假設有個資料夾,裡面的網頁具有機密性,只允許特定人員登入後才可觀看,這可以透過 .htaccess 的設定來協助達成。


確認 AllowOverride 參數

如上文所言,要啟用 .htaccess 之前,要先確認 /etc/apache2/sites-available/default 之 AllowOverride 參數是否為 All 。


建立 .htaccess

假設 http://your.host.name/topsecu/ 這個網址是要帳號密碼認證,那麼其在主機的實體位置為 /var/www/topsecu ,因此,必須在此處建立 .htaccess ,其內容示例如下。

    * root@dns:~# vi /var/www/topsecu/.htaccess

AuthName "TopSecu"
AuthUserFile /var/passwords/topsecu.pwd
AuthType Basic
Require valid-user

    * AuthName 站名
    * AuthUserFile 密碼檔
    * AuthType Basic 基本型式授權(不必分組)
    * Require valid-user 要有帳號


建立密碼檔

    * 第一次建立
      root@dns:~# mkdir /var/passwords
      root@dns:~# htpasswd –c /var/passwords/topsecu.pwd username
    * 「-c」是供第一次建立用,若只是修改密碼或新增第二組帳號密碼,就不必再加此參數。
    * 經過上述動作,會建立一組帳號為 username 的認證



網頁程式 PHP
基本設定

Apache2 是網頁伺服器,PHP5網頁語言是以 Apache2 模組的形式存在。因此,若有任何設定變更,只要重新啟動 Apache2 即可。

    * 設定檔: /etc/php5/apache2/php.ini



PHP5 模組管理

PHP5 的模組安裝/移除與 Apache2 做法一樣,皆是透過 Debian 的 DEB 套件庫來處理,舉例如下:

    * 模組搜尋
      root@dns:~# apt-cache search php5
    * 模組安裝
      root@dns:~# apt-get install php5-imagick
    * 模組移除
      root@dns:~# apt-get remove php5-imagick
    * 模組異動後,套用設定
      root@dns:~# service apache2 restart



加大檔案上傳限制

PHP 預設檔案上傳限制為 2MB ,這對學校來說常常不夠用,不過我們可以透過 php.ini 的修改,來加大上傳限制。不過這裡的上傳限制與使用者網路空間限制(Quota)的意義不同,這裡是指用 PHP 寫的網站,若有上傳介面(如 SFS3, XOOPS...),無論是圖片或檔案之上傳限制。

    * 修改 /etc/php5/apahce2/php.ini ,修改下列三個參數
      root@dns:~#: vi /etc/php5/apache2/php.ini

;記憶體限制
memory_limit = 128M
;PHP 表單 POST 限制
post_max_size = 72M
;檔案大小限制
upload_max_filesize = 64M




其他設定

以下兩者皆已是預設值,不過仍提出以供參考

    * 注意 php.ini 內的 utf-8 或 big5 編碼問題

;default_charset = "iso-8859-1"

註:加「;」變成註解,才可以讓 php 頁面自訂語系

    * 若 php 程式要重送 header (ex.強迫轉址),請注意

output_buffering = 4096



加速 PHP 執行

    * Linux t1~t3 可以使用 APC 加速 PHP 執行

   1. root@dns:~# apt-get update
   2. root@dns:~# apt-get install php-pear
   3. root@dns:~# apt-get install php5-dev apache2-prefork-dev build-essential
   4. root@dns:~# pecl install apc
      出現 Use apxs tset compile flags (if using APC with Apache)? [yes] : 時,按「Enter」繼續
   5. 編輯 /etc/php5/apache2/php.ini ,加上
      extension=apc.so
   6. 重新啟動 Apache2
      root@dns:~# service apache2 restart


    * Linux e1~sqz 可以使用 Xcache 加速 PHP 執行
          xcache 簡介:它是 PHP 運算碼(opcode)快取器
          安裝
            root@dns:~# apt-get install php5-xcache
          重新啟動 Apache2
            root@dns:~# service apache2 restart



資料庫 MySQL

Linux 上自由軟體授權的資料庫目前有兩大勢力,一是 MySQL 另一是 PostgreSQL ,Linux 上預載的是 MySQL ,因此我們只針對 MySQL 進行簡易說明。

    * 重要中文參考文件,MySQL 5.1 中文手冊:http://twpug.net/docs/mysql-5.1/



基本觀念(必讀)

    * 主設定: /etc/mysql/my.cnf
    * 開啟埠
          對外:TCP 3306
          對本機:不必開通訊埠
          註:若 PHP 程式碼與 MySQL Server 位於同一台機器,可以把 3306 埠關閉
    * 記錄檔: /var/log/mysql.log
    * 系統資料庫: /var/lib/mysql/mysql
          各 MySQL 版本的系統資料庫格式不一樣,若錯用會導致資料庫無法啟動
          若此一資料庫被誤刪,可用 mysql_install_db 指令建立
    * 資料庫位置: /var/lib/mysql
    * 資料庫解說
          在 /var/lib/mysql 內每個資料夾皆是一組資料庫
          資料夾及其檔案之擁有者為 mysql.mysql
          資料夾內同名字之三個檔案組成一個資料表
            *.frm --> 欄位定義
            *.MYD --> 實體資料
            *.MYI --> 資料索引




MySQL 管理
MySQL系統管理

    * 關於 MySQL 管理幾個基本觀念
          MySQL 有自己的帳號密碼
          MySQL 最高權限帳號與 Linux 一樣是 root ,但密碼不同(除非設成一樣)
          MySQL 的帳號密碼是給網頁程式碼(ex. php)連線用,使用者使用的機會,只僅限 phpmyadmin 連線時才會需要
          Linux 上所設定的管理密碼(Linux-csetup-utf8)就是 MySQL 的 root 密碼


    * 啟動/關閉/重新啟動
      root@dns:~# service mysql start|stop|restart


    * 初始化系統資料庫
      root@dns:~# mysql_install_db
      註:本功能僅限 /var/lib/mysql/mysql 已被誤刪的情況下才可以使用


    * 初設 MySQL root 密碼
      root@dns:~# mysqladmin -u root -p password
      註1:輸入 Linux root 密碼後即才可繼續輸入 MySQL 密碼
      註2:Linux 本動作不必做,因為 Linux-csetup-utf8 己幫忙處理過了。


    * 修復資料表索引
      root@dns:~# mysqlcheck -u root -p -f 資料庫名 資料表名



忘記 MySQL 密碼

    * 方法一:執行 Linux-csetup-utf8,重設管理密碼
      注意:它除了會幫您重設密碼外,也會額外重設許多設定,因此不太建議使用此方法。
    * 方法二:直接使用 MySQL 工具重設

   1. 停止 MySQL
      root@dns:~# service mysql stop
   2. 建立 /root/newpwd.txt
      root@dns:~# vi /root/newpwd.txt

      SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

   3. 啟動 MySQL
      root@dns:~# mysqld_safe --init-file=/root/newpwd.txt &
   4. 關閉 MySQL
      root@dns:~# service mysql stop
   5. 刪除 newpwd.txt
      root@dns:~# rm -rf /root/newpwd.txt
   6. 啟動 MySQL
      root@dns:~# service mysql start
      註:重新啟動後 MySQL root 密碼已被重設



資料庫管理

整個資料庫管理,建議使用 phpmyadmin 網頁工具,簡介如下:

    * phpmyadmin 安裝
      root@dns:~# apt-get update
      root@dns:~# apt-get install phpmyadmin
      註:大多數的 Linux 多已安裝此套件


    * phpmyadmin 使用:直接使用網頁瀏覽器,連結至 phpmyadmin 網站即可
      舉例:http://your.host.name/phpmyadmin
      連線後,以 MySQL 的帳號密碼進入
          只有用 root 登入,才會有全部功能
          可以透過 GRANT 語法,建立特定帳號,而它只能掌控單一資料庫(詳見本文:建立虛擬站台段落)


    * 資料庫搬家
          Linux 系列 Server 之 MySQL 資料庫皆在 /var/lib/mysql
          只要下指令把 /var/lib/mysql 底下之資料庫(夾)複製至新主機相同之位置,並修改權限擁有者為 mysql 即可完成搬移任務。以 sfs3 資料庫為例,做法如下:
         1. 複製
            root@dns:~# scp root@your.old.host:/var/lib/mysql/sfs3 /var/lib/mysql
         2. 修改擁有者
            root@dns:~# chown -R mysql.mysql /var/lib/mysql/sfs3
本Linux主機伺服器架設基地立志於收集各類Linux主機伺服器架設、網站架設及網頁設計技術教學資訊,便於本人和廣大網友及網友查詢檢索,無論公司或個人認為本站存在侵權內容均可與本站聯繫,任何此類反饋資訊一經查明屬實後,將立即移除!