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

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
とくに問題なし、前回と同じ。

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/07/09

Redmine 2.5.2 へアップデート

さくらVPSの Redmine を 2.5.2 にアップデート。
毎回同じことやっているので、スクリプト化。
一発成功。
余程の大きく破壊的なバージョンアップでない限りコレで行けるはず。

せっかくなので、新機能のプラグインバージョンチェックを試してみると...
むむむむ、調査せねば

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

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

さくらのVPSのUbuntu10.04を12.04に上げたらいつの間にかRedmineのRMagic関連機能が使えなくなっていた。
% convert
convert: error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory
convert が失敗するのが原因のようだ。
10.04の時はリポジトリのバージョンが古くソースからインストールしたので今回も最新版をソースからインストールした。
% wget http://www.imagemagick.org/download/ImageMagick-6.8.9-1.tar.gz
% tar xf ImageMagick-6.8.9-1.tar.gz
% cd ImageMagick-6.8.9-1
% ./configure --enable-lzw=yes --prefix=/opt/ImageMagick/ImageMagick-6.8.9-1
% make
% make install
% /opt/ImageMagick/ImageMagick-6.8.9-1/bin/convert --version
Version: ImageMagick 6.8.9-1 Q16 x86_64 2014-05-16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC Features: DPC OpenMP Delegates: bzlib freetype jng jpeg lcms png tiff x xml zlib
インストールが成功したので、既存と置き換える。
% mv /usr/local/bin/animate{,.bak}
% mv /usr/local/bin/compare{,.bak}
% mv /usr/local/bin/composite{,.bak}
% mv /usr/local/bin/conjure{,.bak}
% mv /usr/local/bin/convert{,.bak}
% mv /usr/local/bin/display{,.bak}
% mv /usr/local/bin/identify{,.bak}
% mv /usr/local/bin/import{,.bak}
% mv /usr/local/bin/Magick-config{,.bak}
% mv /usr/local/bin/Magick++-config{,.bak}
% mv /usr/local/bin/MagickCore-config{,.bak}
% mv /usr/local/bin/MagickWand-config{,.bak}
% mv /usr/local/bin/mogrify{,.bak}
% mv /usr/local/bin/montage{,.bak}
% mv /usr/local/bin/stream{,.bak}
% mv /usr/local/bin/Wand-config{,.bak}

