December 26, 2012

Ubuntuで最初にやったことメモ

以前、以下の記事を書きました。

さくらのクラウドでパブリックアーカイブからUbuntuサーバを作成した後にやること
http://madroom-project.blogspot.jp/2012/12/ubuntu_20.html

これとは別の環境で行った、細々とした作業のメモになります。


■デフォルトのエディタを変更する
$ sudo update-alternatives --config editor
"Selection"で対応する数値を入力します。

参考:
http://www.ecchan893.net/?p=359



■特定ユーザでsudoを使用可能にする
* rootで行いました。
# visudo
"root ALL=(ALL) ALL"みたいな感じの下辺りに、以下を追記します。
[ユーザ名] ALL=(ALL:ALL) ALL

参考:
http://www.garunimo.com/program/linux/visudo.xhtml



■sudoに続くコマンドの補完を有効にする
$ vim ~/.bashrc
以下を追記します。
complete -cf sudo
参考:
http://www.webupd8.org/2010/03/how-to-autocomplete-commands-preceded.html



■ログインシェルを変更する
$ sudo chsh [ユーザ名]
"/bin/bash"や"/bin/sh"を入力します。

参考:
http://www.k-tanaka.net/unix/chsh.html



■パッケージレポジトリの変更
バックアップを取るなら取って
$ sudo cp /etc/apt/souces.list /etc/apt/souces.list.yyyymmdd
$ sudo vim /etc/apt/souces.list
して、該当箇所を変更します。(us.archive.ubuntu.comをjp.archive.ubuntu.comに変更とか。)

編集が終わったら、念の為
$ sudo apt-get update
$ sudo apt-get upgrade -y
しました。

参考:
http://d.hatena.ne.jp/nullpobug/20120608/1339082202

--

というわけで、大人の事情から、今年最後の記事でした。

Ubuntuにrcconfをインストールする

自動起動サービスの管理が出来るrcconfをインストールしてみます。

インストール
sudo apt-get install -y rcconf dialog
使い方
sudo rcconf
アスタリスクがついているサービスが自動起動するサービスです。

参考:
Ubuntuで簡単に自動起動するサービスを確認/設定するには?
http://interu.hatenablog.com/entry/20100527/1274962900

FuelPHP Advent Calendar 2012の電子書籍が達人出版会から出版されました!!


達人出版会 - FuelPHP Advent Calendar 2012
http://tatsu-zine.com/books/fuelphpadvent2012

ATND - FuelPHP Advent Calendar 2012
http://atnd.org/events/33753

記事が出揃ったのが昨日、電子書籍の出版が本日の午前という、ビックリするくらいのスピード感でしたね。@kenji_s さん、全体の取りまとめ、ありがとうございました & お疲れ様でした。参加者の皆様も、ありがとうございました & お疲れ様でした。

昨年は、どんな機能があるのだろうと手探り状態でしたし、参加者の人数も少なかったので(13人)、それなりに綱渡り状態だったのが懐かしいです。(それはそれで楽しかったです。)比べて、今年のAdvent Calendarは実用的な内容が多かったです。25人で1記事ずつでしたし、一年でここまで変わるのって凄いなーと思いました。

今回、僕は二日目を担当しました。JSのサンプルコード書くのもアレだなーというのと、実際に何か作ってみようと思わせるネタを意識したという(表向きの!?)理由から、軽めな内容にしたんですが、その後、色々なノウハウの記事が出てきて、非常に参考になりましたし、書籍が誕生するまでの工程に触れられたのも面白かったです。

電子書籍は無料で、フォーマットはEPUBとPDFが用意されているので、是非、ダウンロードして読んでみて下さい。

--

昨年のAdvent Calendarは以下になります。

技術評論社 - FuelPHP Advent Calendar 2011

ATND - FuelPHP Advent Calendar 2011

December 25, 2012

GitLabのグループの権限についてメモ


GitLabのグループの権限について、メモしておきます。(間違えていたら教えて下さい。。。)
GitLab 4.0で確認しています。

Guest
* issueの作成 (Create new issue)
* コメントを残す (Leave comments)
* ウォールへの書込 (Write on project wall)

Reporter
* Guestの全権限
* プロジェクトのpull (Pull project code)
* プロジェクトのダウンロード (Download project)
* マージリクエストの作成 (Create new merge request)
* コードスニペットの作成 (Create a code snippets)

Developer
* Reporterの全権限
* ブランチの作成 (Create new branches)
* protectedでないブランチへのpush (Push to non-protected branches)
* protectedでないトブランチの削除 (Remove non-protected branches)
* (Gitの)タグの追加 (Add tags)
* wikiの編集 (Write a wiki)

Master
* Developerの全権限
* メンバーの追加 (Add new team members)
* protectedなブランチへのpush (Push to protected branches)
* protectedなブランチの削除 (Remove protected branches)
* force push (Push with force option)
* プロジェクトの編集 (Edit project)
* Deploy Keysの追加 (Add Deploy Keys to project)
* Hookの設定 (Configure Project Hooks)

Owner
* Masterの全権限
* 他のネームスペースへの移動 (Transfer project to another namespace)
* プロジェクトの削除 (Remove project)

Ownerは必ず一人で、その他は任意な人数になります。尚、"マージリクエストの作成"とは、WEB上での操作であり、Gitの操作では有りません。また、protectedなブランチへのマージリクエストを受け付けられるのは、Master以上となります。

AdministratorをOwnerにして、プロジェクトのリーダーをMasterにして、リーダー以外をDeveloperにするのを基本にして、使っていってみたいと思います。


December 24, 2012

Ubuntu 12.04(同一サーバ)にGitLabとJenkinsとRedmineをインストールしてサブディレクトリ(URL)で動かす

大げさなタイトルですが、分散させて書いてみました。とりあえず、以下の順で確認しています。基本的には、順不同(単一でもOKなはず)です。また、さくらはあんまり関係ないですし、前提条件は、極力無くした内容です。

1. さくらのクラウドでパブリックアーカイブからUbuntuサーバを作成した後にやること
http://madroom-project.blogspot.jp/2012/12/ubuntu_20.html

2. Ubuntu 12.04にGitLab 4.0をインストールしてMySQLとApacheで動かす
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204gitlab-40mysqlapache.html
* とりあえず、初期アカウントでログイン成功までは確認が取れました。

3. Ubuntu 12.04にJenkinsをインストールしてApacheでポート80で動かす
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204jenkinsapache80.html
* とりあえず、トップ画面の表示までは確認が取れました。

