2013年1月23日 星期三

[Linux] 安裝 Redmine @ Ubuntu 12.04 64Bit


圖:Wikipedia


在 Ubuntu 用 apt-get 安裝 Redmine 並沒有很難:


$ sudo apt-get install apache2 libapache2-mod-passenger git subversion cvs mercurial redmine
$ sudo ln -s /usr/share/redmine/public /var/www/redmine
$ sudo vim /etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
  PassengerDefaultUser www-data
  PassengerRoot /usr
  PassengerRuby /usr/bin/ruby
</IfModule>
$ sudo vim sudo vim /etc/apache2/sites-available/default
<Directory /var/www/redmine>
  RailsBaseURI /redmine
  PassengerResolveSymlinksInDocumentRoot on
</Directory>
$ sudo service apache2 reload


之後就可以用 http://localhost/redmine 逛了。此時的 rails 、 redmine 版本:


$ dpkg -l | grep redmine
ii redmine 1.3.2+dfsg1-1ubuntu1 flexible project management web application
ii redmine-sqlite 1.3.2+dfsg1-1ubuntu1 metapackage providing sqlite dependencies for Redmine
$ dpkg -l | grep rails
ii  ruby-rails-2.3 2.3.14-2 MVC ruby based framework geared for web application development


接著就要面對 Rails' Remote Code Execution Vulnerability Explained 問題了。所以,接下來就透過 gem 裝 rails 且從 github 取 redmine 安裝的筆記 :P


$ sudo apt-get install apache2 libapache2-mod-passenger git subversion cvs mercurial build-essential apache2-prefork-dev libaprutil1-dev libapr1-dev libcurl4-openssl-dev ruby-rvm ruby-dev gem libmagickwand-dev sqlite3 sqlite3-doc libsqlite3-ruby libsqlite3-dev
$ sudo gem install rails bundler passenger
$ sudo passenger-install-apache2-module
$ sudo vim /etc/apache2/mods-available/passenger.load
#LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
$ sudo vim /etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
  #PassengerRoot /usr
  #PassengerRuby /usr/bin/ruby
  PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.19
  PassengerRuby /usr/bin/ruby1.8
</IfModule>

$ sudo mkdir -p /data/webapp
$ git clone git://github.com/redmine/redmine.git /data/redmine
$ cd /data/redmine
$ git branch local-config
$ git checkout local-config
$ vim config/database.yml
production:
  adapter: sqlite3
  database: db/redmine.db

development:
  adapter: sqlite3
  database: db/redmine.db
$ bundle install --without development test
$ ruby script/about
...
Environment:
  Redmine version                          2.2.2.devel
  Ruby version                             1.8.7 (x86_64-linux)
  Rails version                            3.2.11
  Environment                              production
  Database adapter                         SQLite
...
$ rake generate_secret_token
$ RAILS_ENV=production rake db:migrate
$ RAILS_ENV=production rake redmine:load_default_data
$ mkdir public/plugin_assets


此時,就可以透過 ruby webrick 簡易測試:


$ cd /data/redmine
$ ruby script/rails server webrick -e production


但終極目標還是跟 apache2 綁在一起 :P 這也是為何會安裝 passenger/libapache2-mod-passenger 這種東西,接著參考強者青蛙的 Virtualhost 設定方式:


$ mkdir /data/webapp
$ cd /data/webapp
$ ln -s ../redmine/public redmine
$ sudo vim /etc/apache2/conf.d/redmine 
<Virtualhost *>
  DocumentRoot /data/webapp
  RailsBaseURI /redmine
  <Directory /data/webapp/redmine>
    AllowOverride all
    Options -MultiViews
  </Directory>
</Virtualhost>
$ cd /data/redmine
$ sudo chown -R www-data:www-data files log tmp public/plugin_assets
$ sudo chmod -R 755 files log tmp public/plugin_assets
$ sudo service apache2 restart


補充:


使用 <Virtualhost *> 用法時,當啟用 http/https 後,我導致 https 出錯 :P 解法就是不要用 <Virtualhost *> 用法,而是直接去修改指定的地方,如 default 或 default-ssl 檔:


$ sudo vim /etc/apache2/conf.d/redmine
Alias /redmine "/path/redmine/public"
RailsBaseURI /redmine
<Directory /path/redmine/public>
  AssignUserId redmine service
  PassengerUploadBufferDir /path/redmine/PassengerUploadBufferDir
  AllowOverride all
  Options -MultiViews
</Directory>


接著再到 DocumentRoot 建立 symbolic link:


$ cd /var/www
$ ln -s /path/redmine/public redmine
$ mkdir -p /path/redmine/PassengerUploadBufferDir
$ chown redmine:service /path/redmine/PassengerUploadBufferDir


2013年1月22日 星期二

[Rails] no such file to load -- dispatcher @ Ubuntu 12.04

no such file to load -- dispatcher


Error message:no such file to load -- dispatcher


Ubuntu 系統內建的 libapache2-mod-passenger 版本不夠新,以至於有些 modules 找不到,解法就是改用 gem 來安裝


