發現自己最近都快淪落為一名專職裝機員了,每天都有那么多的新服務器需要配置,那么多的游戲平臺需要架設,長痛不如短痛,該是擺脫這件無聊而又無趣的事情的時候了,下定決心犧牲今晚大好月色,好好寫篇安裝指南。但愿從此可以解脫了!

    本文主要面對半丁公司游戲的維護人員,對使用Ubuntu系統的其它用戶也有同樣的參考意義,基本覆了架設游戲平臺時可能涉及到的所有前期準備工作,預計將由以下章節組成,至于我們內部軟件的配置方法,請見內部文檔。

   一、ubuntu系統的安裝配置
二、mysql的配置優化
三、vsftp、apache的安裝配置
四、服務器監控軟件mrtg的安裝配置
(比較懶,寫哪兒算哪兒吧)

一、ubuntu系統的安裝配置
1. 下載刻盤
有很多途徑可以獲得Ubuntu的拷貝,最簡潔的的方法就去Ubuntu官方網站上去下載Ubuntu的安裝盤映像文件,下載后得到的文件擴展名為iso,你可以使用Nero將映像文件還原到CD上,之后你就可以用這張CD去安裝Ubuntu系統了。另提示一下,請務必使用刻錄軟件的映像還原功能,不要把iso文件直接刻錄到CD上了。
Ubuntu目前可選的版本有6.06 server, 7.04 server, 7.10 server,其中6.06屬于長期支持版本,支持到2009年,相對比較穩定,推薦使用,但如果你的服務器使用了較的的硬件系統,也可以考慮7.10版。
每個版本還根據硬件類型分為X86和64位系統兩個類別,這里提醒一下,因為我們的平臺只支持32位系統,所以如果你是半丁的客戶,即使你買了64位服務器也請務必安裝x86的版本。
這里分別給出6.06 server和7.10 server x86版本的下載地址,如果發現地址無效請直接到www.ubuntu.org.cn中文官方網站下載
    Ubuntu 6.06.1 LTS (Intel x86) server install CD
        http://mirror.rootguide.org/ubuntu-releases/6.06/ubuntu-6.06.1-server-i386.iso
    Ubuntu 7.10 (Intel x86) server install CD
        http://mirror.rootguide.org/ubuntu-releases/7.10/ubuntu-7.10-server-i386.iso
2. 安裝
Ubuntu的系統安裝過程極度傻瓜化,過程絕過比windows更簡潔,所以你完全可以放下恐懼心理,就跟裝windows一樣,先在BIOS里設置從光盤引導,然后插入我們剛剛刻錄的安裝CD,重新啟動服務后猛點Next就可以了,但為了確保萬無一失我還是再跟你確認以下三點:
1. 安裝過程中會要求你選擇是使用dhcp還是手動輸入ip地址,通常你應該手動輸入服務器的ip地址(錯了也沒關系,我們后面可以再修改)
2. 安裝過程中會要求你輸入管理員的用戶名和密碼,請不要因為第一次安裝Ubuntu過于激動而忘了記下它們,否則你就要再激動一次了。
3. 安裝過程中會讓你對磁盤進行分區,如果你對分區操作有心里陰影,直接Next就可以了,默認是使用整個磁盤,自動分區,這就夠了。
3. 配置優化
服務器重啟之后Ubuntu就已經成功安裝到服務器上了,我沒有騙你吧,確實比裝XP更簡單!:)但你還有最后一步工作要做,我才能幫得到你,首先請確認你的Ubuntu盤還插在光驅里(不要告訴我你在服務器重啟時就沒有把它拿出來....@.@),然后使用你剛才設定的用戶名和密碼登錄到系統,你應該能看到類似這樣的提示:
        sureandrew@ubuntu:~$_
后面的所有命令就是在這里僌的。好,Ubuntu的配置就從這里開始了:
3.1 安裝遠程登錄服務SSH(注意下面的$表示系統提示符,實際不輸入,后同)
        $sudo sudo apt-get install ssh