4. Ubuntu 12.04にRedmine 2.2.0をインストールしてMySQLとApacheで動かす
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204redmine-220apache.html
* とりあえず、初期アカウントでログイン成功までは確認が取れました。

/etc/apache2/sites-available/のgitlabとjenkinsとredmineは、上手くまとめたいなー。
しかし、久々にくたびれた。。。

Ubuntu 12.04にGitLab 4.0をインストールしてMySQLとApacheで動かす

基本的には https://github.com/gitlabhq/gitlabhq/blob/4-0-stable/doc/install/installation.md の通りですが、NginxではなくApacheで動かしてみます。

尚、vimのインストール等、省略している箇所があります。

1. パッケージのインストール
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev  wget curl git-core openssh-server redis-server postfix checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev
* Postfix関係で、 "General type of mail configuration:"は"Internet Site"を選択しました。
* Postfix関係で、ドメイン(FQDN)の入力をしました。/etc/postfix/main.cfのmydestinationの値に設定されていました。

2. pythonのバージョンを確認
$ python --version
Python 2.7.3
* 2.5以上が必要とのことです。また、3.xは非サポートとのことです。

3. Ruby(ruby-1.9.3-p327)とBundlerのインストール
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204ruby_23.html

4. ユーザの追加、グループの編集、鍵の作成
$ sudo adduser \
  --system \
  --shell /bin/sh \
  --gecos 'Git Version Control' \
  --group \
  --disabled-password \
  --home /home/git \
  git

$ sudo adduser --disabled-login --gecos 'GitLab' gitlab

$ sudo usermod -a -G git gitlab

$ sudo -u gitlab -H ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
5. Gitoliteのインストールと設定
$ cd /home/git
$ sudo -u git -H git clone -b gl-v320 https://github.com/gitlabhq/gitolite.git /home/git/gitolite

$ sudo -u git -H mkdir /home/git/bin
$ sudo -u git -H sh -c 'printf "%b\n%b\n" "PATH=\$PATH:/home/git/bin" "export PATH" >> /home/git/.profile'
$ sudo -u git -H sh -c 'gitolite/install -ln /home/git/bin'

$ sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub
$ sudo chmod 0444 /home/git/gitlab.pub

$ sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gitolite setup -pk /home/git/gitlab.pub"

$ sudo chmod 750 /home/git/.gitolite/
$ sudo chown -R git:git /home/git/.gitolite/

$ sudo chmod -R ug+rwXs,o-rwx /home/git/repositories/
$ sudo chown -R git:git /home/git/repositories/
* 以下の"example.com"は適切な値に置換して下さい。
$ echo "Host localhost
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null" | sudo tee -a /etc/ssh/ssh_config