$ sudo apt-get libapache2-mod-passenger
$ cat /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
$ cat /etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
  PassengerRoot /usr
  
PassengerRuby /usr/bin/ruby
</IfModule>
$ dpkg -l | grep passenger
ii libapache2-mod-passenger 2.2.11debian-2 Rails and Rack support for Apache2


改用 gem 裝法:


$ sudo gem install passenger
$ sudo passenger-install-apache2-module
$ sudo vim /etc/apache2/mods-available/passenger.load
#LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
$ sudo vim /etc/apache2/mods-available/passenger.conf
<IfModule mod_passenger.c>
  #PassengerRoot /usr
  #PassengerRuby /usr/bin/ruby
  PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.19
  PassengerRuby /usr/bin/ruby1.8
</IfModule>
$ sudo service apache2 reload
$ sudo gem list | grep passenger
passenger (3.0.19)


[OSX] 製作開機隨身碟 @ Mac 10.8.2

> hdiutil convert -format UDRW -o /tmp/ubuntu ./ubuntu-12.04.1-server-amd64.iso

> diskutil unmountDisk /dev/disk1
> sudo dd if=/tmp/ubuntu.dmg of=/dev/rdisk1 bs=1m
> diskutil eject /dev/disk1

其中 /dev/disk1 和 /dev/rdisk1 都是指隨身碟裝置位置,可用 diskutil list 來查詢

2013年1月20日 星期日

Sony DSC-RX100

RX100-01


去年遊香港時,跟友人借了一台 Sony Nex-3 伴遊,雖然夜景繁榮到用智慧手機也有不錯效果,但高級一點的相機拍出來真的有不一樣的水準,因此埋下買類單眼的欲望。原先的目標和預算擺在 NEX-F3 或 NEX-5R 這類新款且可以換鏡頭的類單眼,只是左思右想後,還是選擇了 Sony RX100 這款,主要理由是旅行中不想因為鏡頭而多背一個包包,再加上買了可以換鏡頭的相機後,隱性的鏡頭預算也會慢慢在未來浮現出來 XD 最後在友人協助下,快速地敗了 Sony RX100 啦!


這次買他的時機選在年初 XXX 百貨公司周年慶,滿 1 萬送 500禮券,刷卡滿一萬送 200 禮券,接著還有 ooo 理由送 100 禮券,總之最後就拿到 1300 禮券 + 信用卡1%現金折扣。當時選在 Sony Center 下手,好處是維修方便。最近也才稍微了解網路上的 "平行輸入" 的意思,就是所謂的水貨,水貨跟公司貨的主要差別是維修問題,賣水貨的店家通常是沒有代理權的,因此維修有問題時會比較麻煩,有的甚至要消費者自行處理。有一派的認為機身可以考慮水貨、鏡頭買公司貨,不曉得理由是不是鏡頭可以用來傳家、機身壽命短?總之這次選擇公司貨,其中最大的理由是個人對相機不熟 XD 其次是水貨跟公司貨價差不到 2000 元,再加上這次除了百貨公司節慶外,Sony 自家也有打出購買送東西的優惠(一顆原廠電池+SF-16UX 記憶卡),在這樣的條件下就完全不用考慮水貨。但小提一下,最佳購入 Sony RX100 的時機是2012夏天預購活動,還會多送原廠皮套(原價2千附近)


RX100-03


故上圖主要有兩樣還是額外購買的,那就是充電器跟皮套。兩樣加起來不用 850 元 XD 就先用看看吧!


RX100-04


至於入手好的心得嘛,除了照片在自動模式隨便拍隨便好看外,另一個則是在手動模式中,透過機身右下方的轉盤,還算方便地調整快門跟光圈數值,是我覺得還滿不錯的地方。優點嘛,就真的達到輕便、又可以隨便拍隨便好看,如果有想要手動調快門、光圈和 ISO 值也能把玩,缺點嘛,除了價格外,就是預設拍出來的照片檔案大小都以 5MB 起跳,這樣拍100張就吃掉500MB的容量了 XD 未來得要勤勞整理照片了。最後補個兩張自動拍攝的夜景:


RX100 RX100


2013年1月16日 星期三

iOS 開發筆記 - 備份還原匯出 Xcode 所需鑰匙(keys)

xcode_profile_export03


昨晚把 Mac mini 重灌了,灌完才想到 Xcode 開發環境的問題,所幸現在非常方便,直接在 Xcode 操作就能很順地匯出與匯入,因此,我只需要從另一台 Mac OS X 裡,透過 Xcode 把開發要用的 public key/private key 匯出即可,早期的作法可是透過 Keychains 各別匯出。


開啟 Xcode -> Windows -> Organizer -> Team -> 下方有 Export 可選:


xcode_profile_export01


設定打包的密碼:


xcode_profile_export02


如此一來就完成匯出了,至於匯入的方式,可以參照上述 Import 或是丟到另一台電腦直接點選也行。