Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 關於服務器 >> Debian服務器設置入門教程之一

Debian服務器設置入門教程之一

日期:2017/2/8 10:32:47      編輯:關於服務器

1.選擇Apache+MySQL+PHP4

你可能會問我:為什麼不選擇別的軟件,而非得選擇Apache+MySQL+PHP4的組合?呵呵,我要告訴你,著名的FreeLamp組合,說的就是Linux/Apache/MySQL/PHP/Perl/Python,你可以到 www.freelamp.com上面去看看。PHP在互聯網上的應用,正成燎原之勢。如果作Web開發,在我看來,別無選擇,就是PHP。詳細情況可以到www.php.net上面去了解。MySQL非常輕便,性能卓越。Apache就不必多說了,互聯網上沒有幾個Web站點不用它。

2.安裝

在Debian上安裝軟件,真的是非常簡單。不需要configure,不用make,不用make install,遍布全球的Debian的工作人員已經為你做好了一切。

你可以一口氣把這些軟件全部裝上:

# apt-get install apache php4 php4-gd php4-mysql mysql-server mysql-client

其中,php-gd是一個非常棒的圖形庫,如果你不需要使用php生成動態圖片,就不用裝。

這時,系統會自動列出一些相關的軟件,然後問你是不是要繼續(說Debian棒,這是其中一點:自動查找軟件關聯,自動補充安裝)——Debian給你一次反悔的機會,如果你現在不想裝了,那麼按n,就退出來了。

當然我們在這裡要按回車,繼續安裝。現在Debian會到你的sources.list裡面指定的站點去下載這些軟件。下載完後,會自動進行配置,配置過程中會征求你的意見,問你幾個問題。

比如現在他就問你:你要在計算機啟動時就運行MySQL嗎?當然選Yes了,否則每次要用的時候才啟動,怪麻煩的。

又問你:你想運行apacheconfig腳本嗎?默認是N,不過我們輸入Y讓它替我們配置一下。配置完後,問你是否保存配置,當然是了,呵呵。然後,他會問你是否要啟動Apache,好,啟動它。

接著,系統會自動配置PHP。由於你選擇了php-gd和php-mysql,他會問你是否把gd.so和mysql.so的支持寫入php.ini,回答是。你看,Debian聰明吧。

3.配置

3.1 配置Apache

3.1.1 提供php支持