$ echo "Host example.com
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null" | sudo tee -a /etc/ssh/ssh_config
* 以下、sshのポートを変更していると、"ssh: connect to host localhost port 22: Connection refused"のエラーが出ます。その場合、"ssh://git@localhost:[ポート番号]/gitolite-admin.git"の形式にして下さい。( https://github.com/gitlabhq/gitlabhq/issues/1063#issuecomment-9956749 より。)
$ sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin

$ sudo rm -rf /tmp/gitolite-admin
6. MySQLのインストール(phpMyAdminは不要)
http://madroom-project.blogspot.jp/2012/12/ubuntumysql.html

7. MySQLの設定
* パスワード等は、適宜置換して下さい。
$ mysql -u root -p

mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'gitlab';
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
mysql> \q

$ sudo -u gitlab -H mysql -u gitlab -p -D gitlabhq_production
mysql> \q
8. GitLabのインストールと設定
$ cd /home/gitlab
$ sudo -u gitlab -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
$ cd /home/gitlab/gitlab
$ sudo -u gitlab -H git checkout 4-0-stable

$ cd /home/gitlab/gitlab
$ sudo -u gitlab -H cp config/gitlab.yml.example config/gitlab.yml

$ sudo chown -R gitlab log/
$ sudo chown -R gitlab tmp/
$ sudo chmod -R u+rwX  log/
$ sudo chmod -R u+rwX  tmp/

$ sudo -u gitlab -H cp config/unicorn.rb.example config/unicorn.rb
* 以下、"localhost"を実際のドメイン名に書き換えます。
$ sudo -u gitlab -H vim config/gitlab.yml
9. GitLab用のDB(Mysql)設定
* 以下、コピーした後、productionのusernameとpasswordを書き換えます。
$ sudo -u gitlab cp config/database.yml.mysql config/database.yml
10. Gemパッケージのインストール(MySQLの場合)
$ cd /home/gitlab/gitlab
$ sudo gem install charlock_holmes --version '0.6.9'
$ sudo -u gitlab -H bundle install --deployment --without development test postgres
11. Gitの設定
$ sudo -u gitlab -H git config --global user.name "GitLab"
$ sudo -u gitlab -H git config --global user.email "gitlab@localhost"
12. GitLabのHook設定
$ sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive
$ sudo chown git:git /home/git/.gitolite/hooks/common/post-receive
13. DBの初期化
$ sudo -u gitlab -H bundle exec rake gitlab:app:setup RAILS_ENV=production
* sshのポートを変更していると、"ssh: connect to host localhost port 22: Connection refused"のエラーが出ます。その場合、/home/gitlab/.ssh/configを編集します。
$ sudo -u gitlab vim /home/gitlab/.ssh/config
-- /home/gitlab/.ssh/config --
Host localhost
Port [ポート番号]
14. 初期化スクリプトのインストールとGitLabの起動
$ sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab -P /etc/init.d/
$ sudo chmod +x /etc/init.d/gitlab

$ sudo update-rc.d gitlab defaults 21
$ sudo service gitlab start
15. ステータスの確認
$ sudo -u gitlab -H bundle exec rake gitlab:env:info RAILS_ENV=production
$ sudo -u gitlab -H bundle exec rake gitlab:check RAILS_ENV=production
16. ApacheとPassengerのインストール(RubyとBundlerはインストール済)
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204apachepassenger.html

17. Apacheの設定
$ sudo vim /etc/apache2/sites-available/gitlab
-- /etc/apache2/sites-available/gitlab --
* 以下、"sudo passenger-install-apache2-module"した際の内容に、"RailsBaseURI /gitlab"を付け加えています。とりあえずGitLab専用の設定という意味で、/etc/apache2/sites-available/gitlabに隔離しています。
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
#PassengerRuby /usr/local/bin/ruby
 
RailsBaseURI /gitlab
18. Apacheの設定反映
$ sudo ln -s /home/gitlab/gitlab/public /var/www/gitlab
$ sudo a2ensite gitlab
$ sudo service apache2 reload

19. [ベースURL]/gitlab にアクセス
* 初期のアカウントは admin@local.host / 5iveL!fe です。

December 23, 2012

Ubuntu 12.04にApacheとPassengerをインストールする

コマンドのメモです。

1. RubyとBundlerをインストールする
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204ruby_23.html

2. ApacheとPassengerをインストールする
$ sudo apt-get install -y apache2 libcurl4-openssl-dev apache2-prefork-dev libapr1-dev libaprutil1-dev
$ sudo gem install passenger
$ sudo passenger-install-apache2-module
--------------------------------------------
The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
   PassengerRuby /usr/local/bin/ruby

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!

Press ENTER to continue.


--------------------------------------------
Deploying a Ruby on Rails application: an example

Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:

   <VirtualHost *:80>
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public    
      <Directory /somewhere/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
   </VirtualHost>

And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:

  /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/doc/Users guide Apache.html

Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
https://www.phusionpassenger.com

Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.

Ubuntu 12.04にRubyとBundlerをインストールする

参考
http://jurakudai.blog92.fc2.com/blog-entry-19.html

1. パッケージのインストール
$ sudo apt-get install -y make gcc g++ wget libssl-dev zlib1g-dev libreadline-dev libxslt-dev libxml2-dev libyaml-dev paco
2. Ruby(ruby-1.9.3-p327)のインストール
* 最新バージョンは、http://ftp.ruby-lang.org/pub/ruby/ 等で確認して下さい。
$ cd ~
$ mkdir tmp
$ cd tmp
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz
$ tar xfvz ruby-1.9.3-p327.tar.gz
$ cd ruby-1.9.3-p327
$ ./configure
$ make
$ sudo paco -D make install
$ ruby --version
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
3. gem install時にドキュメント生成を行わないように、~/.gemrcを編集
$ vim ~/.gemrc
-- ~/.gemrc --
gem: --no-ri --no-rdoc #追加
4. Bundlerをインストール
$ sudo gem install bundler

Ubuntu 12.04にRedmine 2.2.0をインストールしてMySQLとApacheで動かす

参考:
http://shirangana.info/115/?page_id=611
http://two-pack-sbs.blogspot.jp/2012/06/ubuntu-1204redmine-203.html

1. パッケージのインストール
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install -y libyaml-dev libncurses5-dev libgdbm-dev libssl-dev libreadline-dev tk-dev zlib1g-dev libmysqld-dev libmagickcore-dev libmagickwand-dev apache2-dev paco
2. MySQLのインストール(phpMyAdminは不要)
http://madroom-project.blogspot.jp/2012/12/ubuntumysql.html

3. Ruby(ruby-1.9.3-p327)とBundlerのインストール
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204ruby_23.html

4. MySQLの設定
$ sudo vim /etc/mysql/conf.d/characterset.cnf
-- characterset.cnf --
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
$ sudo service mysql restart
4-2. MySQLの設定確認
$ mysql -u root -p
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> \q
5. Redmine用のMySQLデータベースとユーザを作成
* パスワード等は、適宜置換して下さい。
$ mysql -u root -p

mysql> create database redmine default character set utf8;
mysql> grant all on redmine.* to redmine@localhost identified by 'redmine';
mysql> flush privileges;
mysql> \q
6. Redmine(2.2.0)のインストール
$ cd ~/tmp
$ wget http://rubyforge.org/frs/download.php/76627/redmine-2.2.0.tar.gz
$ tar xfvz redmine-2.2.0.tar.gz
$ sudo mv redmine-2.2.0 /usr/local/
$ sudo ln -s /usr/local/redmine-2.2.0 /usr/local/redmine
7. データベースへの接続設定
$ sudo vim /usr/local/redmine/config/database.yml
-- database.yml --
* 内容は、適宜置換して下さい。
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "redmine"
  encoding: utf8
8. メールサーバへの接続設定
$ sudo vim /usr/local/redmine/config/configuration.yml
-- configuration.yml --
* 内容は、適宜置換して下さい。
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "localhost"
      port: 25
      domain: 'example.com'
9. Gemパッケージのインストール
$ cd /usr/local/redmine
$ bundle install --without development test postgresql sqlite
10. Redmineの初期設定とデータベースのテーブル作成
$ rake generate_secret_token
$ RAILS_ENV=production rake db:migrate
11. ApacheとPassengerのインストール(RubyとBundlerはインストール済)
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204apachepassenger.html

12. Apacheの設定
$ sudo vim /etc/apache2/sites-available/redmine
-- /etc/apache2/sites-available/redmine --
* 以下、"sudo passenger-install-apache2-module"した際の内容に、"RailsBaseURI /redmine"を付け加えています。とりあえずRedmine専用の設定という意味で、/etc/apache2/sites-available/redmineに隔離しています。
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
#PassengerRuby /usr/local/bin/ruby

RailsBaseURI /redmine
13. Apacheの設定反映
$ sudo ln -s /usr/local/redmine/public /var/www/redmine
$ sudo a2ensite redmine
$ sudo service apache2 reload
14. [ベースURL]/redmine にアクセス
初期のアカウントは admin / admin です。

December 22, 2012

Ubuntu 12.04にJenkinsをインストールしてApacheでポート80で動かす

メモ。


(1)
Jenkinsをインストール
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install -y jenkins
(2)
/etc/default/jenkinsの"JENKINS_ARGS"に"--prefix=/jenkins"を追加(URLをサブディレクトリ式にする為)
/etc/default/jenkinsに「JAVA_ARGS="-Dfile.encoding=utf-8"」を追記(Git Pluginの文字化け対応)
$ sudo vim /etc/default/jenkins
-- /etc/default/jenkins --
JAVA_ARGS="-Dfile.encoding=utf-8"

...

JENKINS_ARGS="--webroot=$JENKINS_RUN/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --preferredClassLoader=java.net.URLClassLoader --prefix=/jenkins"
(3)
Jenkinsをリスタート
$ sudo service jenkins restart
(4)
Apacheをインストール
$ sudo apt-get install -y apache2
(5)
proxyの設定
$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
$ sudo vim /etc/apache2/sites-available/jenkins
-- /etc/apache2/sites-available/jenkins --
* URLは、適切な値に置換して下さい。
ProxyPass /jenkins http://xxx.xxx.xxx.xxx:8080/jenkins
ProxyPassReverse /jenkins http://xxx.xxx.xxx.xxx:8080/jenkins
(6)
設定を反映
$ sudo a2ensite jenkins
$ sudo service apache2 restart
(7)
[ベースURL]/jenkins にアクセス
参考:
https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

(8)
グラフで文字化けが発生するので、好きな日本語フォントをインストールします。
https://wiki.ubuntulinux.jp/UbuntuTips/Desktop/InstallFont
sudo apt-get install -y ttf-umefont
Jenkinsのシステム情報の"java.home"の"lib"に移動します。
cd /usr/lib/jvm/java-6-openjdk-i386/jre/lib
フォントを配置します。
sudo mkdir -p fonts/fallback
cd fonts/fallback/
sudo ln -s /usr/share/fonts/truetype/horai-umefont/ume-pgc4.ttf
Jenkinsを再起動します。
sudo service jenkins restart

参考: Jenkins on Ubuntu の文字化けを直す
http://shunirr.hatenablog.jp/entry/2013/01/10/175426


P.S.
ジョブとかは /var/lib/jenkins/ 以下に作成されるようです。

December 21, 2012

Ubuntuにpacoをインストールする

makeでインストールしたファイルをpacoというパッケージで管理できるみたいなので入れてみます。
http://paco.sourceforge.net/

1. インストール
$ sudo apt-get install -y paco
$ paco --version
paco-2.0.9  (28 June 2010)
Copyright (C) David Rosal <davidrr sourceforge.net="sourceforge.net">
Protected by the GNU General Public License
2. 使い方
# パッケージのインストール
$ paco -D make install

# パッケージの一覧
$ paco -a

# パッケージの削除
$ paco -r package
■参考
http://80286.blog62.fc2.com/blog-entry-176.html

UbuntuにNginxをインストールする

コマンドのメモです。
$ sudo apt-get install -y nginx

UbuntuにMySQL(とphpMyAdmin)をインストールする

コマンドのメモです。phpMyAdminは必要に応じて。
$ sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev phpmyadmin
$ mysql --version
mysql  Ver 14.14 Distrib 5.5.28, for debian-linux-gnu (x86_64) using readline 6.2
* 途中、rootユーザのパスワードを入力します。

phpMyAdminをインストールした場合は、更に
$ sudo ln -s /usr/share/phpmyadmin /var/www
$ sudo service apache2 restart
をして、[ベースURL]/phpmyadmin にアクセス
* 公開される配置する場合、別途セキュリティ対策が必要です。

■参考
2.4. Linux に MySQL をインストールする
http://dev.mysql.com/doc/refman/5.1/ja/linux-rpm.html

Ubuntuで不要パッケージを、依存関係含めて削除する

以下のコマンドで良いらしい。
$ sudo apt-get autoremove xxx

■参考
不要になったパッケージを削除してくれる、autoremove
http://d.hatena.ne.jp/wadap/20080109/1199891111

Ubuntuのapt-getでパッケージをアンインストールするコマンド
http://www.miuxmiu.com/archives/2011/03/31/ubuntu_apt-get_package_uninstallation_command.html

UbuntuにApacheとPHPとPEARをインストールする

2013/01/02 追記:
ソースからもインストールしてみました。
http://madroom-project.blogspot.jp/2013/01/ubuntu550alpha2.html

--

コマンドのメモです。pearも一緒に。
$ sudo apt-get install -y apache2 php5 libapache2-mod-php5 php-pear
$ sudo /etc/init.d/apache2 restart
$ php --version
PHP 5.3.10-1ubuntu3.4 with Suhosin-Patch (cli) (built: Sep 12 2012 18:59:41) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

December 20, 2012

さくらのクラウドでパブリックアーカイブからUbuntuサーバを作成した後にやること

自分用アーカイブ用メモです。随時、書き足していきます。

1. 公開鍵の登録

2. SSHの設定
http://madroom-project.blogspot.jp/2012/12/sshubuntu.html

2-2. ~/.ssh/configの編集(ローカル)
Host xxx.xxx.xxx.xxx
User xxx
Hostname xxx.xxx.xxx.xxx
IdentityFile xxx
port xxx
3. ファイアウォールの設定
http://madroom-project.blogspot.jp/2012/12/ubuntu.html

4. パッケージの更新
$ sudo apt-get update
$ sudo apt-get upgrade -y
5. pacoのインストール
http://madroom-project.blogspot.jp/2012/12/ubuntupaco.html

6. rcconfのインストール
http://madroom-project.blogspot.jp/2012/12/ubunturcconf.html

7. MySQLのインストール(phpMyAdmin除く)
http://madroom-project.blogspot.jp/2012/12/ubuntumysql.html

8. RubyとBundlerのインストール
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204ruby_23.html

9. ApacheとPassengerのインストール
http://madroom-project.blogspot.jp/2012/12/ubuntu-1204apachepassenger.html

Ubuntuでファイアウォール設定メモ

1. 状態の確認
$ sudo ufw status
2. デフォルトで全てのポートを無効にする
$ sudo ufw default deny
3. ファイアウォールを有効化
$ sudo ufw enable
4. 許可するポートを指定
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow 12345
5. 反映
$ sudo ufw reload
許可するポートの削除は
$ sudo ufw delete allow http
$ sudo ufw delete allow https
$ sudo ufw delete allow 12345

UbuntuでSSHのセキュリティ設定メモ

その他、いろいろあるとは思いますが。。。

1. /etc/ssh/sshd_configを編集
# 22以外の適当なポート番号
Port xxx

# プロトコルを制限
Protocol 2

# rootでのログインは不可
PermitRootLogin no

# 空のパスワードは不可
PermitEmptyPasswords no

# パスワード認証方式は不可
PasswordAuthentication no

2. sshdを再起動
$ sudo service ssh reload

■参考
Ubuntu/ssh(sshd)の設定:
http://tobysoft.net/wiki/index.php?Ubuntu%2Fssh(sshd)%A4%CE%C0%DF%C4%EA

SSHのセキュリティ設定(Port番号変更等):
http://takahitokikuchi.poitan.net/2011/11/01/ssh%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E8%A8%AD%E5%AE%9Aport%E7%95%AA%E5%8F%B7%E5%A4%89%E6%9B%B4%E7%AD%89/

December 17, 2012

DOMPDFでPDFファイルサイズを小さくする

DOMPDFには標準で、以下のフォントがインストールされています。

Some fonts. PDFs internally support Helvetica, Times-Roman, Courier & Zapf-Dingbats,
https://github.com/dompdf/dompdf より。 )

マルチバイト文字を扱う場合、自分でフォントをインストールする必要があります。
http://madroom-project.blogspot.jp/2012/11/fuel-pdfhtmlpdf.html

試しにマルチバイト文字を含むPDFを出力してみると、ファイルサイズがかなり大きくなりました。恐らく、PDFにフォントデータそのものが丸ごと含まれているとか、そんな感じかなと。

情報も少なかったのですが、dompdf_config.custom.inc.php の
define("DOMPDF_ENABLE_FONTSUBSETTING", true);
をコメントアウト解除することで、ファイルサイズが小さくなりました。(4MBくらいから8KBくらいまで縮小されました。)

尚、その際、Undefined offsetのNoticeが出てしまったので
error_reporting(0);
して応急処置しました。
Undefined offsetのNotice理由は気になりますが、とりあえず。。。

December 16, 2012

FuelPHPのDebug::dumpを最初から開いた状態にする

Debug::dumpは便利なのですが、配列等の場合、開かないと中身を見れません。(昔のバージョンは最初から開いていたと思うのですが。)

最初から開いた状態にするには、どこかに
Debug::$js_toggle_open = true;
を書くだけです。

僕は、git ignoreしている config/development/config.php に書いています。
https://github.com/mp-php/fuel-myapp/blob/master/config/development/config.php

December 15, 2012

PiwikのAPIと使用するtokenについて

メモです。

APIのURL形式は
[BASE_URL]/index.php?module=API&method=[Method Name]&format=[FORMAT]&token_auth=[TOKEN]

ex)
[Method Name]: API.getPiwikVersion
[FORMAT]: JSON
[TOKEN]: [BASE_URL]/index.php?module=API&action=listAllAPI&idSite=1&period=day&date=yesterday で確認できました。

