2014年2月27日木曜日

Redmine 2.4.3に日本語用テーマとメールを設定

redmine_theme_smtp_settings前回Alminiumから素のRedmineに移行したときの続き。

環境: CentOS 5.9, Redmine 2.4.3


日本語の環境でも見やすいテーマを導入する

下記を参考に。

farend fancy」を導入してみる。

# cd /opt/redmine/
# git clone git://github.com/farend/redmine_theme_farend_fancy.git public/themes/farend_fancy

redmineにログイン後、管理 → 設定 → 表示 → テーマで「Farend fancy」を選択する。

 

GmailのSMTPサーバー経由でメール送信する設定

下記を参考に。

# vi config/configuration.yml

default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: 587
      domain: "smtp.gmail.com"
      authentication: :plain
      user_name: "info@hoge.jp"
      password: "pass"

再起動
# /etc/rc.d/init.d/redmine restart

redmineにログイン後、管理 → 設定 → メール通知で「テストメールを送信」をクリックするとログインしているユーザー宛にメールが送信される。

 

< Related Posts >

2014年2月26日水曜日

Ruby + Redmine + UnicornをInstallしてALMiniumから移行

alminium_to_redmineAWSの無料期間が終わるので、ALMiniumでインストールしたRedmineを別のサーバーに素のRedmineとして移行したときの覚書。

環境(移行元): Amazon Linux AMI release 2013.09, Redmine 2.2.3, ruby 1.9.3, apache 2.2.26

環境(移行先): CentOS 5.10 x86_64, Redmine 2.4.3, ruby 2.1.1, nginx 1.4.4

 

目次

  1. バックアップ
  2. 移行先に最新のRubyをインストール
  3. Redmine用のデータベース作成
  4. Redmineのインストール
  5. Redmineの初期設定
  6. unicornのインストール
  7. nginxの設定
  8. 移行元からデータを移行

 

参考

 

1.バックアップ

# mysqldump -u alminium -p alminium > alminium.sql

パスワードはデフォルトの場合「alminium」

圧縮してダウンロードする
# tar czvf alminium_20140226.tgz alminium.sql

 

2.移行先に最新のRubyをインストール

既にインストール済みの古いRubyを削除

# yum list installed | grep ruby
# yum remove ruby ruby-devel ruby-libs ruby-mode

コンパイルに必要なパッケージは既にインストール済みだったので省略。

# wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.1.tar.gz
# tar xzvf ruby-2.1.1.tar.gz
# cd ruby-2.1.1
# ./configure --disable-install-doc
# make
# make install

bundlerのインストール

# gem install bundler --no-rdoc --no-ri

 

3.Redmine用のデータベース作成

phpMyAdminで作成したので省略。文字コード(charset)は「utf8mb4」

 

4.Redmineのインストール

# cd /opt
# wget http://www.redmine.org/releases/redmine-2.4.3.tar.gz
# tar xzvf redmine-2.4.3.tar.gz
# mv redmine-2.4.3 redmine
# rm redmine-2.4.3.tar.gz
# cd redmine

データベース接続設定

# vi config/database.yml

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: pass
  encoding: utf8mb4

Gemパッケージ(Gemfileに記載)をインストール

# bundle install --without development test

すると下記エラー

-----
Using mysql_config at /usr/bin/mysql_config
-----
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.

mysql-develが必要なようなのでインストールする。

# yum install mysql-devel.x86_64 --enablerepo=remi

Try Again

# bundle install --without development test

すると今度は下記エラー