% ln -s /opt/ImageMagick/ImageMagick-6.8.9-1/bin/* /usr/bin
% convert --version
Version: ImageMagick 6.8.9-1 Q16 x86_64 2014-05-16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC Features: DPC OpenMP Delegates: bzlib freetype jng jpeg lcms png tiff x xml zlib
RMagick を再インストール。
bundle exec gem uninstallでエラーは出るけどちゃんと削除はされるらしい。
% cd /var/lib/rails/redmine
% bundle exec gem uninstall rmagick
Successfully uninstalled rmagick-2.13.2 ERROR: While executing gem ... (NoMethodError) undefined method `delete' for #
% bundle install % touch tmp/restart.txt
その結果がこれである。
なんでや・・・

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 も正常稼働した。

2014/04/12

Rubyのアップデートがちゃんとできていなくて、Redmineをアップデートできなかった

さくらのVPSで使用している Redmine を最新にしようと思い立った。

% cd work
% wget http://www.redmine.org/releases/redmine-2.5.1.tar.gz
% tar xf redmine-2.5.1.tar.gz
% mv redmine-2.5.1 /etc/lib/rails
% cd /etc/lib/rails/redmine-2.5.1
% cp ../redmine/config/database.yml config/
% cp ../redmine/config/configuration.yml config/
% bundle install --path vendor/bundle
% bundle exec rake generate_secret_token

ここまで順調に来たが、ここでエラー。

Could not find rake-10.1.1 in any of the sources
なぜか、bundler から bundler で今しがたインストールしたはずの gem が参照できないらしい。
調べてみると、どうやら bundler が実行時に参照するのは vendor/bundle/ruby/2.0.0 以下、しかしインストール時にインストールしていたのは vendor/bundle/ruby/1.9.1 以下というちぐはぐな状態になっていた。

思い当たることは、ruby を 2.0.0 にアップデートしたこと。
「今の Redmine をインストールした → ruby 2.0.0 をインストール → 今回」なので今までの Redmine は問題なく動いていたんだろうな
しかも ruby 2.0.0 をインストールした時、手順を間違えて ruby 1.9.3 の実行ファイルを正しく更新できていなかったようだ。
つまり、gem は ruby 1.9.3 の頃のものが動いていて bundler によるインストールは 1.9.1 以下に配置するが、実行時は ruby 2.0.0 で動いているので 2.0.0 以下を参照しようとしていたということだな。

というわけなので、rubyの最新版からちゃんとインストールし直すことにした。

% wget http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p451.tar.gz
% tar xf ruby-2.0.0-p451.tar.gz
% cd ruby-2.0.0-p451
% ./configure --prefix=/usr/local/ruby-2.0.0-p451
% make
% make install
% rm /usr/bin/erb
% rm /usr/bin/gem
% rm /usr/bin/irb
% rm /usr/bin/rake
% rm /usr/bin/rdoc
% rm /usr/bin/ri
% rm /usr/bin/ruby
% rm /usr/bin/testrb
% ln -s /usr/local/ruby-2.0.0-p451/bin/* /usr/bin/

手順をミスった ruby-2.0.0-p353 が動かないように変更

% mv /usr/local/bin/erb{,.bak}
% mv /usr/local/bin/gem{,.bak}
% mv /usr/local/bin/irb{,.bak}
% mv /usr/local/bin/rake{,.bak}
% mv /usr/local/bin/rdoc{,.bak}
% mv /usr/local/bin/ri{,.bak}
% mv /usr/local/bin/ruby{,.bak}
% mv /usr/local/bin/testrb{,.bak}

bundler をインストール

% gem install bundler
% ln -s /usr/local/ruby-2.0.0-p451/bin/bundle /usr/bin/

passenger の最新をインストールして変更

% gem install passenger
% cd /usr/local/ruby-2.0.0-p451
% ./bin/passenger-install-apache2-module

# /etc/apache2/mods-available/passenger.load を下記に変更
LoadModule passenger_module /usr/local/ruby-2.0.0-p451/lib/ruby/gems/2.0.0/gems/passenger-4.0.41/buildout/apache2/mod_passenger.so

# /etc/apache2/mods-available/passenger.conf を下記に変更
PassengerRoot /usr/local/ruby-2.0.0-p451/lib/ruby/gems/2.0.0/gems/passenger-4.0.41
PassengerDefaultRuby /usr/bin/ruby

redmine-2.5.1 のインストールのやり直し

# 同じなので省略
% bundle install --path vendor/bundle
% bundle exec rake generate_secret_token
% bundle exec rake db:migrate RAILS_ENV=production
% bundle exec rake tmp:cache:clear RAILS_ENV=production
% bundle exec rake tmp:sessions:clear RAILS_ENV=production
% mkdir public/plugin_assets
% cd ../
% chown -R www-data:www-data redmine-2.5.1
% ln -s /var/lib/rails/redmine-2.5.1 /var/lib/rails/redmine
% service apache2 restart

ちゃんと表示されて一安心

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

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/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)設定エントリ一覧

2012/04/27

さくら VPS の Ubuntu Server 10.04 に Ruby をインストール

ここ数日体調崩して朝に活動出来なかった。
季節の変わり目は余裕ぶっこいたらダメですね。

というわけで、掲題の通りさくら VPS の Ubunt Server 10.04 に Ruby をインストールしました。
apt で入る Ruby の最新バージョンは 1.9.1 なので、最新の 1.9.3 を使用するべくソースからインストールすることに。
あと、今回から root で作業してます。sudo はいろいろとめんどくさい。環境変数とか

# 使いそうなライブラリを入れておく
$ aptitude install -y zlib1g-dev libssl-dev libreadline-dev libxslt-dev libxml2-dev libyaml-dev
# passenger 用
$ aptitude install -y libcurl4-openssl-dev apache2-prefork-dev libapr1-dev libaprutil1-dev

# Ruby (ソースから)
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
$ tar xvf ruby-1.9.3-p194.tar.gz
$ cd ruby-1.9.3-p194
$ ./configure --prefix=/usr/local/ruby
$ make
$ make install
$ ln -s /usr/local/ruby/bin/* /usr/bin/

# rubygems
$ echo "gem: --no-ri --no-rdoc" > ~/.gemrc
# rails で使用する gem は bundler で管理するので最低限だけ入れておく
$ gem install bundler
$ ln -s /usr/local/ruby/bin/bundle /usr/bin/

# passengerの導入
$ gem install passenger
$ /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/bin/passenger-install-apache2-module
ライブラリが足りなかったらコマンドで教えてくれるのでインストール
# passenger 読み込みファイル作成 $ vim /etc/apache2/mods-available/passenger.load
LoadModule passenger_module /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
# passenger 設定ファイル作成 $ vim /etc/apache2/mods-available/passenger.conf
PassengerRoot /usr/local/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.12 PassengerRuby /usr/local/ruby/bin/ruby PassengerEnabled off
# passenger を有効化 $ a2enmod passenger # Apache 再起動 $ service apache2 restart

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

2012/04/19

さくら VPS の Ubuntu Server 10.04 に色々導入 vol.1

iptables の設定も終わったので、そろそろ本格的にさくら VPS の環境を作っていきましょう。
とりあえず、サーバに導入するものは・・・
  • Webサーバ(済)
  • データベース
  • ソース管理
  • ファイルサーバ
  • Java
  • Ruby
ぐらいかな、現状だと。
ソース管理はこれを機に Git を導入します。
Subversion は使う要件が出てきてからでいいや。
データベースは PostgreSQL を入れる。MySQL よりも PostgreSQL 派です。
ファイルサーバは Webdav 入れるかどうか迷い中。個人で使うなら Git でいいし。
まあ、どれも今まで何度もインストールしてきているので大して問題ないはず。
# base softwares
$ sudo aptitude install -y build-essential zsh vim-nox lv

# PostgreSQL
$ sudo aptitude install -y postgresql libpq-dev

# Git
$ sudo aptitude install -y git-core

# Java
$ sudo aptitude install -y python-software-properties
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo aptitude update
$ sudo aptitude install -y sun-java6-jdk
ここで、問題発生。
なぜか sun-java6-jdk がインストールできない。
今まではこれで大丈夫だったのに。
No candidate version found for sun-java6-jdk
とか言われます。
どうやら Oracle になって、なんだかんだのためになくなったようで・・・
先日も Java API で色々あったよねぇ、そういや。
という訳で、ぐぐる。

とりあえず、すえん学録: Ubuntu 10.10(64bit版)にJDK6をインストールするを見つけた。(候補1)
できれば、aptitude 完結したいので保留。
次にsun-java6-jdk not available - CCcam Forumを見つけた。(候補2)
Debian のリポジトリを登録するのは、他に影響でないのか?怪しいので保留。
そして、Ubuntu 10.04 LTSにSun Javaをインストール - hrendohの日記こんなのもあった。(候補3)
先月末の話なので、これもダメかもしれないが前2つよりはシンプルである。
あと、これで入るのは少しバージョンが古いようだ。

とまあ、どれも一長一短ではあるがシンプルさを考慮して候補3→候補2→候補1の順で試すことにする。

$ sudo add-apt-repository ppa:sun-java-community-team/sun-java6
$ sudo aptitude update
$ sudo aptitude install -y sun-java6-jdk
なんか、依存パッケージがインストールできて肝心の Java のインストールでコケた。
もっかい、sudo aptitude install -y sun-java6-jdk したら無事インストールできた。
というわけで候補2、候補1を試すまでもなく無事に java がインストールできた。
バージョンが少し古いが、大昔ってわけじゃないのでとりあえずよしとしよう。
しかし、この先 Java のインストールでめんどくさくなるのは正直勘弁していただきたいね。
apt や yum 向けのリポジトリを Oracle で管理していただきたいものである。

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

2012/04/18

Google Apps (+α) 導入時にやったこと

Google Apps 導入時にやったことをメモしておく。
1. ここから Google Apps を mkt-sys.jp で登録
2. さくら VPS のサーバに apache を導入。コマンド一発。
$ sudo aptitude install apache2
3. さくら VPS のサーバに所有権確認用のファイルを配置。
4. お名前.com にてレンタル DNS レコードを設定。
ホスト名 TYPE VALUE 優先 備考
未入力 MX ASPMX.L.GOOGLE.COM. 10 メール用
未入力 MX ALT1.ASPMX.L.GOOGLE.COM. 20 メール用
未入力 MX ALT2.ASPMX.L.GOOGLE.COM. 20 メール用
未入力 MX ASPMX2.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX3.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX4.GOOGLEMAIL.COM. 30 メール用
未入力 MX ASPMX5.GOOGLEMAIL.COM. 30 メール用
mail CNAME ghs.google.com. メールサイトURLを http://mail.mkt-sys.jp/ にする
blog CNAME ghs.google.com. blogger をカスタムドメインにする

その結果、こうなる。(塗りつぶしはさくら VPS の固定IP)
5. Google Apps にてメールの URL を http://mail.mkt-sys.jp/ に変更する。
6. Blogger にて URL を http://blog.mkt-sys.jp/ に変更する。
今のところ Google Apps のメール以外は使う予定なしなので、ここまでやって反映されるまで放置したらおしまい。

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