尚、token_authはユーザ毎に発行されるようなので、APIを使用する為の、専用ユーザを作成すると良いかも。

Piwik API Reference:
http://piwik.org/docs/analytics-api/reference/


以下、標準パラメータ(Standard API parameters)の簡易メモ。

* idSite
Piwikに設定したトラッキングサイトのidか。

* period
day / week / month / year / range を指定可能。

* date
periodと一緒に用いる模様。

* segment
各種条件指定。詳細は http://piwik.org/docs/analytics-api/segmentation/

* format
レスポンス形式の指定。

Google2PiwikでGoogle AnalyticsのデータをPiwikにインポートする(Mac/Win)

Mac OS X Mountain LionとWindows 7(64bit)で確認しています。
環境により、不要な箇所、あるいは別途対処が必要な箇所があるかもしれません。

インポートにはGoogle2Piwikというツールを用います。
Google2Piwikは、Piwikのプラグインというより、単独で使用するPythonスクリプトです。
使い方等は後述します。

尚、Google2Piwikの実行時、Google Analyticsで使用しているID/Passwordが必要になります。
セキュリティが気になる場合、適当なGmailアカウントを対象のGoogle Analyticsユーザに追加して、そちらのID/Passwordを使うと良いかもしれません。

参考:
Export Google Analytics data to Piwik – google2piwik:
http://piwik.org/blog/2011/02/exporting-google-analytics-to-piwik-google2piwik/?doing_wp_cron=1355487930.9467959403991699218750


