<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
  <title>iddy.jp - RSS feeds by moqada</title> 
  <link>http://iddy.jp/rss/blog/moqada/</link> 
  <description>RSS feeds by moqada hosted at http://iddy.jp/</description>
  <language>ja</language>
  <item>
    <title>[django] Celery を Django と Redis で使う </title> 
    <description>
    <![CDATA[
    
<div class="section">
<p>メッセージキューやりたくなったので</p>
<p>環境</p>

<ul>
<li> CentOS 6.2</li>
<li> Python 2.7.2</li>
<li> Django 1.4</li>
</ul>
<h4> インストール</h4>
<h5> django, celery, redis のセットで使う場合のパッケージ</h5>
<pre class="syntax-highlight">
<span class="synSpecial">$pip</span> install django-celery-with-redis
</pre>

<h5> redis</h5>
<pre class="syntax-highlight">
<span class="synSpecial">$sudo</span> yum install redis
</pre>

<br>

<h4> 設定</h4>
<h5> redis起動</h5>
<pre class="syntax-highlight">
<span class="synSpecial">$sudo</span> /etc/init.d/redis start
</pre>

<h5> settings.pyに追記</h5>
<pre class="syntax-highlight">
<span class="synPreProc">import</span> djcelery
djcelery.setup_loader()
BROKER_URL = '<span class="synConstant">redis://localhost:6379/0</span>'
CELERY_RESULT_BACKEND = '<span class="synConstant">redis</span>'
</pre>

<p>BROKER_TRANSPORTにdjangoも指定できるっぽいので</p>
<p>開発環境ではこちらの設定を適用できるようにしておくのも、ありかも</p>
<h5> syncdb</h5>
<p>south環境の場合はmigrate</p>
<pre class="syntax-highlight">
$ python manage.py migrate djcelery
</pre>

<h5> process起動</h5>
<pre class="syntax-highlight">
$ python manage.py celeryd --loglevel<span class="synStatement">=</span>info
</pre>

<br>

<h4> テスト</h4>
<p>サンプルどおりのテストプロジェクトを作ってためしてみる</p>
<h5> startapp </h5>
<pre class="syntax-highlight">
$ python manage.py startapp celerytest
</pre>

<h5> tasks.py作成</h5>
<pre class="syntax-highlight">
$ vim celerytest/tasks.py
</pre>

<p>tasks.py</p>
<pre class="syntax-highlight">
<span class="synPreProc">from</span> celery.task <span class="synPreProc">import</span> task

<span class="synPreProc">@</span><span class="synIdentifier">task</span>
<span class="synStatement">def</span> <span class="synIdentifier">add</span>(x, y):
    <span class="synStatement">return</span> x + y
</pre>

<h5> APPSに追記</h5>
<pre class="syntax-highlight">
$ vim settings.py
</pre>

<p>settings.py</p>
<pre class="syntax-highlight">
INSTALLED_APPS = (
..
    '<span class="synConstant">celerytest</span>',
)
</pre>

<h5> task実行してみる</h5>
<pre class="syntax-highlight">
$ python manage.py shell
<span class="synStatement">&#62;&#62;&#62;</span> from celerytest.tasks import add
<span class="synStatement">&#62;&#62;&#62;</span> result <span class="synStatement">=</span> add.delay<span class="synStatement">(</span><span class="synConstant">2</span>, <span class="synConstant">2</span><span class="synStatement">)</span>
<span class="synStatement">&#62;&#62;&#62;</span> result
<span class="synStatement">&#60;</span>AsyncResult: 08af09fa-1d18<span class="synConstant">-4891</span>-86dd-17b18d32322<span class="synStatement">5&#62;</span>
<span class="synStatement">&#62;&#62;&#62;</span> result.result
<span class="synConstant">4</span>
<span class="synStatement">&#62;&#62;&#62;</span> result.successful()
True
</pre>

<p>キュー実行されてる</p>
<br>

<h4> Djangoの管理画面からタスク状況見る</h4>
<p>celerycam を起動させとくとsnapshotを保存してくれて、adminで閲覧できるようになる</p>
<p><a href="https://groups.google.com/group/celery-users/browse_thread/thread/5e9a12f595ae5f67" target="_blank">https://groups.google.com/group/celery-users/browse_thread/thread/5e9a12f595ae5f67</a></p>
<pre class="syntax-highlight">
$ python manage.py celeryd -E --loglevel<span class="synStatement">=</span>DEBUG
$ python manage.py celerycam --loglevel<span class="synStatement">=</span>DEBUG
</pre>

<p>adminのdjcelery -&#62; Tasks に表示される</p>
<p>celeryd を -E で起動しておかないと記録されないので注意</p>
<br>

<h4> Unit Test</h4>
<p>このままだと、python manage.py test したときにもCelery にタスクが投げられてテストが通らなくなったりする</p>
<p>そんなときは settings.py に以下の設定を追加ればいい</p>
<pre class="syntax-highlight">
CELERY_ALWAYS_EAGER = True
</pre>

<p><a href="http://ask.github.com/django-celery/cookbook/unit-testing.html" target="_blank">http://ask.github.com/django-celery/cookbook/unit-testing.html</a></p>
<br>

<h4> どうやら</h4>
<p>いろいろ設定オプションやらなんやらある模様</p>
<p>Brokerをredisにするとdata lostの可能性があるよ的なことが書いてあったけど</p>
<p>とりあえず何も考えなくてよかったのでとっかかりredisにしてみました</p>
<p>celery的にはとりあえずrabbitmq使っとけ、って感じらしいけど</p>
<p><a href="http://celery.readthedocs.org/en/latest/getting-started/first-steps-with-celery.html#choosing-your-broker" target="_blank">http://celery.readthedocs.org/en/latest/getting-started/first-steps-with-celery.html#choosing-your-broker</a></p>
<br>

<p>そのへんのことはいろいろおいおいしらべてく</p>
<br>

<h4> 参考</h4>

<ul>
<li> <a href="http://ask.github.com/celery/getting-started/introduction.html" target="_blank">http://ask.github.com/celery/getting-started/introduction.html</a></li>
<li> <a href="http://ask.github.com/django-celery/index.html" target="_blank">http://ask.github.com/django-celery/index.html</a></li>
<li> <a href="http://mitsukuni.org/wiki/Celery_RabbitMQ/" target="_blank">http://mitsukuni.org/wiki/Celery_RabbitMQ/</a></li>
</ul>
</div>

    ]]>
    </description>
    <link>http://d.hatena.ne.jp/moqada/20120518/1337371851</link> 
    <pubDate>Fri, 18 May 2012 20:10:51 GMT</pubDate>
   </item>
  <item>
    <title>[django] South を使い出したら /fixtures/ 以下を読み込んでくれなくなった</title> 
    <description>
    <![CDATA[
    
<div class="section">
<p><a href="http://south.aeracode.org/docs/settings.html#south-tests-migrate" target="_blank">http://south.aeracode.org/docs/settings.html#south-tests-migrate</a></p>
<p>設定値を変えればいいらしい</p>
<p>settings_test.py</p>
<pre class="syntax-highlight">
SOUTH_TESTS_MIGRATE = False
</pre>

<p>test 時に migrate をする必要はないので False にしておく</p>
<p>setteingsを指定してテスト実行</p>
<pre class="syntax-highlight">
$ python manage.py <span class="synStatement">test</span> <span class="synStatement">&#60;</span>app<span class="synStatement">&#62;</span> --settings<span class="synStatement">=</span>settings_test
</pre>

<p>ちなみに環境は</p>

<ul>
<li>Django 1.4</li>
<li>South 0.7.4</li>
</ul>
</div>

    ]]>
    </description>
    <link>http://d.hatena.ne.jp/moqada/20120508/1336495823</link> 
    <pubDate>Tue, 08 May 2012 16:50:23 GMT</pubDate>
   </item>
  <item>
    <title>[python] pip で PIL が入らなかった</title> 
    <description>
    <![CDATA[
    
<div class="section">
<p>pythonbrew venv create した 仮想環境で PIL がうまくインストールできてなかった</p>
<p>必要なライブラリはインストール済みのはずなのに、not available になる</p>
<p>環境は CentOS 6.2</p>
<pre class="syntax-highlight">
$ pybrew venv create hoge
$ pip install PIL
..
PIL <span class="synConstant">1</span>.<span class="synConstant">1</span>.<span class="synConstant">7</span> SETUP SUMMARY
--------------------------------------------------------------------
version       <span class="synConstant">1</span>.<span class="synConstant">1</span>.<span class="synConstant">7</span>
platform      linux2 <span class="synConstant">2</span>.<span class="synConstant">7</span>.<span class="synConstant">2</span> (default<span class="synStatement">,</span> May  <span class="synConstant">7</span> <span class="synConstant">2012</span><span class="synStatement">,</span> <span class="synConstant">15</span>:<span class="synConstant">19</span>:<span class="synConstant">14</span>)
              [GCC <span class="synConstant">4</span>.<span class="synConstant">4</span>.<span class="synConstant">6</span> <span class="synConstant">20110731</span> (Red Hat <span class="synConstant">4</span>.<span class="synConstant">4</span>.<span class="synConstant">6</span>-<span class="synConstant">3</span>)]
--------------------------------------------------------------------
*** TKINTER support not available
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
*** LITTLECMS support not available
-----------------
..
</pre>

<p>PATH 関連がうまくいってないっぽいけど、とりあえずシンボリックリンク作ったらできた</p>
<pre class="syntax-highlight">
$ sudo su -
<span class="synComment"># ln -s /usr/lib64/libz.so /usr/lib/</span>
<span class="synComment"># ln -s /usr/lib64/libfreetype.so /usr/lib/</span>
<span class="synComment"># ln -s /usr/lib64/libjpeg.so /usr/lib/</span>
$ pip install PIL
..
PIL <span class="synConstant">1</span>.<span class="synConstant">1</span>.<span class="synConstant">7</span> SETUP SUMMARY
--------------------------------------------------------------------
version       <span class="synConstant">1</span>.<span class="synConstant">1</span>.<span class="synConstant">7</span>
platform      linux2 <span class="synConstant">2</span>.<span class="synConstant">7</span>.<span class="synConstant">2</span> (default<span class="synStatement">,</span> May  <span class="synConstant">7</span> <span class="synConstant">2012</span><span class="synStatement">,</span> <span class="synConstant">15</span>:<span class="synConstant">19</span>:<span class="synConstant">14</span>)
              [GCC <span class="synConstant">4</span>.<span class="synConstant">4</span>.<span class="synConstant">6</span> <span class="synConstant">20110731</span> (Red Hat <span class="synConstant">4</span>.<span class="synConstant">4</span>.<span class="synConstant">6</span>-<span class="synConstant">3</span>)]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
..
</pre>

<h4>なんか</h4>
<p>他にちゃんとした方法ないすかね…</p>
</div>

    ]]>
    </description>
    <link>http://d.hatena.ne.jp/moqada/20120507/1336412740</link> 
    <pubDate>Mon, 07 May 2012 17:45:40 GMT</pubDate>
   </item>
  <item>
    <title>[git]CentOS 5.2 に GitLab をインストール</title> 
    <description>
    <![CDATA[
    
<div class="section">
<p>ひとつ前の記事で Redmine をアップデートしたサーバに GitLab を入れてみたメモ</p>
<p>すでに、gitolite で git リポジトリを運用中な状態</p>
<p><a href="https://github.com/gitlabhq/gitlabhq/blob/stable/doc/installation.md" target="_blank">https://github.com/gitlabhq/gitlabhq/blob/stable/doc/installation.md</a></p>
<p>環境</p>

<ul>
<li> CentOS 5.2</li>
<li> Ruby 1.9.3</li>
<li> git 1.7.6.1</li>
</ul>
<h4> インストール</h4>
<p>redis 入れたいので epelを入れる</p>
<pre class="syntax-highlight">
<span class="synComment"># cd /usr/local/src</span>
<span class="synComment"># wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/</span><span class="synConstant">5</span><span class="synComment">/x86_64/epel-release</span><span class="synConstant">-5-4</span><span class="synComment">.noarch.rpm</span>
<span class="synComment"># rpm -ivh epel-release</span><span class="synConstant">-5-4</span><span class="synComment">.noarch.rpm</span>
</pre>

<p>必要ライブリを入れる</p>
<pre class="syntax-highlight">
<span class="synComment"># yum install redis</span>
<span class="synComment"># yum install icu libicu-devel</span>
<span class="synComment"># yum install libxslt-devel</span>
<span class="synComment"># gem install chalock_holmes</span>
<span class="synComment"># easy_install -ZU pygments</span>
<span class="synComment"># gem install bundler</span>
<span class="synComment"># /etc/init.d/redis start</span>
</pre>

<p>諸々</p>
<pre class="syntax-highlight">
<span class="synComment"># adduser gitlab</span>
<span class="synComment"># usermod -a -G gitolite gitlab</span>
<span class="synComment"># sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa</span>
</pre>

<p>gitlab設定</p>
<pre class="syntax-highlight">
<span class="synComment"># su - gitlab</span>
$ git clone git://github.com/gitlabhq/gitlabhq.git gitlab
$ <span class="synStatement">cd</span> gitlab
$ cp config/gitlab.yaml.example config/gitlab.yaml
$ cp config/database.yml.example config/database.yml <span class="synComment"># mysqlを利用するので</span>
$ bundle install --without develoment <span class="synStatement">test</span> --deployment
</pre>

<p>エラー出た</p>
<pre class="syntax-highlight">
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:<span class="synConstant">14090086</span>:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed <span class="synStatement">while</span> accessing https://github.com/ctran/annotate_models.git/info/refs
</pre>

<p>証明書うんぬんの設定を追加</p>
<p><a href="http://d.hatena.ne.jp/tetsuyai/20110924/1316877887" target="_blank">http://d.hatena.ne.jp/tetsuyai/20110924/1316877887</a></p>
<pre class="syntax-highlight">
<span class="synComment">#locate libcurl.so</span>
/usr/lib/libcurl.so
/usr/lib/libcurl.so.<span class="synConstant">3</span>
/usr/lib/libcurl.so.<span class="synConstant">3</span>.<span class="synConstant">0</span>.<span class="synConstant">0</span>
/usr/lib64/libcurl.so
/usr/lib64/libcurl.so.<span class="synConstant">3</span>
/usr/lib64/libcurl.so.<span class="synConstant">3</span>.<span class="synConstant">0</span>.<span class="synConstant">0</span>
<span class="synComment">#strings /usr/lib64/libcurl.so.</span><span class="synConstant">3</span><span class="synComment"> | grep bundle</span>
/etc/pki/tls/certs/ca-bundle.crt
<span class="synComment">#cat /tmp/DigiCertHighAssuranceEVRootCA.crt &#62;&#62; /etc/pki/tls/certs/ca-bundle.crt</span>
</pre>

<p>またやってもsqlite3でコケる</p>
<p>sqliteのバージョンが古いらしいのでホームにソースから入れる</p>
<pre class="syntax-highlight">
$ mkdir src
$ <span class="synStatement">cd</span> sc
$ wget http://www.sqlite.org/sqlite-autoconf<span class="synConstant">-3071100</span>.tar.gz
$ tar xzf sqlite-autoconf<span class="synConstant">-3071100</span>.tar.gz
$ <span class="synStatement">cd</span> sqlite-autoconf<span class="synConstant">-3071100</span>
$ ll
$ ./configure --prefix<span class="synStatement">=</span>/home/gitlab/sqlite3
$ make
<span class="synComment"># make install</span>
<span class="synComment"># gem install sqlite3 -v </span><span class="synConstant">1</span><span class="synComment">.</span><span class="synConstant">3</span><span class="synComment">.</span><span class="synConstant">5</span><span class="synComment"> --install-dir=/home/gitlab/gitlab/vendor/bundle/ruby/</span><span class="synConstant">1</span><span class="synComment">.</span><span class="synConstant">9</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment"> -- --with-sqlite3-dir=$HOME/sqlite3</span>
</pre>

<p>これで bundle install が通る</p>
<p>mysqlの設定</p>
<pre class="syntax-highlight">
$ mysql -uroot <span class="synStatement">-p</span>
<span class="synStatement">&#62;</span> GRANT ALL PRIVILEGES ON gitlab.* TO gitlabuser@localhost IDENTIFIED BY <span class="synConstant">'&#60;password&#62;'</span><span class="synStatement">;</span>
<span class="synStatement">&#62;</span> GRANT ALL PRIVILEGES ON gitlab.* TO gitlabuser@<span class="synConstant">127</span>.<span class="synConstant">0</span>.<span class="synConstant">0</span>.<span class="synConstant">1</span> IDENTIFIED BY <span class="synConstant">'&#60;password&#62;'</span><span class="synStatement">;</span>
$ vim config/database.yaml
..
database: gitlab
username: gitlabuser
password: <span class="synConstant">&#34;&#60;password&#62;&#34;</span>
..
</pre>

<p>設定ファイルも環境に合わせて改変</p>
<p>すでに gitolite で運用中だったのでそこを指定</p>
<pre class="syntax-highlight">
$ vim config/gitlab.yaml
..
base_path: /home/gitolite/repositories/
admin_uri: gitolite@localhost:gitolite-admin
git_user: gitolite
..
</pre>

<p>現在gitolite-adminで利用している秘密鍵をgitlabの.sshにコピーしてくる</p>
<p>以下のコマンドが通ればOK</p>
<pre class="syntax-highlight">
$ git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin
</pre>

<p>DB他セットアップ</p>
<pre class="syntax-highlight">
$ <span class="synStatement">cd</span> gitlab
$ bundle <span class="synStatement">exec</span> rake gitlab:app:setup RAILS_ENV<span class="synStatement">=</span>production --trace
</pre>

<p>ここでadminユーザのid/passが表示されるのでメモっておく。</p>
<p>あとでこれを使ってgitlabにログインする</p>
<p>確認</p>
<pre class="syntax-highlight">
$ bundle <span class="synStatement">exec</span> rake gitlab:app:status RAILS_ENV<span class="synStatement">=</span>production
</pre>

<p>ダメだった部分を修正</p>
<pre class="syntax-highlight">
<span class="synComment"># su - gitolite</span>
$ chmod <span class="synConstant">775</span> repositories
$ vim .gitolite.rc
..
<span class="synSpecial">$REPO_UMASK</span> <span class="synStatement">=</span> <span class="synConstant">0007</span><span class="synStatement">;</span>
..
</pre>

<p>確認コマンドが通れば完了</p>
<p>テストサーバ起動</p>
<pre class="syntax-highlight">
bundle <span class="synStatement">exec</span> rails s <span class="synStatement">-e</span> production
</pre>

<p>3000番でサーバが起動するのでブラウザからアクセス</p>
<p>先ほどのメモっといたadminでログインしてみる</p>
<h4> 運用設定</h4>
<p>Apache でいろいろ他のものを運用しているので、影響がないように nginx で別ポートに立ててみる</p>
<p>nginxインストール</p>
<pre class="syntax-highlight">
<span class="synComment"># yum install nginx</span>
</pre>

<p>unicorn設定</p>
<pre class="syntax-highlight">
$ cp config/unicorn.rb.orig config/unicorn.rb
$ vim config/unicorn.rb
..
worker_processes <span class="synConstant">1</span> <span class="synComment"># 切迫したサーバなので</span><span class="synConstant">1</span><span class="synComment">に変更</span>
..
$ bundle <span class="synStatement">exec</span> unicorn_rails <span class="synStatement">-c</span> config/unicorn.rb -E production -D
</pre>

<p>nginx設定</p>
<pre class="syntax-highlight">
<span class="synComment"># vim /etc/nginx/nginx.conf</span>
..
server <span class="synStatement">{</span>
    listen  <span class="synConstant">9880</span><span class="synStatement">;</span> <span class="synComment"># </span><span class="synConstant">9880</span><span class="synComment"> で受けるように変更</span>
..
<span class="synComment"># vim /etc/nginx/conf.d/gitlab.conf</span>
..
..
</pre>

<p>アクセスしても表示されない</p>
<p>なんかエラー出てる</p>
<pre class="syntax-highlight">
<span class="synComment"># less /var/log/nginx/error_log</span>
worker process <span class="synConstant">13340</span> exited with fatal code <span class="synConstant">2</span> and can not be respawn
</pre>

<p>ライブラリ入れてみたりしてもダメ</p>
<pre class="syntax-highlight">
<span class="synComment"># yum install libaio-devel</span>
</pre>

<p>潔く最新バージョン(1系)をインストールする</p>
<p><a href="http://www.ninxit.com/blog/2011/02/14/python-web-app/" target="_blank">http://www.ninxit.com/blog/2011/02/14/python-web-app/</a></p>
<p>yumのリポジトリを追加</p>
<pre class="syntax-highlight">
<span class="synComment"># vim /etc/yum.repos.d/nginx.repo</span>
<span class="synStatement">[</span>nginx<span class="synStatement">]</span>
name<span class="synStatement">=</span>nginx repo
baseurl<span class="synStatement">=</span>http://nginx.org/packages/rhel/<span class="synSpecial">$releasever</span>/<span class="synSpecial">$basearch</span>/
gpgcheck<span class="synStatement">=</span><span class="synConstant">0</span>
enabled<span class="synStatement">=</span><span class="synConstant">1</span>
</pre>

<p>インストール</p>
<pre class="syntax-highlight">
<span class="synComment"># yum install nginx</span>
</pre>

<p>設定ファイルが変わっているので修正</p>
<pre class="syntax-highlight">
<span class="synComment"># vim /etc/nginx/conf.d/default.conf</span>
..
server <span class="synStatement">{</span>
    listen  <span class="synConstant">9880</span><span class="synStatement">;</span> <span class="synComment"># </span><span class="synConstant">9880</span><span class="synComment"> で受けるように変更</span>
..
</pre>

<p>ついでにBasic認証も</p>
<pre class="syntax-highlight">
<span class="synComment"># su - gitlab</span>
$ htpasswd <span class="synStatement">-c</span> .htpasswd hoge
<span class="synComment"># vim /etc/nginx/conf.d/gitlab.conf</span>
..
location / <span class="synStatement">{</span>
..
 auth_basic  <span class="synConstant">&#34;auth&#34;</span><span class="synStatement">;</span>
 auth_basic_user_file    <span class="synConstant">&#34;/home/gitlab/.htpasswd&#34;</span><span class="synStatement">;</span>
..
</pre>

<p>サーバ起動</p>
<pre class="syntax-highlight">
<span class="synComment"># /etc/init.d/nginx start</span>
</pre>

<p>アクセスできるか確認</p>
<p>Basic認証ダイアログが出ればOK</p>
<p>疲れたので 起動スクリプトはまた今度</p>
<br>

<h4> Merge Requestのauto mergeを有効にする</h4>
<p><a href="https://github.com/gitlabhq/gitlabhq/pull/618" target="_blank">https://github.com/gitlabhq/gitlabhq/pull/618</a></p>
<p>4/21にmergeされたらしい。</p>
<p>普通にインストールしただけじゃ有効にならない</p>
<p>以下の手順で機能を有効にする</p>
<pre class="syntax-highlight">
$ <span class="synStatement">cd</span> ~/gitlab
$ bundle <span class="synStatement">exec</span> rake gitlab:app:enable_automerge RAILS_ENV<span class="synStatement">=</span>production
unicorn停止して再起動::
$ sudo ps aux <span class="synStatement">|</span> grep gitlab
$ <span class="synStatement">kill</span> -QUIT <span class="synConstant">123456</span>
$ bundle <span class="synStatement">exec</span> unicorn_rails <span class="synStatement">-c</span> config/unicorn.rb -E production -D
</pre>

<p>ブラウザでみてみると「Accept Merge Request」ボタンが表示されてる</p>
</div>

    ]]>
    </description>
    <link>http://d.hatena.ne.jp/moqada/20120503/1335999910</link> 
    <pubDate>Wed, 02 May 2012 23:05:10 GMT</pubDate>
   </item>
  <item>
    <title>[redmine]CentOS 5.2 の Redmine 1.2.1 を 1.4.1 へアップデート</title> 
    <description>
    <![CDATA[
    
<div class="section">
<p>サーバに GitLab を入れたくなったけど Ruby1.9.2 以上必要とか言われたので、同じサーバにあった Redmine もついでにアップデートしたときのメモ</p>
<h4> 既存のRemdineをバックアップ</h4>
<p><a href="http://redmine.jp/guide/RedmineUpgrade/" target="_blank">http://redmine.jp/guide/RedmineUpgrade/</a></p>
<p>ファイル/DBのバックアップ</p>
<pre class="syntax-highlight">
<span class="synComment"># cd /var/www/html/redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span>
<span class="synComment"># tar czf files.tar.gz files</span>
<span class="synComment"># mv files.tar.gz /tmp</span>
<span class="synComment"># cd /tmp</span>
<span class="synComment"># mysqldump -u&#60;user&#62; -p&#60;password&#62; redmine &#62; mysqldump_redmine_`date +%y%m%d`.sql</span>
</pre>

<h4>移行開始</h4>
<p>Ruby1.9.3 のインストール</p>
<pre class="syntax-highlight">
<span class="synComment"># cd /usr/local/src</span>
<span class="synComment"># wget ftp://ftp.ruby-lang.org/pub/ruby/</span><span class="synConstant">1</span><span class="synComment">.</span><span class="synConstant">9</span><span class="synComment">/ruby</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">9</span><span class="synComment">.</span><span class="synConstant">3</span><span class="synComment">-p194.tar.gz</span>
<span class="synComment"># tar xzf ruby</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">9</span><span class="synComment">.</span><span class="synConstant">3</span>
<span class="synComment"># cd ruby</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">9</span><span class="synComment">.</span><span class="synConstant">3</span>
<span class="synComment"># ./configure --prefix=/usr/local/ruby</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">9</span><span class="synComment">.</span><span class="synConstant">3</span>
<span class="synComment"># make</span>
<span class="synComment"># make install</span>
<span class="synComment"># cd /usr/local</span>
<span class="synComment"># rm ruby</span>
<span class="synComment"># ln -s /usr/local/ruby</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">9</span><span class="synComment">.</span><span class="synConstant">3</span><span class="synComment"> ruby</span>
<span class="synComment"># gem install bundler --no-rdoc --no-ri</span>
</pre>

<p>Redmine1.4.1の導入</p>
<pre class="syntax-highlight">
<span class="synComment"># cd /usr/local/src</span>
<span class="synComment"># wget http://rubyforge.org/frs/download.php/</span><span class="synConstant">76033</span><span class="synComment">/redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">4</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">.tar.gz</span>
<span class="synComment"># tar xzf redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">4</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">.tar.gz</span>
<span class="synComment"># mv redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">4</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment"> /var/www/html/</span>
</pre>

<p>設定ファイルなどをコピー</p>
<pre class="syntax-highlight">
<span class="synComment"># cd /var/www/html/redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">4</span><span class="synComment">.</span><span class="synConstant">1</span>
<span class="synComment"># cp ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/config/configuration.yml config/</span>
<span class="synComment"># cp ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/config/database.yml config/</span>
<span class="synComment"># cp ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/filees/* files/</span>
</pre>

<p>プラグインをコピー</p>
<pre class="syntax-highlight">
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/open_flash_chart vendor/plugins/</span>
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/parking_lot_chart vendor/plugins/</span>
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/redmine_all_time_team vendor/plugins/</span>
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/redmine_charts vendor/plugins/</span>
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/redmine_code_review vendor/plugins/</span>
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/redmine_issues_summary_graph vendor/plugins/</span>
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/redmine_roadmaps vendor/plugins/</span>
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/redmine_version_burndown_chart vendor/plugins/</span>
<span class="synComment"># cp -r ../redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">2</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment">/vendor/plugins/redmine_vividtone_my_page_blocks vendor/plugins/</span>
</pre>

<p>必要ライブラリをインストール</p><p><span class="footnote"><a href="/moqada/#f1" name="fn1" title="Rmagick 入れようとしたけどうまく入らなかったので budle で --without rmagick を追加することに">*1</a></span></p>
<pre class="syntax-highlight">
<span class="synComment"># gem install bundler --no-rdoc --no-ri</span>
<span class="synComment"># cd /var/www/html/redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">4</span><span class="synComment">.</span><span class="synConstant">1</span>
<span class="synComment"># bundle --without development test postgresql sqlite rmagick</span>
</pre>

<br>

<p>諸々</p>
<pre class="syntax-highlight">
<span class="synComment"># rake generate_session_store</span>
<span class="synComment"># rake db:migrate RAILES_ENV=&#34;production&#34;</span>
</pre>

<p>mysql 関連で以下のようなメッセージが出て怒られる</p>
<pre class="syntax-highlight">
!!! The bundled mysql.rb driver has been removed from Rails <span class="synConstant">2</span>.<span class="synConstant">2</span>. Please install the mysql gem and try again: gem install mysql.
rake aborted!
cannot load such file -- mysql
</pre>

<p>database設定を変更</p>
<pre class="syntax-highlight">
<span class="synComment"># vim config/database.yaml</span>
</pre>

<pre class="syntax-highlight">
..
<span class="synIdentifier">adapter</span><span class="synSpecial">:</span> mysql
↓
<span class="synIdentifier">adapter</span><span class="synSpecial">:</span> mysql2
..
</pre>

<p>諸々の続き</p>
<pre class="syntax-highlight">
<span class="synComment"># rake db:migrate RAILS_ENV=&#34;production&#34;</span>
<span class="synComment"># rake db:migrate:upgrade_plugin_migrations RAILS_ENV=production</span>
<span class="synComment"># rake db:migrate_plugins RAILS_ENV=production</span>
<span class="synComment"># rake tmp:cache:clear</span>
<span class="synComment"># rake tmp:sessions:clear</span>
<span class="synComment"># cd ../</span>
<span class="synComment"># ln -s /var/www/html/redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">4</span><span class="synComment">.</span><span class="synConstant">1</span><span class="synComment"> redmine</span>
<span class="synComment"># chown webadmin:webadmin -R redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">4</span><span class="synComment">.</span><span class="synConstant">1</span>
</pre>

<p>passengerインストール</p>
<pre class="syntax-highlight">
<span class="synComment"># gem install passenger</span>
<span class="synComment"># passenger-install-apache2-module</span>
<span class="synComment"># vim /usr/local/apache/conf/httpd.conf</span>
</pre>

<pre class="syntax-highlight">
..
LoadModule passenger_module /usr/local/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
PassengerRuby /usr/local/ruby-1.9.3/bin/ruby
..
</pre>

<p>Apache再起動</p>
<pre class="syntax-highlight">
<span class="synComment"># /etc/init.d/httpd restart</span>
</pre>

<p>アクセスできたらOK</p>
<h4> プロジェクトページに行ったら500エラーでコケる</h4>
<p>redmine_codereview あたりでこけてるのでアップデート</p>
<p><a href="http://haruiida.blogspot.jp/2012/02/redmine-code-review-plugin-047.html" target="_blank">http://haruiida.blogspot.jp/2012/02/redmine-code-review-plugin-047.html</a></p>
<p>version_burndown_chardもアップデート</p>
<pre class="syntax-highlight">
<span class="synComment"># cd /var/www/html/redmine</span><span class="synConstant">-1</span><span class="synComment">.</span><span class="synConstant">4</span><span class="synComment">.</span><span class="synConstant">1</span>
<span class="synComment"># git clone git://github.com/drlongnecker/redmine_version_burndown_charts.git vendor/plugins/redmine_version_burndown_charts</span>
<span class="synComment"># rake db:migrate_plugins RAILS_ENV=production</span>
</pre>

<p>all_time_team, roadmapas, parking_lot_chartでエラー</p>
<p>git pull --rebase origin master してもダメ</p>
<p>特に使ってないので一旦外すことに</p>
<p>一応これで以前のように利用できるようになった</p><p>結局 version_burndown_chard を見ると以下のエラーでコケるけど、とりあえず今は放置<span class="footnote"><a href="/moqada/#f2" name="fn2" title="未解決だけどとりあえず運用に支障はないのでよしとする">*2</a></span></p>
<pre>
Open Flash Chart
JSON Parse Error 
</pre>

</div>
<div class="footnote">
<p class="footnote"><a href="/moqada/#fn1" name="f1">*1</a>：Rmagick 入れようとしたけどうまく入らなかったので budle で --without rmagick を追加することに</p>
<p class="footnote"><a href="/moqada/#fn2" name="f2">*2</a>：未解決だけどとりあえず運用に支障はないのでよしとする</p>
</div>

    ]]>
    </description>
    <link>http://d.hatena.ne.jp/moqada/20120430/1335783059</link> 
    <pubDate>Mon, 30 Apr 2012 10:50:59 GMT</pubDate>
   </item>
  <item>
    <title>moqada: いやちゃう…1時間前の分見とったんや…</title> 
    <description>
    <![CDATA[
    moqada: いやちゃう…1時間前の分見とったんや…
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/185030817855180800</link> 
    <pubDate>Wed, 28 Mar 2012 15:49:19 +0000</pubDate>
   </item>
  <item>
    <title>moqada: まさかのダイヤ改正…！</title> 
    <description>
    <![CDATA[
    moqada: まさかのダイヤ改正…！
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/185030277763043330</link> 
    <pubDate>Wed, 28 Mar 2012 15:47:10 +0000</pubDate>
   </item>
  <item>
    <title>moqada: 清澄白河から2, 30分歩いて帰るくらいがちょうどいいんかもしれん</title> 
    <description>
    <![CDATA[
    moqada: 清澄白河から2, 30分歩いて帰るくらいがちょうどいいんかもしれん
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/184672296798138368</link> 
    <pubDate>Tue, 27 Mar 2012 16:04:41 +0000</pubDate>
   </item>
  <item>
    <title>moqada: このまま眠りつづけて死ぬ #nemuritsuzuketeshinu</title> 
    <description>
    <![CDATA[
    moqada: このまま眠りつづけて死ぬ #nemuritsuzuketeshinu
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/183966607037566976</link> 
    <pubDate>Sun, 25 Mar 2012 17:20:31 +0000</pubDate>
   </item>
  <item>
    <title>moqada: @redsnow_ なんてったってLAMPすもんねー、nginx+gunicorn だとあんまメモリ使ってる感じしなかったすねー</title> 
    <description>
    <![CDATA[
    moqada: @redsnow_ なんてったってLAMPすもんねー、nginx+gunicorn だとあんまメモリ使ってる感じしなかったすねー
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/183361392634642433</link> 
    <pubDate>Sat, 24 Mar 2012 01:15:37 +0000</pubDate>
   </item>
  <item>
    <title>moqada: @redsnow_ PHPさん…</title> 
    <description>
    <![CDATA[
    moqada: @redsnow_ PHPさん…
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/183349459600678913</link> 
    <pubDate>Sat, 24 Mar 2012 00:28:12 +0000</pubDate>
   </item>
  <item>
    <title>moqada: @redsnow_ 速度はそんな変わらないすけど、メモリ消費が少ないのがいいなと。まだちょっとしか試してないんで、色々これからってかんじですが…</title> 
    <description>
    <![CDATA[
    moqada: @redsnow_ 速度はそんな変わらないすけど、メモリ消費が少ないのがいいなと。まだちょっとしか試してないんで、色々これからってかんじですが…
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/183342522012143616</link> 
    <pubDate>Sat, 24 Mar 2012 00:00:38 +0000</pubDate>
   </item>
  <item>
    <title>moqada: nginx いいな、次で置きかえよう</title> 
    <description>
    <![CDATA[
    moqada: nginx いいな、次で置きかえよう
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/183259146940989442</link> 
    <pubDate>Fri, 23 Mar 2012 18:29:20 +0000</pubDate>
   </item>
  <item>
    <title>moqada: やっと ebs 起動できたー</title> 
    <description>
    <![CDATA[
    moqada: やっと ebs 起動できたー
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/183230784788893696</link> 
    <pubDate>Fri, 23 Mar 2012 16:36:38 +0000</pubDate>
   </item>
  <item>
    <title>moqada: “Scaling Django Apps With Amazon AWS” http://t.co/iHcc90PR</title> 
    <description>
    <![CDATA[
    moqada: “Scaling Django Apps With Amazon AWS” http://t.co/iHcc90PR
    ]]>
    </description>
    <link>http://twitter.com/moqada/statuses/183144174361640960</link> 
    <pubDate>Fri, 23 Mar 2012 10:52:28 +0000</pubDate>
   </item>
</channel>
</rss>