Apache剛裝上的時候不提供php支持。當你點擊有.php腳本的連接,浏覽器會下載這個腳本:-(

修改/etc/apache/httpd.conf,以便提供php支持。運行:

#nano /etc/apache/httpd.conf

順便提一下,我非常喜歡這個叫做nano的編輯器,它很容易上手。使用nano的ctrl+w功能找到下面這一行:

# LoadModule php4_module /usr/lib/apache/1.3/libphp4.so

把這一行前面的井號去掉,以便apache加載這個libphp4.so模塊。然後,配置默認頁,找到:

DirectoryIndex index.html index.htm index.shtml index.cgi

改成:

DirectoryIndex index.php index.php3
index.html index.htm index.shtml index.cgi

然後再加上.php3擴展名的支持和php源碼支持,找到:

#
# And for PHP 4.x, use:
#
#AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps

把後面兩行修改成:

#
  # And for PHP 4.x, use:
  #
  AddType application/x-httpd-php .php .php3
  AddType application/x-httpd-php-source .phps

3.1.2 修改默認字符集

讓Apache把簡體中文作為默認的字符集。找到這一行:

AddDefaultCharset on

修改成:

AddDefaultCharset gb2312

好,Apache就配置完了,按ctrl+o保存後,再按ctrl+x退出nano。為了使我們的修改生效,需要重新啟動Apache,運行:

#apachectl restart

apache 1.3 提供了這個apachectl工具,但是2.0就沒了。

另外,注意一個技巧:Debian提供的服務器軟件包,幾乎都會提供一個腳本用於啟動/終止/重新啟動這個服務。腳本全部放在/etc/init.d/下面。

比如Apache,可以通過下面的命令控制:

#/etc/init.d/apache restart

其它的服務也可以如此操作。

3.2 MySQL配置

3.2.1 修改MySQL的口令

由於MySQL默認沒有口令,為了安全起見,一定要修改你的口令!

先來看看你的mysql是不是真的沒有口令:

$mysqladmin version

如果你能夠看到mysql的版本信息,證明目前MySQL沒有口令。好,運行mysqladmin password xxxxxx 修改口令:

#mysqladmin password xxxxxx

這裡xxxxxx是你的新口令。

現在你需要運行 mysqladmin version --user=root --pass,然後輸入口令,才能查看版本號等信息。

注意,上面命令中的--user=root --pass這一部分,可以簡寫為-u root -p。我們來測試一下,看口令是否生效:

#mysqladmin version -u root -p
Enter password:

3.2.2 打開3306端口監聽

這項工作要慎重。處於安全考慮,默認情況下,Debian把3306端口關閉了。因為,不少黑客通過它來攻擊你的系統。如果你不通過其他機器來存取數據庫,那麼不要打開這個端口。

修改/etc/mysql/my.cnf,找到:

skip-networking

把它注釋掉:

#skip-networking

3.2.3 修改默認字符集

讓MySQL把簡體中文作為默認的字符集。編輯/etc/init.d/mysql,找到這一行:

/usr/bin/safe_mysqld > /dev/null 2>&1 &

改成:

/usr/bin/safe_mysqld > --default-character-set=gb2312 > /dev/null 2>&1 &

好,重新啟動MySQL:

#/etc/init.d/mysql restart

3.3 PHP配置

主要是要修改php的默認字符集,把它改成簡體中文。編輯/etc/php4/apache/php.ini:

#nano /etc/php4/apache/php.ini

找到 ;default_charset = "iso-8859-1"這一行:

;default_charset = "iso-8859-1"

把前面的分號去掉,並改成:default_charset = "gb2312"

default_charset = "gb2312"

4.綜合測試

好了,安裝完了,我們來測試一下。

這一部分,高手完全可以略過。我主要考慮到初學者,才寫了這些。

4.1 建立一個數據庫

下面我們來創建一個簡單的數據庫,這個庫裡面只有一張表,叫做user,用來存放用戶名/明文密碼/出生日期/激活狀態。

<?php
   $dbname='mytest';
   $tablename='user';
   $page=0;
   $rowperpage=20;
   
   mysql_connect("localhost", "root", "您的密碼");
   
   //下面這個viewData函數,是自己編的,用來顯示數據
   //從某種程度上講,本程序起關鍵作用的就這麼一句:
   viewData($dbname,$tablename,$page,$rowperpage);
   
   
   ////////////////////////////////////////////////
   //
   // 往下僅僅是定義了兩個函數而已,你可以不去看他
   //
   ////////////////////////////////////////////////
   
   
   //定義一個函數,用來返回查詢狀態
   function echoQueryResult() {
  global $queryStr, $errMsg;       
   
  if( $errMsg == "" ) $errMsg = "成功";
  if( $queryStr != "" ) {  
    echo "<table cellpadding=5>";
    echo "<tr><td>查詢:</td><td>$queryStr</td></tr>";
    echo "<tr><td>結果:</td><td>$errMsg</td></tr>";
    echo "</table><p>";
  }
   }
    //定義一個函數,用來顯示數據
   function viewData($dbname,$tablename,$page,$rowperpage) {
  global $mysqlHandle, $PHP_SELF, $errMsg, $orderby;       
   
  echo "<h2>下面是您所查的數據:</h2>";
   
  $queryStr = stripslashes( $queryStr );
  if( $queryStr == "" ) {
    $queryStr = "SELECT * FROM $tablename";
    if( $orderby != "" )
      $queryStr .= " ORDER BY $orderby";
  }
   
  $pResult = mysql_db_query( $dbname, $queryStr );
  $errMsg = mysql_error();
   
  $GLOBALS[queryStr] = $queryStr; 
   
  if( $pResult == false ) {
    echoQueryResult();
    return;
  }
  if( $pResult == 1 ) {
    $errMsg = "成功";
    echoQueryResult();
    return;
  }
   
  echo "<hr>";
   
  $row = mysql_num_rows( $pResult );
  $col = mysql_num_fields( $pResult );
   
  if( $row == 0 ) {
    echo "沒有數據!表格是空的。";
    return;
  }
   
  if( $rowperpage == "" ) $rowperpage = 20;
  if( $page == "" ) $page = 0;
  else $page--;
  mysql_data_seek( $pResult, $page * $rowperpage );
   
  echo "<table cellspacing=1 cellpadding=2>";
  echo "<tr>";
    echo '<th bgcolor="#FFCC66">';
    echo "用戶名";
    echo "</th>";
    echo '<th bgcolor="#FFCC66">';
    echo "口令";
    echo "</th>";
    echo '<th bgcolor="#FFCC66">';
    echo "出生日期";
    echo "</th>";
    echo '<th bgcolor="#FFCC66">';
    echo "是否激活";
    echo "</th>";
  echo "</tr>";
   
   
  for( $i = 0; $i < $rowperpage; $i++ ) {
    $rowArray = mysql_fetch_row( $pResult );
    if( $rowArray == false ) break;
    echo "<tr>";
    $key = "";
    for( $j = 0; $j < $col; $j++ ) {
      $data = $rowArray[$j];
   
      $field = mysql_fetch_field( $pResult, $j );
      if( $field->primary_key == 1 )
        $key .= "&" . $field->name . "=" . $data;
   
      if( strlen( $data ) > 30 )
        $data = substr( $data, 0, 30 ) . "...";
      $data = htmlspecialchars( $data );
      echo '<td bgcolor="#99CCCC">';
      echo "$data";
      echo "</td>";
    }
   
    echo "</tr>";
  }
  echo "</table>";
  echo "<hr>";
   //$PHP_SELF
   
  echo "<font size=2>";
  echo "<form action='$PHP_SELF?action=viewData&dbname=$dbname&
      tablename=$tablename&page=$page&rowperpage=$rowperpage'
      method=post>";
  echo "<font color=green>";
  echo "第".($page+1)."頁/共".(int)($row/$rowperpage+1)."頁";
  echo "</font>";
  echo " | ";
  if( $page > 0 ) {
    echo "<a href='$PHP_SELF?action=viewData&dbname=$dbname&
        tablename=$tablename&page=".($page).
        '&rowperpage='.$rowperpage;
    if( $orderby != "" )
      echo "&orderby=$orderby";
    echo "'>上一頁</a>";
  } else
    echo "上一頁";
  echo " | ";
  if( $page < ($row/$rowperpage)-1 ) {
    echo "<a href='$PHP_SELF?action=viewData&dbname=$dbname&
      tablename=$tablename&page=".($page+2).
      '&rowperpage='.$rowperpage;
    if( $orderby != "" )
      echo "&orderby=$orderby";
    echo "'>下一頁</a>";
  } else
    echo "下一頁";
  echo " | ";
  if( $row > $rowperpage ) {
    echo "<input type=submit value='跳到第'>";
    echo "<input type=text size=4 name=page>頁";
  }
  echo "</form>";
   
   
  echo "<form action='$PHP_SELF?action=viewData&dbname=$dbname&
        tablename=$tablename&page=$page&rowperpage=$rowperpage'
        method=post>";
    echo "  目前每頁顯示記錄數為".$rowperpage."條,您可以";
    echo "<input type=submit value='改為'>";
    echo "<input type=text size=4 name=rowperpage>條/頁";
   
  echo "</form>";
  echo "</font>";
   }
   
   ?>

我好長時間沒寫程序了,連php的語法都快忘了,呵呵。我去年給公司的生產線編寫了一個應用,上面就是摘抄下來的,我本來想寫一個最簡單的程序在這裡,但是我還是把兩個函數保留在裡面了,為的是讓初學者有個借鑒,呵呵。

4.3 測試

把這個mytest.php復制到/var/www下面,在你的浏覽器裡面,訪問這個mytest.php,就會看到數據庫的內容。

之所以把mytest.php放到/var/www下面,是因為,默認情況下,Apache的httpd.conf裡面定義了把/var/www作為文檔根目錄。

學者注意,在Linux控制台下面有好幾款浏覽器,w3c,lynx,links等等。三個各有優劣,都不完美。個人感覺Links比較適合初學者,因為按下esc鍵之後有菜單出現。

5.結束語

本文是《Debian服務器設置入門》系列教程之第一章,建議您按照順序閱讀,有問題可以和作者kanaka聯系。

Copyright © Windows教程網 All Rights Reserved