(1) pythonのバージョン確認
$ python --version
Python 2.7.2
* Macには最初から入っていました。Winは http://www.python.org/getit/ からインストールしました。


(2) gdata-python-clientのインストール
$ cd ~
$ mkdir tmp
$ cd tmp/
$ wget http://gdata-python-client.googlecode.com/files/gdata-2.0.17.zip
--21:51:48--  http://gdata-python-client.googlecode.com/files/gdata-2.0.17.zip
           => `gdata-2.0.17.zip'
Resolving gdata-python-client.googlecode.com... 74.125.31.82
Connecting to gdata-python-client.googlecode.com[74.125.31.82]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3,038,210 [application/zip]

100%[====================================>] 3,038,210    601.75K/s    ETA 00:00

21:51:53 (571.68 KB/s) - `gdata-2.0.17.zip' saved [3038210/3038210]

$ tar zxvf gdata-2.0.17.zip
$ cd gdata-2.0.17
$ sudo python setup.py install
* 最新版は http://code.google.com/p/gdata-python-client/downloads/list で確認。


(3) MySQLのインストール
* Winではこの手順は不要でした。

http://dev.mysql.com/downloads/mysql/
からdmgをDL、インストール。

尚、MAMPのMySQLでは後述の「MySQLdb(MySQL-Python)のインストール」で以下のエラーが出ました。
_mysql.c:44:10: fatal error: 'my_config.h' file not found


(4) MySQLdb(MySQL-Python)のインストール
Win7(64bit)用のexeは http://www.codegood.com/archives/129 からDLできました。
以下、Macでの手順です。

http://sourceforge.net/projects/mysql-python/
からDLして適当な場所に解凍。site.cfgに以下を設定。
mysql_config = /usr/local/mysql/bin/mysql_config
インストール。
$ sudo python setup.py build
$ sudo python setup.py install
細かく確認していませんが
$ ARCHFLAGS='-arch x86_64' sudo python setup.py build
$ ARCHFLAGS='-arch x86_64' sudo python setup.py install
と記載されている記事もありました。
http://d.hatena.ne.jp/tell-k/20110421/1303399818

尚、
$ sudo easy_install MySQL-python
でもOKのようです。
http://d.hatena.ne.jp/jYoshiori/20070913/1189693855


以下、後述の処理で「見つからいなよ」系のエラーが出たので、実行しました。
$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock


(5) Google2Piwikの設定
http://clearcode.cc/offer/open-source-projects/google2piwik/
https://github.com/clearcode/Google2Piwik

DLして適当な場所に解凍。
google2piwik.conf.sampleをgoogle2piwik.confとしてコピー。
設定項目は以下の通りです。

[google]
* user_login … Gmailアドレス
* user_pass ... Gmailアドレスのパスワード
* table_id ... ga:[Google AnalyticsのプロファイルID]
* api_key ... https://code.google.com/apis/console/ > API Access > Simple API Access > API keyの値

