ラベル ubuntu の投稿を表示しています。 すべての投稿を表示
ラベル ubuntu の投稿を表示しています。 すべての投稿を表示

2016/04/07

Ubuntu 12.04 on さくらのVPS に GitBucket を入れたメモ

Tomcatのインストール

sudo aptitude install -y tomcat7 tomcat7-admin

Tomcatの設定

sudo vi /etc/tomcat7/server.xml
HTTPのConnector設定をコメントアウトし、AJPのConnector設定を有効にする。

GitBucketの配置

wget https://github.com/gitbucket/gitbucket/releases/download/3.13/gitbucket.war
sudo mv gitbucket.war /var/lib/tomcat7/webapps
ls -al /var/lib/tomcat7/webapps
drwxrwxr-x 4 tomcat7 tomcat7 4096 Apr 7 14:37 . drwxr-xr-x 6 root root 4096 Apr 7 14:24 .. drwxr-xr-x 7 tomcat7 tomcat7 4096 Apr 7 14:37 gitbucket -rw-r--r-- 1 root root 39783199 Apr 7 14:37 gitbucket.war drwxr-xr-x 3 root root 4096 Apr 7 14:25 ROOT

ApacheのGitBucket用設定ファイル

sudo vi /etc/apache2/sites-available/gitbucket.conf
<VirtualHost *:443> ServerName gitbucket.my-domain:443 <Location /> ProxyPass ajp://localhost:8009/ </Location> SSLCertificateFile /etc/apache2/cert/ssl-cert.pem SSLCertificateKeyFile /etc/apache2/cert/ssl-cert.key </VirtualHost>
sudo a2ensite gitbucket

再起動

sudo service tomcat7 restart
sudo service apache2 restart
しかし、アクセスしても 404 となる。
/var/log/tomcat7/localhost.2016-04-07.log を見ると、こんなエラーが出ている。
SEVERE: Error configuring application listener of class gitbucket.core.ssh.SshServerListener
java.lang.UnsupportedClassVersionError: gitbucket/core/ssh/SshServerListener : Unsupported major.minor version 52.0 (unable to load class gitbucket.core.ssh.SshServerListener)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2948)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:529)
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:511)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4888)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
https://github.com/gitbucket/gitbucket/issues/1082 によると、Java8を必要としているがJava8ではない場合に出るエラーのようだ。TomcatがJava8で動いていないっぽい。

JAVA_HOMEの設定

sudo vi /etc/default/tomcat7
JAVA_HOME=/usr/lib/jvm/java-8-oracleを追加して再起動。
しかしまだ表示されない。今度はこんなエラー。
SEVERE: Exception sending context initialized event to listener instance of class gitbucket.core.servlet.InitializeListener
java.sql.SQLException: Connections could not be acquired from the underlying database!
        at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692)
        at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)
        at scala.slick.jdbc.JdbcBackend$DatabaseFactoryDef$$anon$3.createConnection(JdbcBackend.scala:47)
        at scala.slick.jdbc.JdbcBackend$BaseSession.conn$lzycompute(JdbcBackend.scala:397)
        at scala.slick.jdbc.JdbcBackend$BaseSession.conn(JdbcBackend.scala:397)
        at scala.slick.jdbc.JdbcBackend$BaseSession.withTransaction(JdbcBackend.scala:420)
        at scala.slick.backend.DatabaseComponent$DatabaseDef$$anonfun$withTransaction$1.apply(DatabaseComponent.scala:54)
        at scala.slick.backend.DatabaseComponent$DatabaseDef$$anonfun$withTransaction$1.apply(DatabaseComponent.scala:54)
        at scala.slick.backend.DatabaseComponent$DatabaseDef$class.withSession(DatabaseComponent.scala:34)
        at scala.slick.jdbc.JdbcBackend$DatabaseFactoryDef$$anon$3.withSession(JdbcBackend.scala:46)
        at scala.slick.backend.DatabaseComponent$DatabaseDef$class.withTransaction(DatabaseComponent.scala:54)
        at scala.slick.jdbc.JdbcBackend$DatabaseFactoryDef$$anon$3.withTransaction(JdbcBackend.scala:46)
        at gitbucket.core.servlet.InitializeListener.contextInitialized(InitializeListener.scala:30)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
        at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1469)
        at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644)
        at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)
        ... 25 more
Caused by: org.h2.jdbc.JdbcSQLException: Error while creating file "/usr/share/tomcat7/.gitbucket" [90062-190]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
        at org.h2.message.DbException.get(DbException.java:179)
        at org.h2.message.DbException.get(DbException.java:155)
        at org.h2.store.fs.FilePathDisk.createDirectory(FilePathDisk.java:274)
        at org.h2.store.fs.FileUtils.createDirectory(FileUtils.java:42)
        at org.h2.store.fs.FileUtils.createDirectories(FileUtils.java:309)
        at org.h2.mvstore.db.MVTableEngine.init(MVTableEngine.java:73)
        at org.h2.engine.Database.getPageStore(Database.java:2450)
        at org.h2.engine.Database.open(Database.java:672)
        at org.h2.engine.Database.openDatabase(Database.java:269)
        at org.h2.engine.Database.(Database.java:263)
        at org.h2.engine.Engine.openSession(Engine.java:65)
        at org.h2.engine.Engine.openSession(Engine.java:175)
        at org.h2.engine.Engine.createSessionAndValidate(Engine.java:153)
        at org.h2.engine.Engine.createSession(Engine.java:136)
        at org.h2.engine.Engine.createSession(Engine.java:28)
        at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349)
        at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:107)
        at org.h2.jdbc.JdbcConnection.(JdbcConnection.java:91)
        at org.h2.Driver.connect(Driver.java:72)
        at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
        at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
        at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
        at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
        at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
/usr/share/tomcat7/.gitbucket が作成できないらしい。パーミッションか
ls -al /usr/share/tomcat7
drwxr-xr-x 4 root root 4096 Apr 7 14:24 . drwxr-xr-x 155 root root 4096 Apr 7 14:25 .. drwxr-xr-x 2 root root 4096 Apr 7 14:24 bin -rw-r--r-- 1 root root 39 Feb 21 2014 defaults.md5sum -rw-r--r-- 1 root root 2030 Feb 21 2014 defaults.template drwxr-xr-x 2 root root 4096 Apr 7 14:24 lib -rw-r--r-- 1 root root 53 Feb 21 2014 logrotate.md5sum -rw-r--r-- 1 root root 118 Feb 21 2014 logrotate.template
rootになっとる。

/usr/share/tomcat7/.gitbuckeのパーミッション設定

sudo chown -R tomcat7:tomcat7 /usr/share/tomcat7
再度再起動したら表示はされたが assets が効いていない。

assets有効化

どうやら assets のパスは固定になっているらしい。今回は VirtualHost でやったため、/gitbucket が存在しないから /gitbucket/assets も当然見えないわけだ。
しかたないので /etc/apache2/sites-available/gitbucket.conf を書き換えた。
<VirtualHost *:443>
  ServerName gitbucket.my-domain:443
  ProxyReverseHost On
  RewriteEngine On
  ProxyPass /gitbucket ajp://localhost:8009/gitbucket/
  ProxyPassReverse /gitbucket ajp://localhost:8009/gitbucket/
  ProxyPass /gitbucket/assets ! # 静的ファイルはAapacheに処理させる
  Redirect / /gitbucket # ルートにアクセスしても大丈夫なように
  RewriteRule ^/gitbucket/(.*) ajp://localhost:8009/gitbucket/$1 [P,L,QSA]
  SSLCertificateFile    /etc/apache2/cert/ssl-cert.pem
  SSLCertificateKeyFile /etc/apache2/cert/ssl-cert.key
</VirtualHost>
RewriteRule がないとトップは表示されても、サインインできなかった。
もうちょっとスッキリした設定があるような気がするけど、まあとりあえず。

Ubuntu 12.04 on さくらのVPS に Jenkins を入れたメモ