輸入這行命令后可能會提示你重新輸入你的用戶名和帳號,如果出現有(Yes/no)這樣的提示的話,你只需輸入Y后按回車就好了。理論上說,在你做完這一步后就可以把你的爛攤子交給我了,但看在我8點多還沒吃晚餐寫教程的份上,你應該幫我把文檔后面的部分也都做完撒,嘿嘿!
對了,我知道你是個謹慎的人,所以在慶祝之前我再教你個方法,確認文檔前面的部分你都成功了,打開你的個人電腦(假設為XP系統,并已經聯網)運行CMD, 輸入以下內容:
        >telnet 192.168.0.1 22
(192.168.0.1替換成你給服務器配置的ip)如果屏幕上出現類似以下內容:
        SSH-2.0-OpenSSH_4.2p1 Debian-7ubuntu3.1
恭喜你!,這說明你前面的內容全部成功,你可以繼續下一步了,如果沒有.....,你看著辦吧!
3.2 修改機器ip
        如果你在前面步驟中ip輸入錯誤,或是要做修改,你可以輸入以下命令
        $sudo nano /etc/network/interfaces
        會出一個類似記事本的編輯環境,如果你只是改ip,直接改掉就可以了,如果之前用的dhcp,你可能要把文件內容修改成以下形式
        # The loopback network interface
        auto lo
        iface lo inet loopback

        # The primary network interface
        auto eth0
        iface eth0 inet static
                address 192.168.0.212
                netmask 255.255.255.0
                network 192.168.0.0
                broadcast 192.168.0.255
                gateway 192.168.0.1

        后面一節都好理解,但前面的auto lo iface lo inet loopback也是有用的,請不要自作主張給刪了(我沒有特指某人...).
        修改完成后按Ctrl + X 再按Y后退出保存
        執行下以下命令,使修改生效
        $sudo /etc/init.d/networking restart
        ps: 因為7.04開始Ubuntu里的vi指令變得有點古怪,為了不惹麻煩,后面我們統一用nano作編輯器,這個操作基本同于記事本
3.3 設置DNS服務器
        $sudo nano /etc/resolv.conf
        在編輯器中輸入以下內容
        nameserver 211.167.97.67
        nameserver 211.167.97.200
        退出保存
        到這一步你的服務器應該可以正常上網了,你用以下命令做下測試$ping www.sina.com.cn
3.4 配置更新源
        Ubuntu所有的常用軟件都可以用最簡單的命令從網上在線下載安裝,一步到位,并且通常速度都很快,你肯定會因為這一點而愛上它的!:)
        輸入以下命令
        $sudo nano /etc/apt/sources.list
        在編輯器中清除文檔中原有的所有內容(你可以用Ctrl+K快速做到)
        根據你安裝的Ubuntu版本不同,把以下內容粘貼到文檔中
7.10
deb http://ubuntu.cn99.com/ubuntu gutsy main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu gutsy main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu gutsy-backports main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu gutsy-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu gutsy-proposed main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu gutsy-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu gutsy-security main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu gutsy-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu gutsy-updates main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu gutsy-updates main restricted universe multiverse

7.04
deb http://ubuntu.cn99.com/ubuntu/ feisty main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-proposed main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ feisty-backports main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty-security main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty-updates main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty-proposed main restricted universe multiverse
deb-src http://ubuntu.cn99.com/ubuntu/ feisty-backports main restricted universe multiverse

6.06
deb http://ubuntu.cn99.com/ubuntu/ dapper main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-updates main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-security main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu/ dapper-backports main restricted universe multiverse
deb http://ubuntu.cn99.com/ubuntu-cn/ dapper main restricted universe multiverse

        退出保存后輸入以下命令更新源
        $sudo apt-get update
        輸入以下命令更新系統到最新狀態
        $sudo apt-get upgrade
3.5 修改系統參數
        默認的系統參數比較保守,對系統連接數限制為1024, 不生成core文件,我們需要對部分參數進行調整,輸入以下命令
        $sudo nano /etc/security/limits.conf
        在文件中添加以下行,如果有重復的行請刪除
        *               soft    core            2000000
        *               hard    core            2000000
        *               soft    nofile          8096
        *               hard    nofile          8096
        保存退出
        將最大core大小設為2G, 并發連接數設為8K