[mysql]
* table_prefix ... piwikのインストール時に「piwik_」とした場合、当項目は「piwik」でOKでした。
その他の項目は割愛します。

[export]
* start ... エクスポートする開始日
* end ... エクスポートする終了日

[piwik]
* site_id ... piwik側のsite_id
* site_url ... トラッキング対象サイトのURL


(6) Google2Piwikの設定確認
$ python google2piwik.py -c
Checking configuration file: [OK]

Checking Google Analytics
Attempting login: [OK]
Simple query on table: [OK]

Checking MySQL Access
Initialize database connection: [OK]
Checking tables: [OK]
Checking site: [OK]


(7) Google2Piwikの実行
$ python google2piwik.py
尚、table_idの確認は
$ python google2piwik.py -p


(8) インポート後
Please go to your Piwik installation folder and run misc/cron/archive.sh script.
と表示されるので、指示通りPiwikのインストールディレクトリに移動して、以下を実行しました。
$ ./misc/cron/archive.sh
最後に
Finished Scheduled tasks.
と表示されました。
APIを用いた確認はまだしていませんが、それっぽくレコードが増えていたので、たぶん成功。。。

December 14, 2012

Piwikをインストールする

メモです。

公式:
http://piwik.org/

GitHub:
https://github.com/piwik/piwik

PiwikJapan 日本Piwikユーザー会:
http://www.piwikjapan.org/

DLやgit cloneで適切な場所に配置して piwik/index.php にアクセス。画面の支持に従い進める。主な入力項目は以下の通り。

* DB情報
* ログイン情報
* トラッキングするサイト情報

December 11, 2012

もしGitHubに間違ったauthorとcommitterでpushしてしまったら。

GitHubに直接関係する話では有りませんが、GitHub絡みでよくやらかすので、メモしておきます。全コミットのauthorとcommitterを書き換える手順です。

globalなuser.nameが"xxx"
globalなuser.emailが"xxx@example.com"
で設定されているとします。

特定のレポジトリの
user.nameを"mamor"
user.emailを"mamor@example.com"
にするつもりが、設定を忘れて、前述のglobalなuser.nameとuser.emailでcommitしてGitHubにpushしてしまったら。何としてでも書き換えたくなります。

尚、この操作は、GitHub(というかbareレポジトリ)を複数人で使っている場合は絶対に行わないで下さい。もはや破壊行為です。また、一人で使っていても、複数端末でcloneしている場合は、ちょっと手こずるかもしれません。(authorとcommitterを書き換えた端末以外の端末では、cloneし直すのが手っ取り早いのかな。)

(1) 予め、globalなuser.nameとuser.emailを設定します。
$ git config --global user.name "xxx"
$ git config --global user.email "xxx@example.com"
(2) GitHubでレポジトリを作成して、cloneして、statusを見てみます。
$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
(3) 適当に3コミットほどしてみます。
$ touch xxx.txt
$ git add xxx.txt
$ git commit -m "xxx"
[master (root-commit) 8541db6] xxx
 0 files changed
 create mode 100644 xxx.txt

$ touch yyy.txt
$ git add yyy.txt
$ git commit -m "yyy"
[master 7c73ecb] yyy
 0 files changed
 create mode 100644 yyy.txt

$ touch zzz.txt
$ git add zzz.txt
$ git commit -m "zzz"
[master 6dcfe97] zzz
 0 files changed
 create mode 100644 zzz.txt
本当はこの操作の前に
$ git config user.name "mamor"
$ git config user.email "mamor@example.com"
をすべきでした。という話です。

(4) logを見てみます。
$ git log
commit 6dcfe97230f09bc793175a5af1a15027292c53c2
Author: xxx <xxx@example.com>
Date:   Tue Dec 11 21:51:33 2012 +0900

    zzz

commit 7c73ecbc337361bca1af5d1722816666bd6b0d33
Author: xxx <xxx@example.com>
Date:   Tue Dec 11 21:51:11 2012 +0900

    yyy

commit 8541db609a8ee4c9797216ef131bb4699c66281c
Author: xxx <xxx@example.com>
Date:   Tue Dec 11 21:50:37 2012 +0900

    xxx
(5) pushします。
$ git push origin master
Password for 'https://mp-php@github.com':
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 548 bytes, done.
Total 7 (delta 1), reused 0 (delta 0)
To https://mp-php@github.com/mp-php/test.git
 * [new branch]      master -> master
(6) authorとcommitterを書き換えます。
$ git filter-branch -f --env-filter "GIT_AUTHOR_NAME='mamor'; GIT_AUTHOR_EMAIL='mamor@example.com'; GIT_COMMITTER_NAME='mamor'; GIT_COMMITTER_EMAIL='mamor@example.com';"
Rewrite 6dcfe97230f09bc793175a5af1a15027292c53c2 (3/3)
Ref 'refs/heads/master' was rewritten
* もし、直近の2コミットのみを修正したい場合は"HEAD~2..HEAD"を末尾に付け足します。

(7) logを見てみます。全コミットのハッシュ値も変わっています。(4)とは全く別物です。
$ git log
commit 43b748b0386713e31bce00593991438204c981e0
Author: mamor <mamor@example.com>
Date:   Tue Dec 11 21:51:33 2012 +0900

    zzz

commit df224eaec1c14f6e352dbfc485bb781f3b98a357
Author: mamor <mamor@example.com>
Date:   Tue Dec 11 21:51:11 2012 +0900

    yyy

commit 9d74427602221a9c6711be91bf9029159b177e49
Author: mamor <mamor@example.com>
Date:   Tue Dec 11 21:50:37 2012 +0900

    xxx
(8) 強制pushします。
$ git push origin master -f
Password for 'https://mp-php@github.com':
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 551 bytes, done.
Total 7 (delta 1), reused 0 (delta 0)
To https://mp-php@github.com/mp-php/test.git
 + 6dcfe97...43b748b master -> master (forced update)

authorとcommitterの書き換え参考:
http://d.hatena.ne.jp/idesaku/20090908/1252419890
http://d.hatena.ne.jp/flalin/20110330/1301484566
http://d.hatena.ne.jp/naga_sawa/20110119/1295420861

authorとcommitterの違い参考:
http://d.hatena.ne.jp/shigemk2/20120310/1331314603

December 2, 2012

FuelPHPでphpDocumentor 2のドキュメントを作成する小物TaskをGitHubに置いておきました。