Jenkinsのインストール

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo "deb http://pkg.jenkins-ci.org/debian binary/" > /etc/apt/sources.list.d/jenkins.list'
sudo aptitude update
sudo aptitude install -y jenkins

Jenkinsの設定変更

sudo vi /etc/default/jenkins
HTTP_PORTを-1に、AJP_PORTを8008に(Tomcat導入予定のため)

Apacheの設定

sudo vi /etc/apache2/sites-available/jenkins.conf
<VirtualHost *:443> ServerName jenkins.my-domain:443 <Location /> ProxyPass ajp://localhost:8008/ </Location> SSLCertificateFile /etc/apache2/cert/ssl-cert.pem SSLCertificateKeyFile /etc/apache2/cert/ssl-cert.key </VirtualHost>
sudo a2ensite jenkins

再起動

sudo service jenkins restart
sudo service apache2 restart

とっても簡単だった

2016/04/06

git 2.0.0 → git 2.8.1

% git --version
git version 2.0.0
% cd /opt/src % wget https://www.kernel.org/pub/software/scm/git/git-2.8.1.tar.gz % tar xf git-2.8.1.tar.gz % cd git-2.8.1 % ./configure --prefix=/opt/git/git-2.8.1 --with-openssl --with-curl % make % make install % /opt/git/git-2.8.1/bin/git --version
git version 2.8.1
% ln -sfn /opt/git/git-2.8.1/bin/* /usr/bin % git --version
git version 2.8.1
とくに問題なし、前回と同じ。

2015/11/06

本番環境での secret_key_base 設定

本番環境に Rails4.2.4 のアプリケーションをデプロイするとこんなエラーが出た。
App 21863 stderr: [ 2015-11-06 12:37:20.3972 21881/0x007f1632a022e8(Worker 1) utils.rb:84 ]: *** Exception RuntimeError in Rack application object (Missing `secret_token` and `secret_key_base` for 'production' environment, set these value
s in `config/secrets.yml`) (process 21881, thread 0x007f1632a022e8(Worker 1)):
config/secrets.ymlによると、本番環境ではENV["SECRET_KEY_BASE"]を読み込むらしい。
でも、複数の Rails アプリを動かしているし、今後も増やすだろうからpassengerの運用ユーザーに対して設定する訳にはいかない。
ENV["FOO_SECRET_KEY_BASE"]のようにアプリごとに環境変数変えたらいいのかな?とおもって調べてみると、apacheの設定ファイルで SetEnv すればよいらしい。
# /etc/apache2/sites-available/foo-app.conf
<VirtualHost *:80>
  ServerName foo-app.mkt-sys.jp:80
  DocumentRoot /var/lib/rails/foo-app/public
  <Directory /var/lib/rails/foo-app/public/>
    SetEnv SECRET_KEY_BASE abcdefg...xyz       #←ココ
    Options FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>
  PassengerEnabled on
</VirtualHost>
設定するキーは bunde exec rake secret RAILS_ENV=production で出力されたものをコピペ。(多分 RAILS_ENV=productionはいらないだろうけど)

2014/09/11

さくらVPSの Ubuntu12.04 を 14.04 にした

さくらVPSにログインするとアップグレードできるよって通知が出ていたので、14.04 にアップグレードしやした。
盛大にハマった....

コマンド叩く

$ do-release-upgrade
The upgrade has aborted. The upgrade needs a total of 55.6 M free space on disk '/boot'. Please free at least an additional 12.7 M of disk space on '/boot'. Empty your trash and remove temporary packages of former installations using 'sudo apt-get clean'.
いきなり容量が足りないときた。
/boot以下のファイルのうち、最新バージョン以外を削除して再度実行すればOKだった。
何度か、設定ファイルなどを最新のに上書きするかい?って聞かれるけど、おこのみで。
しないほうが無難だとは思う。

バージョンの確認

git はソースから入れた 2.1.0 のまま。
前回と同じくRubyはリポジトリのものに置き換えられて 1.9.3 になっていたので入れ替えた。
$ mv /usr/bin/erb{,.bak}
$ mv /usr/bin/gem{,.bak}
$ mv /usr/bin/irb{,.bak}
$ mv /usr/bin/rake{,.bak}
$ mv /usr/bin/rdoc{,.bak}
$ mv /usr/bin/ri{,.bak}
$ mv /usr/bin/ruby{,.bak}
$ mv /usr/bin/testrb{,.bak}
$ ln -sfn /opt/ruby/ruby-2.1.2/bin/* /usr/bin
ようやく Ubuntu でも 1.9.3 がデフォルトになったのか。めでたい。

Passengerのアップデート

Apacheのバージョンが上がったので、Passenger も再インストール。
$ gem install passenger
/opt/ruby/ruby-2.1.2/bin/passenger-install-apache2-module を実行 * To install Apache 2 development headers: Please install it with apt-get install apache2-threaded-dev * To install Apache Portable Runtime (APR) development headers: Please install it with apt-get install libapr1-dev * To install Apache Portable Runtime Utility (APU) development headers: Please install it with apt-get install libaprutil1-dev
言われるままにインストールする。
$ aptitude install apache2-threaded-dev libapr1-dev libaprutil1-dev
passengerモジュールをインストール。
$ passenger-install-apache2-module
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/passenger.load: Cannot load /opt/ruby/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so into server: /opt/ruby/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so: undefined symbol: unixd_config apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/passenger.load: Cannot load /opt/ruby/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so into server: /opt/ruby/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so: undefined symbol: unixd_config Your Apache installation might be broken
なぜかビルド出来ない。調べてみると unixd_config は ap_unixd_config にリネームされたらしいが、決定的な情報が出てこず、ハマる。悩む。
で、よーーーーーーーーく考えてみると、passenger.load でエラーが出ているけど、新しい passenger 入れるんだからいらんだろ!ということで、passenger.load と passenger.conf の中身をコメントアウトしたらビルド通った。

Redmine

前回のアップグレードでは、RMagicがおかしなことになっていたので、確認してみる。
RMagic とか Redmine 以前に、ERR_SSL_PROTOCOL_ERROR とか言われて接続できていないんですけどー。
/etc/apache2/sites-available/default-ssl.conf から /etc/apache2/sites-enabled/000-default-ssl.conf とかシンボリックリンクを貼ると Redmine ではなくデフォルトページだが表示されるので、Redmine 用の設定が読み込まれていないっぽい。
調べてみると server - Why not work Apache virtual hosts on Ubuntu 14.04? - Ask Ubuntu がヒット。
Apache2.4から .conf 拡張子が必要になったらしい。
$ rm /etc/apache2/sites-enabled/001-redmine
$ mv /etc/apache2/sites-available/redmine{,.conf}
$ ln -s /etc/apache2/sites-available/redmine.conf /etc/apache2/sites-enabled/001-redmine.conf
$ service apache2 restart
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/001-redmine.conf:1
ちゃんと読み込まれたらしい。警告が出たので、対応もした。

再度アクセスしたら、今度は You don't have permission to access / on this server. とか言われる。今まではこれで動いとってん!
/var/log/apache2/error.log には AH01630: client denied by server configuration: /var/lib/rails/redmine/public と出力されている。
redmine.conf にパーミッション設定をすればよさげ。
<VirtualHost *:443>
  ServerName xxx.mkt-sys.jp:443
  DocumentRoot /var/lib/rails/redmine/public
  <Directory /var/lib/rails/redmine/public/>
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  </Directory>
  SSLCertificateFile    /etc/apache2/cert/ssl-cert.pem
  SSLCertificateKeyFile /etc/apache2/cert/ssl-cert.key
  PassengerEnabled on
</VirtualHost>
しかし、これでも動かない。わけわからん。
ここで再びネットの海を彷徨い おほ。2.4系じゃ .htaccess ファイルの許可の仕方も変わってるんだなあ - 電気ウナギ的○○ を発見する。
<VirtualHost *:443>
  ServerName xxx.mkt-sys.jp:443
  DocumentRoot /var/lib/rails/redmine/public
  <Directory /var/lib/rails/redmine/public/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>
  SSLCertificateFile    /etc/apache2/cert/ssl-cert.pem
  SSLCertificateKeyFile /etc/apache2/cert/ssl-cert.key
  PassengerEnabled on
</VirtualHost>
とせんとイカンらしい。これでようやくRedmineが表示された。

ImageMagickとRMagick

Redmineを確認すると案の定下記の ImageMagick 関連がエラーになっていた。
  • RMagickが利用可能 (オプション)
  • ImageMagickのconvertコマンドが利用可能 (オプション)
前回の用にソースから再度ビルドしてもいいのだが、どうやら apt に入っている ImageMagick も新しくなって、RMagick をすんなり入れられるらしいので、入れ替える。
/usr/bin から ImageMagick 関連のシンボリックリンクを削除した後に ImageMagick と RMagick を入れ替える。
$ aptitude install imagemagick libmagick++-dev
$ cd /var/lib/rails/redmine
$ bundle exec gem uninstall rmagick
$ bundle install
これで、"ImageMagickのconvertコマンドが利用可能 (オプション)" は解決。
RMagick については以前の経験により調査する。
$ bundle exec rails c production
irb(main):001:0> require 'RMagick'
LoadError: liblcms.so.1: cannot open shared object file: No such file or directory - /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0-static/rmagick-2.13.2/RMagick2.so from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:251:in `block in require' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:236:in `load_dependency' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/rmagick-2.13.2/lib/RMagick.rb:11:in `<top (required)>' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:251:in `block in require' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:236:in `load_dependency' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.19/lib/active_support/dependencies.rb:251:in `require' from (irb):1 from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/railties-3.2.19/lib/rails/commands/console.rb:47:in `start' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/railties-3.2.19/lib/rails/commands/console.rb:8:in `start' from /var/lib/rails/redmine-2.5.2/vendor/bundle/ruby/2.1.0/gems/railties-3.2.19/lib/rails/commands.rb:41:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'
liblcms.so.1 が見つからないらしい。locate しても確かにいない。
apt で入れたのに、ライブラリ足りないってどーゆーことよ。
依存関係を調べてみる。
$ ldd vendor/bundle/ruby/2.1.0/gems/rmagick-2.13.2/lib/RMagick2.so
linux-vdso.so.1 => (0x00007fff01ffe000) libMagickCore.so.5 => /usr/local/lib/libMagickCore.so.5 (0x00007f6be578c000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6be556e000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6be5267000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6be4ea1000) liblcms.so.1 => not found libtiff.so.4 => not found libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f6be4bfd000) libjasper.so.1 => /usr/lib/x86_64-linux-gnu/libjasper.so.1 (0x00007f6be49a6000) libjpeg.so.62 => /usr/lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007f6be4780000) libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f6be455a000) libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f6be4348000) libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f6be413f000) libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f6be3f23000) libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f6be3bee000) libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f6be39dd000) libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f6be3677000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f6be345e000) libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f6be324e000) libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f6be3044000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6be2e40000) /lib64/ld-linux-x86-64.so.2 (0x00007f6be607c000) libjpeg.so.8 => /usr/lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007f6be2bea000) libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f6be29e5000) libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f6be27c5000) liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f6be25a3000) libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f6be239e000) libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f6be2198000)
なんと liblcms.so.1 だけでなく、libtiff.so.4 も見つからないらしい。おろろーん。
aptitude でみてみると libtiff5 や libcmls2 は入っている。
lrwxrwxrwx 1 root root     17 Jan 16  2014 /usr/lib/x86_64-linux-gnu/liblcms2.so -> liblcms2.so.2.0.5
lrwxrwxrwx 1 root root     17 Jan 16  2014 /usr/lib/x86_64-linux-gnu/liblcms2.so.2 -> liblcms2.so.2.0.5
-rw-r--r-- 1 root root 346928 Jan 16  2014 /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.5
# 省略
lrwxrwxrwx 1 root root     16 May  6 04:39 /usr/lib/x86_64-linux-gnu/libtiff.so -> libtiff.so.5.2.0
lrwxrwxrwx 1 root root     16 May  6 04:39 /usr/lib/x86_64-linux-gnu/libtiff.so.5 -> libtiff.so.5.2.0
-rw-r--r-- 1 root root 467208 May  6 04:39 /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.0
ライブラリのファイルもあるので、多少バージョンが違うかもしれないが強引にこれらにリンクさせてみる。
$ cd /usr/lib/x86_64-linux-gnu/
$ ln -s liblcms2.so liblcms.so.1
$ ln -s libtiff.so.5 libtiff.so.4
Redmine を再起動して確認してみると、"ImageMagickのconvertコマンドが利用可能 (オプション)" もOKマークに変わっている。
念のため、動かしてみる。
Redmine では、RMagick はガントチャートの PNG のために使用されているので、PNG 表示してみると無事に表示されたが、日本語が文字化けした。
ガントチャートをPNG形式の画像に出力すると文字化けする — Redmine.JP によると、日本語フォントを設定しないといけないらしい。
そもそもインストールしていないのでインストールして設定する。
$ aptitude install fonts-ipaexfont
$ vim /var/lib/rails/redmine/config/configration.yml
#=> rmagick_font_path に /usr/share/fonts/truetype/fonts-japanese-gothic.ttf を指定
するとすんなり PNG でも日本語が表示された。
ということで、とりあえず問題は解決したと思われる。
しかし、もっと本質的な解決方法があると思うなぁ、でも疲れたので今回はここまで。
前回より苦戦しないかと思ったらとんでもない、ドはまりしてだいぶ時間がかかった。

2014/06/06

git-2.0.0をサーバにインストール

% cd /opt/src
% wget https://www.kernel.org/pub/software/scm/git/git-2.0.0.tar.gz
% tar xf git-2.0.0.tar.gz
% cd git-2.0.0
% ./configure --prefix=/opt/git/git-2.0.0 --with-openssl --with-curl
% make
% make install
% /opt/git/git-2.0.0/bin/git --version
git version 2.0.0
% ln -sfn /opt/git/git-2.0.0/bin/* /usr/bin % git --version
git version 2.0.0
ln -sfnでシンボリックリンクが上書きできることを初めて知ったのでメモ。

2014/05/23

[解決編]UbuntuをアップグレードしたらRedmineでRMagick関連が動かなくなっていた

先日の tail -f pinzo.log: [未解決]UbuntuをアップグレードしたらRedmineでRMagick関連が動かなくなっていた の解決編。

原因調査

まず、何を基準にエラーとしているかを調べる。
該当のURLは /admin/info なので、redmine/app/views/admin/info.html.erb を見るが、それらしい箇所はない。
view になければ controller だろうということで redmine/app/controllers/admin_controller.rb を見る。
あった、単に Magick という定数が定義されているかどうかで判別されているみたいだ。

なぜ定義されていないのか?

RMagick は redmine/lib/redmine.rb で明示的に require されていて、エラーを握りつぶされていた。これでは、ログにはでてこないわけだ。
というわけで、状況再現のためにこちらも require してみる。
% bundle exec rails c production
irb(main):001:0> require 'RMagick'
LoadError: libjpeg.so.62: cannot open shared object file: No such file or directory - /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0-static/rmagick-2.13.2/RMagick2.so from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `block in require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:236:in `load_dependency' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/rmagick-2.13.2/lib/RMagick.rb:11:in `<top (required)>' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `block in require' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:236:in `load_dependency' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/activesupport-3.2.17/lib/active_support/dependencies.rb:251:in `require' from (irb):1 from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/railties-3.2.17/lib/rails/commands/console.rb:47:in `start' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/railties-3.2.17/lib/rails/commands/console.rb:8:in `start' from /var/lib/rails/redmine-2.5.1/vendor/bundle/ruby/2.1.0/gems/railties-3.2.17/lib/rails/commands.rb:41:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'
libjpeg.so.62 がないのが原因のようだ。

解決方法

libjpeg.so.62 は libjpeg62 をインストールすればいいらしい。
aptitude install libjpeg62
あとは、passenger を再起動したら・・・・

直ったーーーーーーー

2014/05/21

Ubuntu12.04のJavaをアップデート

さくらVPSのUbuntu12.04のJavaを更新したので作業メモ。
% add-apt-repository ppa:webupd8team/java
% aptitude update
% aptitude install oracle-java7-installer
% aptitude install oracle-java8-installer
変更する。
% update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-8-oracle/jre/bin/java 65 auto mode 1 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode 2 /usr/lib/jvm/java-7-oracle/jre/bin/java 64 manual mode 3 /usr/lib/jvm/java-8-oracle/jre/bin/java 65 manual mode
ん?Java8に自動的になってる?
% java -version
java version "1.8.0_05" Java(TM) SE Runtime Environment (build 1.8.0_05-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
なってた

2014/05/16

git1.9.3をインストール

バージョン1.7はさすがに古いなと思ったので、さくらVPSのUbuntu12.04にgitの最新版をインストールした。
% wget https://www.kernel.org/pub/software/scm/git/git-1.9.3.tar.gz
早速エラー。https対応をしていなかった。
% echo 'ca-certificate = /etc/ssl/certs/ca-certificates.crt' >> /etc/wgetrc
% wget https://www.kernel.org/pub/software/scm/git/git-1.9.3.tar.gz
% ./configure --prefix=/opt/git/git-1.9.3 --with-openssl --with-curl
% make
/bin/sh: 1: msgfmt: not found
とエラーになった。どうやらgettextが必要らしい。
% aptitude install gettext
% make
% make install
% /opt/git/git-1.9.3/bin/git --version
git version 1.9.3
インストールが成功したので、既存と置き換える。
% aptitude remove git-core
% ln -s /opt/git/git-1.9.3/bin/* /usr/bin
% git --version
git version 1.9.3
お疲れ様でした。

2014/05/11

さくらの VPS を Ubuntu 10.04 から 12.04 にアップグレード

Ubuntu 14.04 も出たけど、とりあえずさくらの VPS を Ubuntu 10.04 から 12.04 にアップグレードした。
基本的には さくらのVPSでubuntu12.04にアップデートしたら、resolv.confの中身が空っぽになった件 | 流浪のプログラマのブログ を参考に行って、resolv.conf も同じように対応したら、名前解決も無事できた。

しかし、Redmine が動かない。
どうやら、/usr/bin/ruby 等の Ruby 関連のシンボリックリンクが Ubuntu 12.04 デフォルトの 1.8.7 に上書きされたのが原因っぽい。
tail -f pinzo.log: Rubyのアップデートがちゃんとできていなくて、Redmineをアップデートできなかった で作業した ruby2.0.0-p451 の本体は当然ながらしっかり残っていたので、再度シンボリックリンクを貼って apache を再起動したら Redmine も正常稼働した。

2012/06/22

さくら VPS の Ubuntu Server 10.04 に SSL 環境を設定

Ubuntu 10.04 Serverの設定メモ を参考に Redmine を SSL 環境に移行した。
# 鍵作成時の入力の手間を省く
pinzolo@mkt-sys:~$ sudo vim /usr/lib/ssl/misc/CA.sh
- DAYS="-days 365" # 1 year - CADAYS="-days 1095" # 3 years + DAYS="-days 3650" # 10 year + CADAYS="-days 7300" # 20 years
# 鍵作成時の入力の手間を省く pinzolo@mkt-sys:~$ sudo vim /etc/ssl/openssl.cnf
- default_days = 365 # how long to certify for - default_crl_days= 30 # how long before next CRL + default_days = 3650 # how long to certify for + default_crl_days= 7300 # how long before next CRL - countryName_default = AU + countryName_default = JP - stateOrProvinceName_default = Some-State + stateOrProvinceName_default = Kanagawa - 0.organizationName_default = Internet Widgits Pty Ltd + 0.organizationName_default = mkt-sys.jp - basicConstraints = CA:FALSE + basicConstraints = CA:TRUE
# 自己認証局(CA)用に複写して編集 pinzolo@mkt-sys:~$ sudo cp /etc/ssl/openssl.cnf /etc/ssl/openssl_server.cnf pinzolo@mkt-sys:~$ sudo vim /etc/ssl/openssl_server.cnf
- basicConstraints = CA:TRUE + basicConstraints = CA:FALSE - # nsCertType = server + nsCertType = server
# 秘密鍵の作成(このサーバー用にパスワードを考える) pinzolo@mkt-sys:~$ sudo openssl genrsa -des3 -out mkt-sys.key 1024 # 要求証明書(CSR)を作成(本来このCSRを認証局に送って署名してもらう) pinzolo@mkt-sys:~$ sudo openssl req -new -days 3650 -key mkt-sys.key -out csr-mkt-sys.pem # 自分で認証局(CA)を立てて署名するため、CAの構築(CA用のパスワードを考える) pinzolo@mkt-sys:~$ sudo /usr/lib/ssl/misc/CA.sh -newca # CSRに署名をして証明ファイルを作成 pinzolo@mkt-sys:~$ sudo openssl ca -config /etc/ssl/openssl_server.cnf -in csr-mkt-sys.pem -keyfile demoCA/private/cakey.pem -cert demoCA/cacert.pem -out ssl-cert-mkt-sys.pem # エラーが発生した場合 index.txt を空にして再実行 pinzolo@mkt-sys:~$ sudo rm demoCA/index.txt pinzolo@mkt-sys:~$ sudo touch demoCA/index.txt pinzolo@mkt-sys:~$ sudo openssl ca -config /etc/ssl/openssl_server.cnf -in csr-mkt-sys.pem -keyfile demoCA/private/cakey.pem -cert demoCA/cacert.pem -out ssl-cert-mkt-sys.pem # 秘密鍵のパスワードを解除する(サーバー用パスワードを使用) pinzolo@mkt-sys:~$ sudo openssl rsa -in mkt-sys.key -out ssl-cert-mkt-sys.key # permission 変更 pinzolo@mkt-sys:~$ sudo chmod 640 ssl-cert-mkt-sys.* # グループの変更(owner は root のまま) pinzolo@mkt-sys:~$ sudo chgrp ssl-cert ssl-cert-mkt-sys.* # 解除した秘密鍵と証明書を適当なフォルダに格納 pinzolo@mkt-sys:~$ sudo mkdir /etc/apache2/cert pinzolo@mkt-sys:~$ sudo cp ssl-cert-mkt-sys.* /etc/apache2/cert/ pinzolo@mkt-sys:~$ sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf pinzolo@mkt-sys:~$ sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load # 鍵ファイル情報を追加 pinzolo@mkt-sys:~$ sudo vim /etc/apache2/sites-available/redmine
+ SSLCertificateFile /etc/apache2/cert/ssl-cert-mkt-sys.pem + SSLCertificateKeyFile /etc/apache2/cert/ssl-cert-mkt-sys.key
# サービスを再起動 pinzolo@mkt-sys:~$ sudo service apache2 restart # 後始末(最初にワークディレクトリ作れば良かった) pinzolo@mkt-sys:~$ mkdir work/ssl pinzolo@mkt-sys:~$ sudo mv mkt-sys.key work/ssl/ pinzolo@mkt-sys:~$ sudo mv csr-mkt-sys.pem work/ssl/ pinzolo@mkt-sys:~$ sudo mv demoCA/ work/ssl/ pinzolo@mkt-sys:~$ sudo mv ssl-cert-mkt-sys.* work/ssl/

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/06/09

さくら VPS の Ubuntu Server 10.04 に git サーバーを構築

公開リポジトリは github でいいけれど、プライベートなリポジトリも欲しいよね。
というわけで、サーバーに git のリポジトリをたてるべく gitosis をさくらの VPS の Ubuntu Server 10.04 に導入したのでメモ。

# gitosis のインストール
pinzolo@server:~$ sudo aptitude install -y gitosis
[sudo] password for pinzolo: Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done The following NEW packages will be installed: gitosis python-pkg-resources{a} python-setuptools{a} 0 packages upgraded, 3 newly installed, 0 to remove and 0 not upgraded. Need to get 318kB of archives. After unpacking 1,487kB will be used. Writing extended state information... Done Get:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main python-pkg-resources 0.6.10-4ubuntu1 [65.0kB] Get:2 http://jp.archive.ubuntu.com/ubuntu/ lucid/main python-setuptools 0.6.10-4ubuntu1 [213kB] Get:3 http://jp.archive.ubuntu.com/ubuntu/ lucid/universe gitosis 0.2+20090917-2 [40.4kB] Fetched 318kB in 0s (501kB/s) Preconfiguring packages ... Selecting previously deselected package python-pkg-resources. (Reading database ... 64406 files and directories currently installed.) Unpacking python-pkg-resources (from .../python-pkg-resources_0.6.10-4ubuntu1_all.deb) ... Selecting previously deselected package python-setuptools. Unpacking python-setuptools (from .../python-setuptools_0.6.10-4ubuntu1_all.deb) ... Selecting previously deselected package gitosis. Unpacking gitosis (from .../gitosis_0.2+20090917-2_all.deb) ... Setting up python-pkg-resources (0.6.10-4ubuntu1) ... Processing triggers for python-central ... Setting up python-setuptools (0.6.10-4ubuntu1) ... Processing triggers for python-central ... Setting up gitosis (0.2+20090917-2) ... Please read /usr/share/doc/gitosis/README.Debian for information about how to use gitosis. Processing triggers for python-support ... Reading package lists... Done Building dependency tree Reading state information... Done Reading extended state information Initializing package states... Done Writing extended state information... Done
# git ユーザーを作成 pinzolo@server:~$ sudo adduser git --system --shell /bin/sh --group --disabled-password --home /var/lib/git
Adding system user 'git' (UID 107) ... Adding new group 'git' (GID 116) ... Adding new user 'git' (UID 107) with group 'git' ... Creating home directory '/var/lib/git' ...
# gitosis 初期化 pinzolo@server:~$ sudo -H -u git gitosis-init < .ssh/id_rsa.pub
Initialized empty Git repository in /var/lib/git/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /var/lib/git/repositories/gitosis-admin.git/
# post-update フックスクリプトに実行権限を付与 pinzolo@server:~$ sudo chmod 755 /var/lib/git/repositories/gitosis-admin.git/hooks/post-update
これでサーバー上の作業はおしまい。

ここからローカルでの作業。

# 管理リポジトリを clone する
pinzolo@local % git clone git@server:gitosis-admin.git
Cloning into 'gitosis-admin'... remote: Counting objects: 5, done. remote: Compressing objects: 100% (5/5), done. remote: Total 5 (delta 0), reused 5 (delta 0) Receiving objects: 100% (5/5), done.
# リポジトリ内はこんな構造になっている pinzolo@local % cd gitosis-admin pinzolo@local % tree
. ├── gitosis.conf └── keydir └── pinzolo@mkt-sys.jp.pub 1 directory, 2 files
# gitosis.conf を編集 pinzolo@local % vim gitosis.conf
[gitosis] [group gitosis-admin] writable = gitosis-admin members = pinzolo@mkt-sys.jp # ここから追加 [group hoge] writable = hoge members = pinzolo@mkt-sys.jp
# 修正を commit して、反映させるために push(新しいリポジトリ hoge.git が作成される) pinzolo@local % git add gitosis.conf pinzolo@local % git status
# On branch master # Changes to be committed: # (use "git reset HEAD ..." to unstage) # # modified: gitosis.conf #
pinzolo@local % git commit -m "hogeリポジトリを追加"
[master 01e4aec] hogeリポジトリを追加 1 file changed, 4 insertions(+)
pinzolo@local % git push
Counting objects: 5, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 387 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To git@server:gitosis-admin.git 893246e..01e4aec master -> master
# サーバーのリポジトリを origin として登録し push する pinzolo@local % cd ~/projects/hoge pinzolo@local % git remote add origin git@server:hoge.git pinzolo@local % git push origin master
Counting objects: 5557, done. Delta compression using up to 2 threads. Compressing objects: 100% (5162/5162), done. Writing objects: 100% (5557/5557), 14.71 MiB | 145 KiB/s, done. Total 5557 (delta 1436), reused 0 (delta 0) To git@server:hoge.git * [new branch] master -> master

結構簡単に中央リポジトリのある開発ができますね。

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/05/15

Rails プロジェクトの初期化

Ubuntu 12.04 上にとりあえず簡単な Rails プロジェクトを作成した。
このあたりの作業は毎回ほぼ同じになるのでログとして残しておこう。
# デフォルト設定の確認
$ cat ~/.railsrc
-T -d postgresql --skip-bundle
$ mkdir projects/new_prj $ cd projects/new_prj $ bundle init $ echo "gem 'rails', '3.2.3'" >> Gemfile $ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/......... Installing rake (0.9.2.2) Installing i18n (0.6.0) Installing multi_json (1.3.5) Installing activesupport (3.2.3) Installing builder (3.0.0) Installing activemodel (3.2.3) Installing erubis (2.7.0) Installing journey (1.0.3) Installing rack (1.4.1) Installing rack-cache (1.2) Installing rack-test (0.6.1) Installing hike (1.2.1) Installing tilt (1.3.3) Installing sprockets (2.1.3) Installing actionpack (3.2.3) Installing mime-types (1.18) Installing polyglot (0.3.3) Installing treetop (1.4.10) Installing mail (2.4.4) Installing actionmailer (3.2.3) Installing arel (3.0.2) Installing tzinfo (0.3.33) Installing activerecord (3.2.3) Installing activeresource (3.2.3) Using bundler (1.1.3) Installing json (1.7.3) with native extensions Installing rack-ssl (1.3.2) Installing rdoc (3.12) Installing thor (0.14.6) Installing railties (3.2.3) Installing rails (3.2.3) Your bundle is complete! It was installed into ./vendor/bundle Post-install message from rdoc: Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay!
$ bundle exec rails new .
Using -T -d postgresql --skip-bundle from /home/pinzolo/.railsrc exist create README.rdoc create Rakefile create config.ru create .gitignore conflict Gemfile Overwrite /home/pinzolo/projects/expns/Gemfile? (enter "h" for help) [Ynaqdh] Y force Gemfile create app create app/assets/images/rails.png create app/assets/javascripts/application.js create app/assets/stylesheets/application.css create app/controllers/application_controller.rb create app/helpers/application_helper.rb create app/mailers create app/models create app/views/layouts/application.html.erb create app/mailers/.gitkeep create app/models/.gitkeep create config create config/routes.rb create config/application.rb create config/environment.rb create config/environments create config/environments/development.rb create config/environments/production.rb create config/environments/test.rb create config/initializers create config/initializers/backtrace_silencers.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/secret_token.rb create config/initializers/session_store.rb create config/initializers/wrap_parameters.rb create config/locales create config/locales/en.yml create config/boot.rb create config/database.yml create db create db/seeds.rb create doc create doc/README_FOR_APP create lib create lib/tasks create lib/tasks/.gitkeep create lib/assets create lib/assets/.gitkeep create log create log/.gitkeep create public create public/404.html create public/422.html create public/500.html create public/favicon.ico create public/index.html create public/robots.txt create script create script/rails create tmp/cache create tmp/cache/assets create vendor/assets/javascripts create vendor/assets/javascripts/.gitkeep create vendor/assets/stylesheets create vendor/assets/stylesheets/.gitkeep create vendor/plugins create vendor/plugins/.gitkeep
$ rm public/index.html $ echo "/vendor/bundle" >> .gitignore $ echo "/config/database.yml" >> .gitignore # .bundle/config が作成されているので --path はもう不要 $ bundle install
Fetching gem metadata from https://rubygems.org/......... Using rake (0.9.2.2) Using i18n (0.6.0) Using multi_json (1.3.5) Using activesupport (3.2.3) Using builder (3.0.0) Using activemodel (3.2.3) Using erubis (2.7.0) Using journey (1.0.3) Using rack (1.4.1) Using rack-cache (1.2) Using rack-test (0.6.1) Using hike (1.2.1) Using tilt (1.3.3) Using sprockets (2.1.3) Using actionpack (3.2.3) Using mime-types (1.18) Using polyglot (0.3.3) Using treetop (1.4.10) Using mail (2.4.4) Using actionmailer (3.2.3) Using arel (3.0.2) Using tzinfo (0.3.33) Using activerecord (3.2.3) Using activeresource (3.2.3) Using bundler (1.1.3) Installing coffee-script-source (1.3.2) Installing execjs (1.3.2) Installing coffee-script (2.2.0) Using rack-ssl (1.3.2) Using json (1.7.3) Using rdoc (3.12) Using thor (0.14.6) Using railties (3.2.3) Installing coffee-rails (3.2.2) Installing jquery-rails (2.0.2) Installing pg (0.13.2) with native extensions Using rails (3.2.3) Installing sass (3.1.18) Installing sass-rails (3.2.5) Installing uglifier (1.2.4) Your bundle is complete! It was installed into ./vendor/bundle
$ git init $ git add . # 確認 $ git status
# On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached ..." to unstage) # # new file: .gitignore # new file: Gemfile # new file: Gemfile.lock # new file: README.rdoc # new file: Rakefile # new file: app/assets/images/rails.png # new file: app/assets/javascripts/application.js # new file: app/assets/stylesheets/application.css # new file: app/controllers/application_controller.rb # new file: app/helpers/application_helper.rb # new file: app/mailers/.gitkeep # new file: app/models/.gitkeep # new file: app/views/layouts/application.html.erb # new file: config.ru # new file: config/application.rb # new file: config/boot.rb # new file: config/environment.rb # new file: config/environments/development.rb # new file: config/environments/production.rb # new file: config/environments/test.rb # new file: config/initializers/backtrace_silencers.rb # new file: config/initializers/inflections.rb # new file: config/initializers/mime_types.rb # new file: config/initializers/secret_token.rb # new file: config/initializers/session_store.rb # new file: config/initializers/wrap_parameters.rb # new file: config/locales/en.yml # new file: config/routes.rb # new file: db/seeds.rb # new file: doc/README_FOR_APP # new file: lib/assets/.gitkeep # new file: lib/tasks/.gitkeep # new file: log/.gitkeep # new file: public/404.html # new file: public/422.html # new file: public/500.html # new file: public/favicon.ico # new file: public/robots.txt # new file: script/rails # new file: vendor/assets/javascripts/.gitkeep # new file: vendor/assets/stylesheets/.gitkeep # new file: vendor/plugins/.gitkeep #
$ git commit -m "initial commit"
[master (root-commit) 230f0d4] initial commit 33 files changed, 920 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 README.rdoc create mode 100644 Rakefile create mode 100644 app/assets/images/rails.png create mode 100644 app/assets/javascripts/application.js create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/controllers/application_controller.rb create mode 100644 app/helpers/application_helper.rb create mode 100644 app/mailers/.gitkeep create mode 100644 app/models/.gitkeep create mode 100644 app/views/layouts/application.html.erb create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/secret_token.rb create mode 100644 config/initializers/session_store.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/routes.rb create mode 100644 db/seeds.rb create mode 100644 doc/README_FOR_APP create mode 100644 lib/assets/.gitkeep create mode 100644 lib/tasks/.gitkeep create mode 100644 log/.gitkeep create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100755 script/rails create mode 100644 vendor/assets/javascripts/.gitkeep create mode 100644 vendor/assets/stylesheets/.gitkeep create mode 100644 vendor/plugins/.gitkeep
bundle exec rails new . と現在のディレクトリ名から rails new できるのがとてもありがたい。
これが引数ベースじゃないからこそ、bundler が生きるんじゃなかろうか

Redmine を 1.4.1 から 2.0.0 にアップデートした

Redmine 2.0.0 リリース | Redmine.JP Blog
先日 1.4.x がリリースされたのに、2.0.0 が早くもリリースされました。
bundler 使っていれば、Rails のバージョンは実運用にはあまり関係ないかと思うけど、まだインストールして間もないことだしせっかくなので最新環境に変更します。
基本的に アップグレード | Redmine.JP のままやるだけだけど。
# ダウンロード→展開→配置
$ wget http://rubyforge.org/frs/download.php/76134/redmine-2.0.0.tar.gz
$ tar xvf redmine-2.0.0.tar.gz
$ mv redmine-2.0.0 /var/lib/rails/
$ cd /var/lib/rails/redmin-2.0.0

# 依存 gem をインストール
$ bundle install --path vendor/bundle --without development test mysql sqlite

# 設定ファイルを引き継ぎ
$ cp ../redmine/config/database.yml config/
$ cp ../redmine/config/configuration.yml config/

# トークンを生成。generate_session_store から generate_secret_token に変更になったらしい
$ bundle exec rake generate_secret_token

# マイグレーションを実行、追加されたのはテーブル 1 つだけだった
$ bundle exec rake db:migrate RAILS_ENV=production

# 環境を掃除して
$ bundle exec rake tmp:cache:clear
$ bundle exec rake tmp:sessions:clear

# オーナーを変更
$ chown -R www-data:www-data .

# Apache の設定ファイルを修正して再起動
$ vi /etc/apache2/site-available/redmine
<VirtualHost *:80> ServerName xxx.mkt-sys.jp - DocumentRoot /var/lib/rails/redmine/public + DocumentRoot /var/lib/rails/redmine-2.0.0/public PassengerEnabled on </VirtualHost>
$ service apache2 restart # ログローテートの設定も修正 $ vi /etc/logrotate.d/redmine
- /var/lib/rails/redmine/log/*log { + /var/lib/rails/redmine-2.0.0/log/*log { weekly missingok notifempty copytruncate }
アクセスして、ログイン→管理→情報でバージョンを確認。
バッチリですね。

2012/05/14

rbenv で rubygem をインストールしても command not found となる場合

rails の開発環境をぼちぼちと整えようと思って、とりあえずグローバルな gem として pry と bundler だけインストールした。
ところが、pry はターミナルから使用できるが、bundle コマンドは command not found となった。
rbenv をインストールしていると、$HOME/.rbenv/shims と $HOME/.rbenv/bin に PATH が通っているはずなので、$HOME/.rbenv/shims を覗いてみた。
$ ll $HOME/.rbenv/shims
drwxrwxr-x 2 pinzolo pinzolo 4096  5月 14 07:52 .
drwxr-xr-x 9 pinzolo pinzolo 4096  5月 11 11:46 ..
-rwxrwxr-x 2 pinzolo pinzolo  100  5月 14 07:18 coderay
-rwxrwxr-x 8 pinzolo pinzolo  100  5月 11 11:46 erb
-rwxrwxr-x 8 pinzolo pinzolo  100  5月 11 11:46 gem
-rwxrwxr-x 8 pinzolo pinzolo  100  5月 11 11:46 irb
-rwxrwxr-x 2 pinzolo pinzolo  100  5月 14 07:18 pry
-rwxrwxr-x 8 pinzolo pinzolo  100  5月 11 11:46 rake
-rwxrwxr-x 8 pinzolo pinzolo  100  5月 11 11:46 rdoc
-rwxrwxr-x 8 pinzolo pinzolo  100  5月 11 11:46 ri
-rwxrwxr-x 8 pinzolo pinzolo  100  5月 11 11:46 ruby
-rwxrwxr-x 8 pinzolo pinzolo  100  5月 11 11:46 testrb
こんな風になってた。全て同じサイズ??ということで diff を取ってみると、ファイル名以外は全て同じらしい。
$ cat shims/pry
#!/usr/bin/env bash
set -e
export RBENV_ROOT="/home/pinzolo/.rbenv"
exec rbenv exec "${0##*/}" "$@"
環境変数を設定して、rbenv 経由で処理を実行しているのね。
というわけで、bundle という名前でファイルをコピーしてやれば良さそうだ。
$ cp $HOME/.rbenv/shims/{pry,bundle}
$ bundle
Could not locate Gemfile
# 2012-05-15 追記
単に rehash していなかっただけだった
rbenv rehash しても command not found になるなら、お試し下さい。