Package MagickCore was not found in the pkg-config search path.
Perhaps you should add the directory containing `MagickCore.pc'
to the PKG_CONFIG_PATH environment variable
No package 'MagickCore' found
checking for stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no

Can't install RMagick 2.13.2. Can't find MagickWand.h.

環境変数PKG_CONFIG_PATHを設定しろと言われた。

MagickWandは/usr/local/lib/pkgconfigにあったのでパスを通す

# vi ~/.bash_profile

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

# source ~/.bash_profile
# echo $PKG_CONFIG_PATH

Try Again

# bundle install --without development test

無事完了。

 

5.Redmineの初期設定

# bundle exec rake generate_secret_token
# RAILS_ENV=production bundle exec rake db:migrate

すると下記エラー

Mysql2::Error: Specified key was too long; max key length is 767 bytes: CREATE UNIQUE INDEX `unique_schema_migrations` ON `schema_migrations` (`version`)

MySQLのcharsetを「utf8mb4」にしたのが影響したらしい。ちょっと後悔。下記サイトを参考に設定する。

# vi /etc/my.cnf

# for Redmine
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix

# /etc/rc.d/init.d/mysqld restart

# vi config/initializers/adapt_utf8mb.rb

ActiveSupport.on_load :active_record do
  module ActiveRecord::ConnectionAdapters

    class AbstractMysqlAdapter
      def create_table_with_innodb_row_format(table_name, options = {})
        table_options = options.reverse_merge(:options => 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC')
        create_table_without_innodb_row_format(table_name, table_options) do |td|
          yield td if block_given?
        end
      end
      alias_method_chain :create_table, :innodb_row_format
    end

  end
end

Try Again

# RAILS_ENV=production bundle exec rake db:migrate

無事完了。

 

6.unicornのインストール

unicornというソフトでHTTPサーバー立てて、nginxでリバースプロキシを設定するのが一般的らしい。

下記を参考に。

 

# gem install unicorn

# vi config/unicorn.rb

# vi /etc/rc.d/init.d/redmine

# chmod 755 /etc/rc.d/init.d/redmine

実行してみる。

# /etc/rc.d/init.d/redmine start

すると下記エラー

/usr/local/lib/ruby/gems/2.1.0/gems/bundler-1.5.3/lib/bundler/rubygems_integration.rb:240:in `block in replace_gem': unicorn is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
        from /usr/local/bin/unicorn_rails:22:in `<main>'

Gemfileにunicornを追加しろと怒られた。

# vi Gemfile

gem 'unicorn'

「gem install unicorn」せずにGemfileを編集して「bundle install」する方がよかったみたい。

Try Again

# /etc/rc.d/init.d/redmine start

無事起動したみたい。自動起動するようにしておく。

# chkconfig --add redmine
# chkconfig redmine on

 

7.nginxの設定

# cd /etc/nginx/conf.d/
# vi redmine.conf

server {
    listen       80;
    server_name  dev.hoge.jp;

    access_log /var/log/nginx/redmine.access.log;
    error_log /var/log/nginx/redmine.error.log;

    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }

    ### Reverse Proxy for Redmine on Unicorn
    location / {
        rewrite ^/(.*)$ /$1 break;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:5001;
    }
}

# /etc/rc.d/init.d/nginx configtest
# /etc/rc.d/init.d/nginx reload

ブラウザでアクセスしてredmineの画面が表示出来るか確認。

 

8.移行元からデータを移行

下記サイトを参考にしながら。

移行先データベースのテーブルを全削除して、「1.バックアップ」で作成した移行元のテーブルをインポートする。

phpMyAdminで実行したので省略。

データベースの更新

# cd /opt/redmine/
# rake db:migrate RAILS_ENV="production"

キャッシュとセッションファイルのクリア

# rake tmp:cache:clear
# rake tmp:sessions:clear

サーバの再起動

# /etc/rc.d/init.d/redmine restart

ブラウザからアクセスして表示出来るか確認。

※添付したファイルがあるなら、それも移行先にコピーする必要あり。
※SMTPの設定も忘れずに。

 

< 2014/02/27 Modified >
新しいチケットを作成しようとしたらInternal Errorが発生。ログを見ると

ActiveRecord::StatementInvalid (Mysql2::Error: Column 'position' cannot be null:

issuesテーブルのpositionにNULLを許可してないのが原因らしい。

調べてみるとBacklogsプラグインをインストールすると直るという情報を見つけた。けど、今回はphpMyAdminでNULLを許可するだけで応急処置。

 

< Related Posts >

2014年2月24日月曜日

Parallels Pleskがインストールされている環境でYUMを使う

yum_update_on_pleskサーバーの管理を任されたときに、今までPleskを使って管理されていた環境でYUMを実行しても大丈夫かどうか調査。

環境: CentOS 5.5, Parallels Plesk Panel 10.4.4

公式では大丈夫といっている。

 

ただし、yum.confの設定で競合するかもしれないパッケージを更新しないように設定する。

# vi /etc/yum.conf

# Avoid conflict for Parallels Plesk
# @see http://kb.parallels.com/jp/234
exclude=kernel* sendmail bind-chroot caching-nameserver

 

# yum clean all
# yum update

大量にソフトウェアが更新されるので、どこかで競合が起きないかドキドキする。。。

 

無事終わった様子。

 

ちなみにPleskの設定の影響でPHPが実行できないので、apacheの設定をするときは下記のようにしないと動かない。

<Directory "/var/www/vhosts/hoge.jp/httpdocs">
  php_admin_flag engine on
</Directory>

 

このサーバーで事務の人がメールアカウントを管理しているので、Pleskは削除できない。

使用料を取られているPleskを削除してPostfix Adminを入れたい。

2014年2月19日水曜日

猫が数日お留守番出来るように自動給餌器と自動給水器を買う

ニャンコたちに1日お留守番してもらう必要があったので、指定した時間になったらフードが出てくる自動給餌器と自動給水器を探してみた。

環境:生後10ヶ月のオスとメス2匹

買ったのはこれ。

山佐時計計器 わんにゃんぐるめCD-600Amazon.co.jp: 山佐時計計器 わんにゃんぐるめCD-600: ペット用品

声を録音できるが品質が悪く違和感がある。
1匹1台がベストだけど、普段は使わないのでコストパフォーマンスは悪い。
ペットシッターを使うならいらないと思う。
ジェックス ピュアクリスタル全猫用Amazon.co.jp: ジェックス ピュアクリスタル全猫用: ペット用品

水の交換が5日~1週間に一度で済むようになった。普通に飲んでくれる。

正月1週間実家へ帰っている間はペットシッターの人にトイレの掃除をしてもらってた。

1週間後帰ってみると、黒猫(♂)がガリガリで三毛猫(♀)がプックリしてた。どうやら黒猫はペットシッターの人が怖くて隠れてたみたい。

三毛猫は物怖じしないので、自動給餌器から出てきた餌を全部食べてたみたい。

今度はちゃんと仲良く分け合いながら食べるかチェックしなきゃ。

 

 

< Related Posts >

2014年2月18日火曜日

SubversionからGitへ移行。Bitbucketを利用する

subversion_to_bitbucket自前サーバーのSubversionで管理しているソースコードをBitbucketへ移行しようかと迷ったときの覚書。

環境:CentOS 5.9 i386

BitbucketはGitHubのようなバージョン管理ホスティングサービス。Private Repository(非公開のリポジトリ)を無制限に作れる。下記記事が詳しい。

 

SubversionのリポジトリをGit用に変換するのは下記記事を参考にした。

 

まずはsvn-gitを使えるように外部レポジトリEPELを追加。
# wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm -ivh epel-release-5-4.noarch.rpm

git-svnをInstall
# yum update
# yum install git-svn

 

結局Subversionで困ってないので、まだ移行していない。。。

 

< Related Posts >

2014年2月4日火曜日

[Node.js] Server SideでGoogle Analytics (Universal Analytics)を使ったアクセス解析

nodejs_universal-analyticsアプリのアクセスをGoogle Analyticsでトラッキングするための覚書。

環境:nodejs v0.10.24, express 3.4.8

2013年からGoogle Analyticsの新バージョン「Universal Analytics」が使用可能になり、APIも刷新されて、より使いやすくなった。

既にNPMからUniversal Analyticsに対応したモジュールを利用できる。

 

このモジュールはクライアントのユーザーエージェントを設定したり、ログインしたユーザーを識別する仕組みを提供してくれているので使いやすい。

サンプルコード

var ua = require('universal-analytics');

app.all('/1/*', function(req, res, next) {
  var visitor;
  var uuid, userAgent;

  // User-Agent of app client
  userAgent = (req.headers) ? req.headers['user-agent'] : null;
  // UUID for detecting app login user
  uuid = (req.session) ? req.session.uuid : null;

  visitor = ua('UA-XXXX-XX', uuid, {
    headers: {
      'user-agent': userAgent
    }
  });
  // Send to Google Analytics
  visitor.pageview(req.url).send()

  // Continue
  next();
});

 

アプリからログインした際にUUIDを生成して、セッションに保存しておく。Google Analytics側がUUID形式じゃないと受け取ってくれない。

var uuid = require('node-uuid');

req.session.uuid = uuid.v4(); // Used for Google Analytics

 

 

< Related Posts >

2014年2月3日月曜日

ニュース記事を取得するのにBing Search APIを試してみた

google_vs_yahoo_news-apiGoogle Web Search APIが「Deprecated」になっていつ使えなくなるか分からないので、代替となるサービスを探したときの覚書。

参考サイト

 

Google Custom Search APIを調べてみても「ニュース」だけにカテゴリを絞る方法が分からない。

そこでサムネイル画像が取得出来ないけど、安心感のあるBing Search APIを試してみた。

参考サイト

 

だけど。。。

実際に使ってみて困ったのが、キーワードを指定するときに「OR」「AND」などのSyntaxが使えない。
公式のBing Query Languageにあるオペレーターは効かなかった。

結局、使えなくなるまではGoogle先生にお世話になることにした。

 

< Related Posts >

Related Posts Plugin for WordPress, Blogger...

Blog Archives