3.6 將自定義動態庫加入系統cache中
        我們可能有一些自己開發的動態庫(linux下擴展名為.so),為了讓軟件在運行時能找到動態庫,我們需要將動態庫的目錄加入到系統cache中, 輸入以下命令
        $sudo nano /etc/ld.so.conf
        假設我的動態庫放在/home/sureandrew/sbin/和/home/sureandrew/sbin/qpspace兩個目錄下,我們只需要在文件中添加兩行
        /home/sureandrew/sbin/
        /home/sureandrew/sbin/qpspace
        退出保存后執行以下命令讓設置生效
        $sudo ldconfig -v
        提示一下: 如果執行該命令之后你又向目錄中放入了新的so文件,你需要重新執行該命令
3.7 安裝常用軟件
        有了apt-get 這個工作變得如此優雅從容
        3.6.1 安裝mysql客戶端運行組件(游戲服務器需要用到)
                $sudo apt-get install libmysqlclient15off
        3.6.2 安裝系統資源監視器
                $sudo apt-get install atop
                安裝后你可以使用$atop 2 來啟動,每2秒刷新一次, q鍵退出

    3.8 校準時區和系統時間
        游戲平臺對系統的時間的準備性要求非常高,所以這一步操作必不可少
        首先用以下命令設置好時區
        $sudo rm /etc/localtime
        $sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
        校準系統時間
$sudo ntpdate time.stdtime.gov.tw
        準備后你可以通過以下命令查看系統的當前時間
        $date
        提示: 在校準時間時請務必關閉硬件服務上運行的所有平臺服務器程序,否則會引起不可預測的計分和人數統計混亂

  3.9 其它常用命令
        簡單列一下,詳細格式拿名字google一下吧
        修改密碼passwd
        新增用戶adduser
        刪除用戶deluser
        給文件添加執行屬情      chmod u+x 文件名
        去掉執行屬性            chmod u-x 文件名

二、mysql的配置優化
1. 安裝mysql
提到安裝mysql 我不禁又要感嘆一下apt-get :), 輸入以下命令安裝mysql server 5.0版,這個開始支持存儲過程而又相對比較穩定
        $sudo apt-get install mysql-server-5.0
搞定!
2. 優化innodb引擎
        mysql新的innodb引擎相對以前的myisam有了很多的改進,我們將全部使用innodb表來存儲數據,但如果你在默認配置下使用innodb引擎,你馬上就能理解什么叫老牛拖破車了,磁盤IO和CPU會迅速飆升,所以優化刻不容緩,輸入以下命令打開mysql的配置文件
        $sudo nano /etc/mysql/my.cnf
        找到文件的[mysqld]配置節,添加以下行,如果文件中已經有了該項,你只需要將值更新即可,我這里以4CPU, 4G內存的服務器為例
        bind-address            = 192.168.0.212 (ip地址更新為服務器的實際地址)
        innodb_buffer_pool_size = 2046M   #推薦設為50%總內存
        innodb_additional_pool_size = 20M
        #innodb_log_file_size = 200M
        #innodb_log_buffer_size = 32M
        innodb_flush_logs_at_trx_commit = 0 #如果你需要更可靠請設為2
        thread_concurrency= 16
        max_connections = 500 #并發連接數

        expire_logs_days = 10 #二進制日志過期時間
        server-id = 1 #主服務器id
        log-bin = /var/log/mysql/mysql-bin.log
        修改完成后保存退出,運行以下命令使用新的配置文件重新啟動mysql服務器
        $sudo /etc/init.d/mysql restart
3. 常用mysql命令
        首先使用以下命令連入mysql服務器(本機連接)
        $mysql -uroot
        3.1 創建新的數據庫用戶
         以下命令創建用戶名為sureandrew, 密碼為passthis,可以從任何機器登錄,擁有全部操作權限的數據庫用戶(>為提示符,不用輸入)
        >grant all privileges on *.* to 'sureandrew'@'%' identified by 'passthis';