2012/05/12

Ubuntu 12.04 に色々とアプリケーションをインストールした

Ubuntu 12.04 にいつもの環境を整えた。

環境系

# 日本語ディレクトリを英語に
$ LANG=C xdg-user-dirs-gtk-update

# aptitude はデフォルトではインストールされていない
$ sudo apt-get aptitude

# システムをアップデート
$ sudo aptitude update
$ sudo aptitude full-upgrade

# screen も入ってなかった
$ sudo aptitude install -y screen

# 日本語入力はmozc
$ sudo aptitude install -y ibus-mozc

# 日本語のほうがありがたい
$ sudo aptitude install -y manpages-ja

# シェルは zsh
$ sudo aptitude install -y zsh

# vim 必須
$ sudo aptitude install -y vim-nox vim-gnome

# lv 使う
$ sudo aptitude install -y lv

アプリケーション

# Google Chrome と Dropbox は本家からインストールする

# コマンドラインランチャ。これがあれば左側のいらない
$ sudo aptitude install -y gnome-do

# F12でターミナルが降りてくる。とても便利。zsh を使う際、bash をかませる必要がなくなった
$ sudo aptitude install -y guake

開発環境

# 開発するならこれは必須
$ sudo aptitude install -y build-essential

# webサーバは無難にapache
$ sudo aptitude install -y apache2

