/ Work

[Ubuntu note.] 安裝從頭開始(隨時筆記)

UPDATE 2011-05-11 勘誤!

以下才是正確的 FastCGI/PHP-FPM 設定!另外請把 mod_php5 關掉,謝謝。

<ifModule mod_fastcgi.c>
    FastCGIExternalServer /var/www/php5-fpm.extenal -socket /tmp/php-fpm.sock
    AddHandler php5-fcgi .php
    Action php5-fcgi /usr/lib/cgi-bin/php5-fpm.extenal
    ScriptAlias /usr/lib/cgi-bin/ /var/www/
    <Directory /usr/lib/cgi-bin>
        Options +ExecCGI FollowSymLinks
        SetHandler php5-fcgi
        Order allow,deny
        Allow from all
    </Directory>
</IfModule>

由於之前白目自己升級核心 2.6.38 之後,整個 Ubuntu 就被我搞爛掉了。就算我用 Beta1 來安裝,Ubuntu 11.04 對於硬體支援的程度,還是有點異常(特別是顯示卡跟音效卡)。雖然他對於 Switchable Graphics 的支援有一定的程度,但是對於內建的 Intel DRM 跟 Intel HDA 的驅動還是怪怪的。

所以我只好認命的裝回 Ubuntu 10.10 了(默哀)。

所以現在開始 PPA 了(疑)。

然後安裝開發環境,php5,mysql,phpmyadmin,imagemagick,Android,eclipse 爾等。我之前有寫過一篇筆記,所以 可以參考一下 。然後,因為我是要跑 php5-fpm,所以 fpm,fastcgi 模組要另外裝。裝完之後,設定檔大概是這樣。

;listen = 127.0.0.1:9000
listen = /tmp/php-fpm.sock</blockquote>
<IfModule mod_fastcgi.c>
FastCGIExternalServer /usr/sbin/php5-fpm -socket /tmp/php-fpm.sock
AddHandler php-fastcgi .php
Action php-fastcgi /php-fpm.fcgi
ScriptAlias /php-fpm.fcgi /usr/sbin/php5-fpm
<Directory /usr/local/sbin>
    Options +ExecCGI FollowSymLinks
    SetHandler php-fastcgi
    Order allow,deny
    Allow from all
</Directory>
</IfModule>

記得 +ExecCGI 不要忘記加上去。然後,MySQL 也出了點問題,由於 InnoDB 的關係,所以如果有使用到的話,請先檢查一下這裡:

  /usr/lib/mysql/plugin/ r,
  /usr/lib/mysql/plugin/*.so* mr,<br>

然後請執行 mysql -u root -p 進入 mysql> 命令列,執行 show engines;

mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)

確認一下你的 InnoDB 有在裡面。然後,如果你的 InnoDB 資料表還是沒辦法復原,請先停掉 mysql,刪除 ib_* 檔案,預設的位置是在 /var/lib/mysql/ 裡面,重新安裝的 MySQL 會有:

ibdata1
ib_logfile0
ib_logfile1

然後,請刪除 ib_* 的檔案,然後用舊的資料庫的 ibdata1 蓋掉新安裝的檔案。然後重新啟動 mysql,這樣你的 InnoDB 資料表應該就會正常了(InnoDB
無法使用 REPAIR 修復喔,啾咪)。如果要修正 MYISAM 的檔案,可以參考官方的說明,或是 參考宗董的教學文章

至於 Android 要麼安裝,這裡只筆記一些我每次都懶得查詢的(喂)。

請加入 .bashrc

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export NDKROOT=/opt/android-ndk
export ANDROID_SDK=/opt/android-sdk
export PATH=$PATH:$JAVA_HOME/bin:$NDKROOT:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_SDK/platforms/android-4/tools
export CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib

把內建的 openJAVA 換成 O 牌的 Java:

update-java-alternatives -s java-6-sun

如果噴啥錯誤請去 Google,不過大抵上不礙事就是了(疑)。然後執行一下 java -version 應該會有:

$ java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)

然後,另外一個是我個人的需求,就是把 Google Chrome 的資料全部丟到 Ramdisk 去跑。請把底下這個檔案儲存到 /etc/init.d/ 底下,名字你要用 chrome-ramdisk 也可。

#!/bin/sh
### BEGIN INIT INFO
# Provides:          chrome-ramdisk chrome-ramdisk
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 6
# Short-Description: Copy and Restore Chrome User Data to RamDisk
### END INIT INFO
set -u
. /lib/lsb/init-functions
user="hinablue"
chrome="/home/$user/.config/google-chrome"
homecache="/home/$user/.cache"
ramdisk="/dev/shm/$user"
case "$1" in
    start)
        log_begin_msg "Starting Cache modify..."
      if [ ! -d "$ramdisk" ]; then
          mkdir "$ramdisk"
      fi
      cp -rf "$chrome" "$ramdisk"
      if [ -d "$ramdisk/.cache" ]; then
          if [ ! -L "$homecache" ]; then
              cp -rf "$homecache" "$ramdisk/"
              rm -rf "$homecache"
          else
              rm -rf "$homecache"
              mkdir "$ramdisk/.cache"
          fi
      else
          if [ ! -L "$homecache" ] && [ -d "$homecache" ]; then
            mv "$homecache" "$ramdisk"
          else
            mkdir "$ramdisk/.cache"
          fi
      fi
      if [ -d "$ramdisk/google-chrome/Default/Application\ Cache/Cache" ]; then
          rm -f "$ramdisk/google-chrome/Default/Application\ Cache/Cache/*"
      fi
      if [ -d "$ramdisk/google-chrome/Default/Cache" ]; then
          rm -f "$ramdisk/google-chrome/Default/Cache/*"
      fi
      if [ -d rm "$ramdisk/google-chrome/Default/Media\ Cache" ]; then
          rm -f "$ramdisk/google-chrome/Default/Media\ Cache/*"
      fi
      ln -s "$ramdisk/.cache" "$homecache"
      chown -R "$user":"$user" "$ramdisk"
    ;;
    stop)
        log_begin_msg "Starting Cache restore..."
        if [ -d "$chrome/Default/Application\ Cache/Cache" ]; then
            rm -f "$chrome/Default/Application\ Cache/Cache/*"
        fi
        if [ -d "$chrome/Default/Cache" ]; then
            rm -f "$chrome/Default/Cache/*"
        fi
        if [ -d rm "$chrome/Default/Media\ Cache" ]; then
            rm -f "$chrome/Default/Media\ Cache/*"
        fi
        cp -r "$ramdisk/google-chrome" "/home/$user/.config/"
        chown -R "$user":"$user" "$chrome"
        if [ -d "$ramdisk" ] && [ -L "$homecache" ]; then
            if [ -d "$ramdisk/.cache" ]; then
                rm -rf "$homecache"
                cp -rf "ramdisk/.cache" "/home/$user"
                chown -R "$user":"$user" "$homecache"
            fi
        fi
    ;;
    *)
        echo "Usage: $0 start|stop..."
        exit 3
    ;;
esac
update-rc.d chrome-ramdisk start 80 2 3 4 5 . stop 20 0 6 .

請勿忘記後面的 . 喔,很重要(筆記)。這樣,你的 Chrome 就會飛了(喂)。