4. 配置主從服務器
mysql主服務器可以通過發送操作日志給從服務器的方式,讓兩臺數據庫機器保持同步更新,當主服務器出現故障時,可以將從服務器升級為主服務器,提高服務的可靠性,但因為操作數據量較大,必須保證主服務器和從服務器之間的流量足夠(如在同一個局域網內),可以從全新服務器安裝主從服務器,也可以在主服務器運行一段時間后再添加從服務器,這里假設主服務器已經配置完成,并運行過一段時間
4.1 添加從服務器
        ,首先按前面介紹的方法安裝并配置好從mysql服務器,注意在修改mysql配置時兩臺的server-id必須不同,如主mysql server-id=1,從服務器mysql server-id=2
4.2 理論上可以進行熱操作,但為了提高速度和可靠性,我們在里只說明停機操作的方法,
        (1) 首先關掉所有訪問數據庫的客戶程序,并用以下命令重啟mysql
        $sudo /etc/init.d/mysql restart
        (2) 重啟進入mysql服務器,并記下當前日志的文件名和位置
        $mysql -uroot
        mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+

| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+---------------+----------+--------------+------------------+

| mysql-bin.003 | 73       | test         | manual,mysql     |

+---------------+----------+--------------+------------------+
        請記下上圖下的文件名:mysql-bin.003 和位置73, 注意,這個過程請確保沒有其它程序在操作數據庫
        (3)關閉mysql, 并打包數據庫文件
        $sudo /etc/init.d/mysql stop
        $sudo tar czvf ~/mysqlbak.tar.gz /var/lib/mysql/.
        $sudo /etc/init.d/mysql start
        (4)登錄從服務器,下載打包的文件,并解壓到相應位置
        $sftp sureandrew@192.168.0.212
        $get mysqlbak.tar.gz
        $sudo tar zxvf mysqlbak.tar.gz /var/lib/mysql/.
        (5)啟動從mysql服務器,并設置復制
        $sudo /etc/init.d/mysql restart
        $mysql -uroot
        mysql> CHANGE MASTER TO
                ->     MASTER_HOST='master_host_name',
                ->     MASTER_USER='replication_user_name',
                ->     MASTER_PASSWORD='replication_password',
                ->     MASTER_LOG_FILE='recorded_log_file_name',
                ->     MASTER_LOG_POS=recorded_log_position;
       
        (6)啟動從服務器線程
        mysql> START SLAVE;
        到這一步從服務器就已經配置完成了,你改變主服務器上的數據為,然后觀察從服務器數據是不是對應被更新來確認主從服務器是否安裝成功。

5. 配置定期備份腳本和輪轉日志
        盡量我們已經配置了主從服務器,數據庫的安全性大大提高,但對于人為的誤操作造成的數據丟失卻還是無能為力,因為你的所有操作都被完整復制到從服務器,所以我們還是需要定時做全庫備份
        (1)創建全庫備份工作腳本
        $nano automysqldump.sh
        在打開的編輯器中輸入以下內容,并退出保存(注意替換以下mysql登錄信息)
        #!/bin/bash
        HOST=192.168.0.212              # mysql IP
        USER=sureandrew                   # mysql username
        PASSWORD=passthis               # mysql password
        BAKDIR=/backup/sqlbak           # default
        DATESTR=`date +%F-%k%M%S`
        if [[ -d $BAKDIR ]]
        then
                echo "passthis"
        else
        mkdir $BAKDIR
        fi
        mysqldump -h $HOST -u $USER -p$PASSWORD --all-databases > $BAKDIR/$DATESTR.sql
        tar zcvf $BAKDIR/$DATESTR.tar.gz $BAKDIR/$DATESTR.sql
        rm -rf $BAKDIR/$DATESTR.sql
       
        (2)給腳本配置執行屬性
        $chmod u+x automysqldump.sh
        (3)將備份腳本配置成系統周期任務
        $crontab -e
        以打開的編輯器中輸入以下內容,請注意你的腳本實際存放位置
        1 1 * * /home/sureandrew/bin/automysqldump.sh
        退出保存后系統將會在每天1點1分準時執行automysqldump.sh腳本,對整個mysql數據庫進行備份

三、vsftp、apache的安裝配置
1. 安裝配置vsftp
2. 安裝配置apache

四、服務器監控軟件mrtg的安裝配置