# DB は PostgreSQL(バージョンが9.1.3になってる)
$ sudo aptitude install -y postgresql libpq-dev pgadmin3

# Subversion から git に完全移行中なのであえて Subversion は入れない
$ sudo aptitude install -y git-core

# ライブラリのインストール(zlib1g-dev とか libssl-dev はすでに入ってたけど一応)
$ sudo aptitude install -y zlib1g-dev libssl-dev libreadline-dev libxslt-dev libxml2-dev libyaml-dev libsqlite3-dev

# rbenv を github から取得
$ mkdir ~/git_repos
$ cd ~/git_repos
$ git clone git://github.com/sstephenson/rbenv.git
$ cd ~
$ ln -s git_repos/rbenv .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .zshrc
$ echo 'eval "$(rbenv init -)"' >> .zshrc
$ source .zshrc

# ruby-build を github から取得
$ cd git_repos
$ git clone git://github.com/sstephenson/ruby-build.git
$ cd ruby-build
$ sudo sh install.sh

# 最新バージョンを確認して、最新をインストールして、使用するように設定する
$ rbenv install
$ rbenv install 1.9.3-p194
$ rbenv rehash
$ rbenv global 1.9.3-p194
Ruby on Rails 3.2 を Ubuntu にインストールする手順をかなり丁寧に説明してみました - Rails 雑感 - Ruby on Rails with OIAXとかを参照すると rbenv は apt で入れられるようになったみたいだが、自分の環境だとダメだった。
インストールはできるが、rbenv global しても /usr/bin/ruby が居座り続ける。
apt から rbenv をインストールすると ruby1.9.1(実体はruby1.9.3-p0)もインストールされる。
これが /usr/bin/ruby の実体になるので、rbenv global してから ruby -v すると、ruby1.9.3-p0 のまま。
ruby1.9.1 パッケージを削除しようとすると rbenv が依存しているため rbenv が動かなくなる。
どうにもならないので、全部削除して rbenv を github から取ってきたらうまくいった。