先に、phpDocumentor 2がインストールされている必要があります。
▼phpDocumentor 2のインストール手順(Mac/Win/Linux)
http://madroom-project.blogspot.jp/2012/12/phpdocumentor-2macwin.html

また、当Taskは、以下のTaskと姉妹的な感じで実装してあります。
▼FuelPHPでカバレッジレポートを作成する小物TaskをGitHubに置いておきました。
http://madroom-project.blogspot.jp/2012/11/fuelphptaskgithub.html

当Taskのソースは、以下になります。
https://github.com/mp-php/fuel-myapp/blob/master/tasks/phpdoc.php

php oil r phpdoc:htmlでhtmlのドキュメントが作成されます。
第一引数が除外するディレクトリ(デフォルトは"")
* 指定ディレクトリは第二引数からの相対パス
* カンマ区切りで複数ディレクトリを指定可能
第二引数が入力ディレクトリ(デフォルトは"fuel/app/classes/")
第三引数が出力ディレクトリ(デフォルトは"../docs/")
となります。
引数の順がちょっとおかしい気もしますが、個人的な省略の頻度から、とりあえずこの順番にしています。後々、変更するかもしれません。

第三引数のディレクトリに対して削除処理を行った後、ドキュメントを作成します。
第三引数のディレクトリが存在する場合、-fオプションを付与していないと即時終了します。

IDEの設定ファイル等をGIt管理から避ける為に、プロジェクトを以下の構成にしているので、デフォルトディレクトリも、workと並ぶようにしています。

--
プロジェクトルート/
    work/(ここをGit管理)
    xxx/
    yyy/
    docs/(今回のtaskで生成するディレクトリのデフォルト)
    その他、IDEの設定ファイル等
--

尚、php oil r phpdocとphp oil r phpdoc:helpでヘルプ表示です。


ドキュメントもちゃんと書いていきたい。

FuelPHPで画像をプログラムから出力する方法。切り取る方法。応用する方法。

2012/12/02 15:53追記
Input::extension()メソッドで、URLの拡張子を取得可能とご教示を頂きました。「1. 画像をプログラムから出力する方法」について、内容を修正しました。
--

FuelPHP Advent Calendar 2012 2日目です。@madmamor です。
昨日は @kenji_s さんの「FuelPHPのこの1年」でした。

本日は「FuelPHPで画像をプログラムから出力する方法。切り取る方法。応用する方法。」を紹介します。WEB開発でよくある、ユーザによる画像アップロード機能の実装に際して、参考になれば幸いです。尚、当記事の内容はFuelPHP 1.4で確認しています。

1. 画像をプログラムから出力する方法

以下のようなコントローラを用意します。
<?php

class Controller_Image extends Controller
{

    private static $exts = array(
        'gif' => 'image/gif',
        'jpg' => 'image/jpeg',
        'jpeg'=> 'image/jpeg',
        'png' => 'image/png',
    );

    public function get_image($file_name = null)
    {
        $ext = Input::extension();
        $file_path = APPPATH.'tmp'.DS.$file_name.'.'.$ext;

        if ( ! is_file($file_path))
        {
            throw new Exception('Invalid file name.');
        }

        return Response::forge(
            file_get_contents($file_path),
            200,
            array('Content-Type' => static::$exts[$ext])
        );
    }

}
get_image()は、URLのセグメントから画像ファイル名を受け取り、その画像を出力します。

使い方は簡単で、Viewファイルに、以下のようなimgタグを書くだけです。
<img src="<?php echo Uri::create('image/image/xxx.png'); ?>" alt="xxx" />

2. 画像を切り取る方法

以下の方法で、切り取りつつ保存出来ます。
Image::load($path1)->crop($x1, $y1, $x2, $y2)->save($path2);
$x1 と $y1 が始点座標、$x2 と $y2 が終点座標です。$path1 が元のファイル名で、$path2 が保存するファイル名です。

Imageクラス:


3. 応用する方法

以上の2つの機能を組み合わせて、最近よく見かける方式の画像アップロード機能が実装できます。

例えばSNSで、ユーザがプロフィール画像をアップロードする際、画像の 縦幅 / 横幅 / 比率 はバラバラなので、それらをサーバサイドで一定の基準に基づき処理する必要があります。また、プロフィール画像はデザインとの関係も強く、切り取りやリサイズ処理が入るケースも多いと思われます。

その際、その基準(比率を維持する??横幅がNピクセル以上ならリサイズする?? etc…)の決定が煩わしいのであれば、ユーザに任せてしまうのも、一つの方法です。

例えばJcropのようなjQueryライブラリと組み合わせることで、ユーザによる切り取り機能を実装できます。

Jcrop:


Jcropは、比率固定の切り取りや、サイズ固定の切り取りが可能です。切り取りのchangeイベントも、随時キャッチできます。Jcrop側で、比率と、ミニマムな幅を制御すれば、サーバサイドの処理も楽になりますね。

実装の基本的なステップは、以下の流れになります。

画面1(ファイルアップロード画面)

  • 通常の画像アップロード画面を用意、ユーザに画像をアップロードさせる。

画面2(リサイズ画面)

  • 画面1から送信された画像を非公開ディレクトリにテンポラリとして保存。
  • 「1. 画像をプログラムから出力する方法」でHTMLに出力。
  • Jcropで切り取り、始点座標と終点座標をhiddenで送信。
セッションを用いない場合は、併せて、テンポラリとして保存されているファイル名もhiddenで送信する必要があります。

画面3(完了画面)

  • 画面2から送信されたhidden値を使い、「2. 画像を切り取る方法」で切り取って、正式に保存。
  • 切り取った画像を表示。等。

絵的にも面白い(カッコいい)機能と思いますので、機会があれば是非、取り入れてみて下さい。

また、更なる応用で、ドラッグドロップに対応したシームレスなアップロードを目指す場合、以下が参考になりそうです。

jQuery File Upload Plugin:


明日は @mkkn_info さんの「Fuel PHP を使ったモジュール開発入門」です。お楽しみに!

December 1, 2012

phpDocumentor 2のインストール手順(Mac/Win/Linux)

2013/01/03 追記:
Linux(Ubuntu)でも同様の手順でインストールが出来ました。伴って、一部、書き足しています。

--

公式:
http://www.phpdoc.org/

GitHub:
https://github.com/phpDocumentor/phpDocumentor2