2012/05/11

Ubuntu 12.04 に行ったキーボード関連の設定

Ubuntu 12.04 をインストールしてまずキーボード関連の設定を行った。

CapslockをCtrlに

右上から[システム設定]を選択
[ユーザー向け]→[キーボードレイアウト]を選択
オプションをクリック
[Caps Lock キーの動作]を展開
[デフォルト]から[Caps Lock を追加の Control にするが・・・]に変更

ibus-mozcをインストール

# aptitude はデフォルトでは入ってなかった
$ sudo apt-get install -y aptitude

# aptitude で update
$ sudo aptitude update

# ibus-mozc をインストール
$ sudo aptitude install -y ibus-mozc

日本語設定

Dashをibusで検索。キーボード・インプットメソッドを立ち上げる
[一般]タブの[キーボードショートカット]→[切り替え]から余計なものを削除しAlt+graveだけにする。
削除は右の[...]ボタンからどうぞ。
[インプットメソッド]タブを表示
Mozcだけ使用するように設定

ところが...

Alt+grave しても日本語が入力できない。
Alt+Tab のようなウィンドウ選択になる。
どうやら既に Alt+grave がなにかのショートカットになっているみたい。
ぐぐってみると Gnome3における日本語入力設定 - サトルサトラレ in Boston に解決策があった。
また右上から[システム設定]を立ち上げて、今度は[ハードウェア]→[キーボード]を選択
[ショートカット]タブを表示して、左側のリストから[ナビゲーション]を選択。
どうやらこれの[ひとつのアプリケーション内のウィンドウを切り替える]が Alt+grave になっているらしい。
見た目は無効だけど、割り当てられているらしい。
これに適当に別のショートカットを割り当てる。
割り当てるには選択して割り当てたいショートカットを押せばOK。
さらに Back Space で再度無効にする
これで無事 Alt+grave で日本語が入力できるようになった。
こんなん完璧にトラップじゃねーか!

VMWare Player に Ubuntu 12.04 をインストールした

Ubuntu 12.04 LTS Desktop 日本語 Remix CD がリリースされていたので、開発環境を構築するために VMWare Player にインストールした。

CDイメージのダウンロード

Ubuntuの日本語環境 | Ubuntu Japanese Team から iso ファイルをダウンロード。
32bitしかないのね、まあいいか。

VMWare Playerで仮想マシンの作成

通常のインストールと同様にするため、OSは後からインストールする。
ゲストOSはLinux、バージョンはもちろんUbuntu
仮想マシンの名前と置き場を指定。データ置き場が E ドライブなので、デフォルトから変更した。
長く使う予定なのでファイルのサイズを100G、移動とか後の管理がしやすいのでファイルは分割する。
後からでもできるけど、この段階でカスタマイズする。
メモリは4G。Ubuntu 12.04はデフォルトでPAEが有効になっているから3G以上指定しても無駄にならないよ。
プロセッサはとりあえず2つ使う。本格的に開発するようになったら4にするかも。
仮想マシンを再生したら自動的にインストールが始まるように、ISOイメージファイルをダウンロードしたISOファイルに指定しておく。
作成完了。仮想マシンを再生したらインストール始まります。

Ubuntu 12.04 のインストール

新規作成のVMで試すのは時間の無駄かなということでいきなりインストール。
「インストール中にアップデートをダウンロードする」と「サードパーティのソフトウェアをインストールする」にチェックして続ける。
専用領域なんだしおまかせで。
ドライブを選択。一つしかないけどね。
インストール始まりました。
地域を選択。最初から Tokyo になっているので問題なし。
ちなみに下に表示されているファイルのコピーはバックグラウンドで別スレッドで動いてる。
キーボードのレイアウトを選択。デフォルトでは日本語キーボードになっているけど、自分が使用しているのは英語キーボードなので、英語(US)を選択。
自分のユーザーを作成。名前・マシン名・ユーザー名・パスワードを入力。
自動的にログインはしない。毎回パスワード入力するほうがセキュリティ的に安心できる。
残りのインストールが始まる。
インストールが完了した、簡単だね。再起動します。
ログイン画面が表示された。後はログインして好きなように使いましょう