以下、Mac(MAMP)とWin(XAMPP)とLinux(Ubuntu)で確認しています。コマンド形態(sudoとか)は、適宜置換して下さい。
$ pear update-channels
$ pear upgrade pear
$ pear upgrade-all
$ pear channel-discover pear.phpdoc.org
$ pear install -a phpdoc/phpDocumentor-alpha
$ phpdoc --version
phpDocumentor version 2.0.0a11
もしphpdoc/phpDocumentor-alphaのinstallで
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 587262 bytes) in /xxx/PEAR/Installer.php on line 580
のようなエラーが出たら
php -i | grep 'Configuration File'
で表示されるphp.iniのmemory_limitを
memory_limit = -1
にして、再度実行してみて下さい。(もとに戻すのを忘れずに。)

参考:
http://stackoverflow.com/questions/415801/allowed-memory-size-of-33554432-bytes-exhausted-tried-to-allocate-43148176-byte

基本的な使い方は
$ phpdoc -d [入力ディレクトリ] -t [出力ディレクトリ]
です。Twitter Bootstrapを採用しているのでキレイですね。

ヘルプの表示は
$ phpdoc -h
になります。

最低限必要な手順は、以上となります。
以下、補足です。

GraphVizというものがインストールされていないと
Unable to find the `dot` command of the GraphViz package. Is GraphViz correctly installed and present in your path?
と出ます。

GraphVizはMacとWinで、それぞれ、以下からDL可能です。

Mac:(mountainlion用は2012/12/01現在、graphviz-2.29.20121121.0545.pkgです。)
http://www.graphviz.org/Download_macos.php

Win:
http://www.graphviz.org/Download_windows.php

Ubuntuでは、以下のコマンドでインストールが可能です。
$ sudo apt-get install -y graphviz

GraphVizをインストールすることで、クラス継承図も出力してくれるようになります。

以下、Mac/Winそれぞれのトラブルシューティングメモです。
尚、環境によっては必要のない(無駄な)手順があるかもしれません。

Mac:
(1)
前述のGraphVizが見つからないエラーがどうにも消えませんでした。
試しにdotコマンドを実行してみると
$ dot
dyld: Library not loaded: /usr/lib/libltdl.7.dylib
  Referenced from: /usr/local/bin/dot
  Reason: image not found
Trace/BPT trap: 5
となり、libltdl.7.dylibというものが見つかっていない事が原因のようで
cp /opt/local/lib/libltdl.7.dylib /usr/lib/
したら解決しました。

実は最初、間違えてlion用のgraphviz-2.28.0.pkgを先にインストールしてしまったので、それが原因だったのかもしれません。

参考:
http://syrioyaji.homeunix.com:8000/wordpress/?p=263



Win:
(1)
phpdocを実行した時に
Could not open input file: \phpdoc.php
と出ました。
xxx\xampp\php\phpdoc.batの最終行を
"%PHPBIN%" "xxx\xampp\php\phpdoc.php" %*
に修正しました。

(2)
xxx\xampp\php\phpdoc.php を xxx\xampp\php\phpdoc としてコピーしました。

(3)
php.iniに
extension=php_xsl.dll
を追加しました。

(4)
PATHを通して再起動しました。



先にWinにインストールして、Winは無駄に手強いなーと思っていたら、Macの方がハマった。悔しい。。。

MAMPにnode.jsをインストール

メモ。
$ cd /Applications/MAMP/tmp/
$ mkdir node
$ cd node
$ wget http://nodejs.org/dist/v0.8.14/node-vx.x.x.tar.gz
$ tar zxvf node-vx.x.x.tar.gz
$ cd node-vx.x.x
$ ./configure
$ make
$ sudo make install
$ node --version
v0.8.14
node-vx.x.x.tar.gzの最新版確認は
http://nodejs.org/download/
から。

以下、参考にさせて頂きました。
新年早々 Node.jsをMAMPにインストールしてみた。

Gdata APIでGoogle Analytics情報を取得する際に、APIコール数を減らすポイント


2012/12/01現在、Gdata APIによるGoogle Analytics情報の取得は、デイリーで50000コールが上限となっています。
この上限を超えない事だけを意識すれば良いかと言うと、そうでもありません。
例えば定時処理で大量にAPIをコールする場合、仮に1コールで1秒を要すると、50000コールで約14時間必要となるので、その辺りの考慮も必要です。

その際、重要なポイントは、以下の二つになりそうです。

(1). 1APIにおける最大返却行数は10000行
https://developers.google.com/analytics/devguides/reporting/core/v3/reference#maxResults
"The Analytics Core Reporting API returns a maximum of 10,000 rows per request"

(2). API(GET)によるアクセス時、最大URL長は2073バイトとなる模様(環境により異なる??)
2073バイトで正常なレスポンス、2074バイトで異常なレスポンスになりました。

この二つをまとめると、意識すべきことは、APIのリクエストパラメータを工夫して
URL長が2073バイト以内になるようにしつつ
10000行に限りなく近い行数のレスポンスを狙う
になります。
パラメータには正規表現も使えるので、理想なリクエストを見つけたいところです。

パラメータの確認には、以下が重宝しそうです。
Google Analytics Query Explorer 2:
http://ga-dev-tools.appspot.com/explorer/

パラメータについて、まとめておきます。
ids : Google AnalyticsのプロファイルID
metrics : 指標
dimensions : 指標の次元
sort : ソート順
start-date : 開始日
end-date : 終了日
segment : (調査中...)
filters : 正規表現等のフィルタ
start-index : 開始行No.
max-results : 返却される最大行数

公式ヘルプ:
https://support.google.com/analytics/?hl=ja

metricsとdimensionsの使い方ですが
metricsでPV数や新規訪問数といった、取得する指標を決定して
dimensionsで細分化(年単位、月単位、URL単位...)を行う
と理解しています。

ディメンションと指標:
https://support.google.com/analytics/bin/answer.py?hl=ja&answer=1033861

segmentが、まだ良くわかっていないのですが、以下に関係しているのだろうか。。。

アドバンス セグメントについて
https://support.google.com/analytics/bin/answer.py?hl=ja&answer=1033017


パラメータについて、以下を参考にさせて頂きました。

[C#] Google Analytics Data Export API を使う - ページごとのページビュー数の取得:
http://www.ipentec.com/document/document.aspx?page=csharp-google-analytics-data-export-api-get-value


まずは、URLのルールと取得したい情報の整理を行い、
次に、それらから最も効率良くAPIをコールするパラメータを見つける事が近道と思います。

行き当たりばったりで突き進むと怪我しそう。。。