感想

  • インストールは相変わらず簡単。基本的にポチポチしてれば大丈夫
  • フォントとか画面描画とか綺麗になってる
  • VMWare でもデスクトップ効果が有効になったのか、guakeの透過が可能になってたり、gnome-doのスキンが変更できたり実機へのインストールと見た目も変わらん
  • メニューが大幅に変わったので慣れるまで使いにくいかも、最初の環境設定がやりにくくてしゃーない
  • Dashは便利。というか最初はDashか右上のシステム設定でなんとかするしかない
  • アプリの一覧とかアクセスしにくくなった。カテゴリで絞り込むのも手間かかる。まあgnome-doあるので問題ないけど
  • より一般ユーザー向けになった印象

2012/04/29

さくら VPS の Ubuntu Server 10.04 に Redmine を導入

サーバの準備も整ったので、いよいよ使えるようにして行きましょう。
なにはさておき Redmine は入れておきたい!!
なので今回は Redmine の導入です。
いろいろダルかった。

Redmine の取得

Redmine をダウンロードして、配置します。
バージョンは最新の 1.4.1。Ruby 1.9 に対応してくれて本当によかった。
$ wget http://rubyforge.org/frs/download.php/76033/redmine-1.4.1.tar.gz
$ tar xvf redmine-1.4.1.tar.gz 
$ mkdir /var/lib/rails
$ mv redmine-1.4.1 /var/lib/rails/redmine

依存 gem のインストール

ここがダルかった。rmagick とか、rmagick とか、rmagick とか
$ cd /var/lib/rails/redmine
$ bundle install --path vendor/bundle --without development test mysql sqlite
  〜〜 省略 〜〜
Installing rmagick (2.13.1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/local/ruby/bin/ruby extconf.rb 
checking for Ruby version >= 1.8.5... yes
extconf.rb:128: Use RbConfig instead of obsolete and deprecated Config.
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.1. Can't find Magick-config in /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  〜〜 省略 〜〜

# 失敗したので、libmagick-dev をインストールして ruby を再コンパイル
$ aptitude install libmagick-dev
$ cd ~/work/ruby-1.9.3-p194
$ ./configure --prefixe=/usr/local/ruby
$ make
$ make install

# 再トライ
$ bundle install --path vendor/bundle --without development test mysql sqlite
  〜〜 省略 〜〜
Installing rmagick (2.13.1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/local/ruby/bin/ruby extconf.rb 
checking for Ruby version >= 1.8.5... yes
extconf.rb:128: Use RbConfig instead of obsolete and deprecated Config.
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.1. Can't find Magick-config in /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  〜〜 省略 〜〜
checking for Magick-config... yes
checking for ImageMagick version >= 6.4.9... no
Can't install RMagick 2.13.1. You must have ImageMagick 6.4.9 or later.
  〜〜 省略 〜〜

# インストール済みの ImageMagic のバージョンが古いとのこと
# 仕方ないので最新をソースからインストールする
$ cd ~/work
$ wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.7.6-7.tar.gz
$ tar xvf ImageMagick-6.7.6-7.tar.gz
$ cd ImageMagick-6.7.6-7
$ ./configure --enable-lzw=yes
$ make
$ make install
# 確認
$ convert --version
Version: ImageMagick 6.7.6-7 2012-04-29 Q16 http://www.imagemagick.org

# 今度こそ
$ bundle install --path vendor/bundle --without development test mysql sqlite
  〜〜 省略 〜〜
Installing rmagick (2.13.1) with native extensions
  〜〜 省略 〜〜
Your bundle is complete! It was installed into ./vendor/bundle
結局は、ソースから ImageMagick をインストールする必要があるということですね。

データベースの設定(PostgreSQL 8.4)

# Redmine 用ユーザーを作成
$ su - postgres
$ psql
postgres=# create role redmine_user with login 'password';
postgres=# \q

# Redmine のデータベースを作成
$ createdb redmine --encoding=UTF-8 --locale=ja_JP.UTF-8
createdb: database creation failed: ERROR:  新しい照合順序(ja_JP.UTF-8)はテンプレートデータベースの照合順序(en_US.UTF-8)と互換性がありません
HINT:  テンプレートデータベースの照合順序と同じものを使うか、もしくは template0 をテンプレートとして使用してください
# 怒られたので、HINT に従う
$ createdb redmine --encoding=UTF-8 --locale=ja_JP.UTF-8 --template=template0

# root に戻る
$ exit
$ cd /var/lib/rails/redmine

# データベース接続設定ファイルを作成
$ cp config/database.yml.example config/database.yml
$ vim config/database.yml
  production:
-   adapter: mysql
+   adapter: postgresql
    database: redmine
    host: localhost
-   username: root
+   username: redmine_user
-   password:
+   password: password
    encoding: utf8

# セッションストアの生成
$ bundle exec rake -- generate_session_store
# マイグレーション実行
$ bundle exec rake db:migrate RAILS_ENV=production
# デフォルトデータ登録(言語選択あり)
$ bundle exec rake redmine:load_default_data RAILS_ENV=production
Select language: ar, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja # ←入力して Enter
====================================
Default configuration data loaded.

Apache 設定

今回はバーチャルホストでの運用にします。
DNS の設定が必要だけど。
$ cd /etc/apache2
$ vim sites-available/redimne
<VirtualHost *:80>
    ServerName xxx.mkt-sys.jp
    DocumentRoot /var/lib/rails/redmine/public
    PassengerEnabled on
</VirtualHost>

$ cd sites-enabled
$ ln - ../sites-available/redmine 001-redmine
# root だとログファイルの書き出しとかでエラーになる
$ chown -R www-data:www-data /var/lib/rails/redmine
$ service apache2 restart

ログをローテーションさせる

$ vim /etc/logrotate.d/redmine
/var/lib/rails/redmine/log/*log {
  weekly
  missingok
  notifempty
  copytruncate
}

確認

http://xxx.mkt-sys.jp にアクセス。
無事表示された。お疲れ様でした。

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧

2012/04/28

さくら VPS の Ubuntu Server 10.04 にて PostgreSQL の設定

tail -f pinzo.log: ubuntu 10.04 に rails 開発環境を作る - PostgreSQL 設定編の焼き直し+α

postgres ユーザのパスワード設定

# postgres ユーザのパスワードを設定
$ passwd postgres

# postgres ユーザに su して(これ以降は、基本的に postgres ユーザで作業)
$ su - postgres

# PostgreSQL 側のパスワードを一致させる
$ psql template1
template1 =# alter user postgres with password '12345';
template1 =# \q

rails 用ユーザの作成

$ psql
postgres =# create role rails_user with login password '98765';
postgres =# \q

pg_hba.conf の編集

# root に戻る
$ exit

# pg_hba.conf を編集
$ vi /etc/postgresql/8.4/main/pg_hba.conf
- local all all ident + local all all password

日本語設定

$ vi /etc/postgresql/8.4/main/postgresql.conf
# These settings are initialized by initdb, but they can be changed. - lc_messages = 'en_US.UTF-8' # locale for system error message - lc_monetary = 'en_US.UTF-8' # locale for monetary formatting - lc_numeric = 'en_US.UTF-8' # locale for number formatting - lc_time = 'ja_JP.UTF-8' # locale for time formatting + lc_messages = 'ja_JP.UTF-8' # locale for system error message + lc_monetary = 'ja_JP.UTF-8' # locale for monetary formatting + lc_numeric = 'ja_JP.UTF-8' # locale for number formatting + lc_time = 'ja_JP.UTF-8' # locale for time formatting # default configuration for text search - default_text_search_config = 'pg_catalog.english' + default_text_search_config = 'pg_catalog.japanese'

サービス再起動

$ service postgresql-8.4 restart

さくら VPS (Ubuntu Server 10.04)設定エントリ一覧