月: 2013年10月

  • Cassandraのインストール

    Cassandraをインストールします。

    今のところ,java version “1.7.0_25″で問題ない様子です。

    $ sudo vi /etc/apt/sources.list.d/Cassandra.source.list
    deb http://www.apache.org/dist/cassandra/debian 11x main
    deb-src http://www.apache.org/dist/cassandra/debian 11x main
    $ sudo atpt-get update
    ...
    W: GPG : http://www.apache.org 11x InRelease: : NO_PUBKEY 4BD736A82B5C1B00
    $ gpg --keyserver pgp.mit.edu --recv-keys 4BD736A82B5C1B00
    $ gpg --export --armor 4BD736A82B5C1B00 | sudo apt-key add -
    $ sudo apt-get update
    $ sudo apt-get install cassandra

    うまくいくと,この段階で既にcassandraは起動しています。

  • Expressのインストール

    Express をインストールします。

    $ source nvm/nvm.sh
    $ nvm use 0.11.7
    $ npm install -g express
    ...(略)...
    npm ERR! Error: shasum check failed for /home/chitora/tmp/npm-18325-XczPAx3z/1383029150987-0.7701256922446191/tmp.tgz
    npm ERR! Expected: a567c2af000ad22dc8f2a653d91978ae1f5316f4
    npm ERR! Actual:   2e1b1e2f3cadcf0bfde053a4bbddd8e8204f51d4

    どひゃー。エラーです。

    よく分からないので node を安定版にしました。

    $ nvm install 0.10.21
    $ nvm use 0.10.21
    Now using node v0.10.21
    $ npm install -g express

    今度はうまくいきました。

  • nvm / node.js のインストール

    nvm をインストールします。

    $ mkdir nvm
    $ cd nvm
    $ git clone https://github.com/creationix/nvm.git .
    $ source nvm.sh

    node.js をインストールします。

    $ nvm install 0.11.7
    
    Now using node v0.11.7
    

    簡単でした。

  • Gerrit 2.8-rc1 へのアップデート

    Gerrit 2.8-rc1 が出ています。H2使用の2.7からのアップデートで何も問題ありませんでした。(過去にどうにもならなくなったことが一度あります)。

    $ sudo su gerrit2
    $ cd ~gerrit2/review_site
    $ ./bin/gerrit.sh stop
    Stopping Gerrit Code Review: OK
    $ wget http://gerrit-releases.storage.googleapis.com/gerrit-2.8-rc1.war
    $ java -jar gerrit-2.8-rc1.war init -d .

    あとは,前設定のままEnterキー押して,

    $ ./bin/gerrit.sh start
    Starting Gerrit Code Review: OK

    でOKでした。

  • Ubuntu 13.10へのアップグレード

    Ubuntu 13.10 がリリースされました。さっそくアップグレードします。

    $ sudo do-release-upgrade -d

    なにごともなくアップグレードが完了しましたが,Webアクセスができません!

    $ sudo /etc/inidt.d/apache2 restart
     * Restarting web server apache2        
    [fail]
     * The apache2 configtest failed.
    Output of config test was:
    apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/redmine.load: Cannot load /var/lib/gems/1.9.1/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so into server: /var/lib/gems/1.9.1/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so: undefined symbol: unixd_config
    Action 'configtest' failed.
    The Apache error log may have more information.

    「undefined symbol: unixd_config」だそうです。Linuxの世界はすごいですねぇ。

    passengerを新しくします。

    $ sudo gem install passenger --no-rdoc --no-ri
    
    $ sudo passenger-install-apache2-module
    

    ライブラリが足りないとかapache2のmpmがおかしいとか言われるので,

    $ sudo apt-get install apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev
    

    再度,

    $ sudo passenger-install-apache2-module
    

    設定が表示されるので,貼り付けます。

       LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.20/buildout/apache2/mod_passenger.so
       PassengerRoot /var/lib/gems/1.9.1/gems/passenger-4.0.20
       PassengerDefaultRuby /usr/bin/ruby1.9.1
    
    $ sudo vi /etc/apache2/mods-available/redmine.load
    

    apache2を再起動します。

    $ sudo /etc/init.d/apache2 restart
    

    がびーん。「It works!」になってしましました。

    $ cd /etc/apache2/sites-available
    $ sudo a2ensite my_site
    
    ERROR: Site my_site does not exist!
    

    あれ? では,

    $ sudo mv my_site my_site.conf
    $ sudo a2ensite my_site
    
    Enabling site my_site.
    To activate the new configuration, you need to run:
      service apache2 reload
    

    よし。

    $ sudo /etc/init.d/apache2 restart
    
     * Restarting web server apache2        
    [fail]
     * The apache2 configtest failed.
    Output of config test was:
    AH00526: Syntax error on line 11 of /etc/apache2/sites-enabled/my_site.conf:
    Either all Options must start with + or -, or no Option may.
    Action 'configtest' failed.
    The Apache error log may have more information.
    

    もういや~ん。+-つけるわ~。

    $ sudo vi my_site.conf 
    

    やっと表示できた~と思ったら,今度は redmine.chitora.com が「403 Forbidden」! いろいろ見て,

    <VirtualHost *:80>
            ServerName redmine.chitora.com
    
            DocumentRoot /home/chitora/redmine-2.3.3/public
            <Directory /home/chitora/redmine-2.3.3/public/>
                    AllowOverride All
                    Options -MultiViews
                    Require all granted
            </Directory>
    </VirtualHost>
    

    「Require all granted」で解決しました。

  • OpenGrokのインストール

    OpenGrokのインストールをします。目的は,Lhazソースコードのブラウジングです。シンボルや関数の定義位置にクリックひとつでジャンプできたり,参照箇所をサーチできたり,たいへん便利です。ソースコードを眺めていると,ムラムラとリファクタリングしたくなってきます。

    必要な物件をインストールします。

    $ sudo apt-get install openjdk-7-jdk
    $ sudo apt-get install ant
    $ sudo apt-get install jflex
    $ sudo apt-get install ctags
    $ sudo apt-get install tomcat7

    OpenGrok本体をビルドします。

    $ wget http://java.net/projects/opengrok/downloads/download/opengrok-0.11.1-src.tar.gz
    $ tar zxf opengrok-0.11.1-src.tar.gz
    $ cd opengrok-0.11.1-src/lib
    $ ln -snf /usr/share/java/JFlex-1.4.3.jar JFlex.jar
    $ cd ..
    $ vi OpenGrok
    
    FindJavaHome() で /usr/lib/jvm/java-7-openjdk-amd64 を検索するようにします。
    
    $ ant
    
    ...(略)...
    BUILD SUCCESSFUL
    Total time: 3 seconds
    

    deployします。

    $ vi OpenGrok
    
    FindApplicationServerType() と DetermineWarDirectoryTomcat() で, /var/lib/tomcat7/webapps を見に行くようにします。
    
    $ sudo ./OpenGrok deploy
    

    tomca7を再起動します。

    $ sudo ./etc/init.d/tomcat7 restart
    

    動作確認します。

    $ curl localhost:8080/source/
    
    < ?xml version="1.0" encoding="UTF-8"?>
    < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    ...(略)...
    

    リバースプロキシとつなぎます。

    $ sudo vi /etc/apache2/sites-available/my_site
    
    (追加分のみ)
    <VirtualHost *:80>
            ServerName source.chitora.com
    
            ProxyRequests Off
            ProxyVia Off
            ProxyPreserveHost On
    
            <Proxy *>
                    Order deny,allow
                    Allow from all
            </Proxy>
    
            ProxyPass / http://127.0.0.1:8080/
    </VirtualHost>
    
    $ sudo /etc/init.d/apache2 restart
    

    閲覧用のソースを準備します。

    $ sudo mkdir -p /var/opengrok/src/Lhaz
    $ cd /var/opengrok/src/Lhaz
    $ sudo git clone ssh://chitora@127.0.0.1:29418/lhaz.git
    (以下ごにょごにょclone)
    

    /etc/cron.daily にインデックス作成のスクリプトを置いておしまい。

  • liboauthのインストール

    新サーバーで,Gerritのマージをツイートする仕組みが動いていませんでした。

    こんなやつです。Lhazユーザーの方には,「開発がんばってるね」と思って頂けるのではないかと。普通のフォロワーさんには,たまに量が多くてうざったいかもしれませんが……

    まず,liboauthをインストールします。

    $ tar xvf liboauth-1.0.1.tar.gz
    $ cd liboauth-1.0.1/
    $ ./configure
    $ make
    $ sudo make install

    自作のコマンドラインツイートツールをビルドします。

    $ cd ~/twt
    $ make
    $ sudo cp -vf twt /usr/local/bin/.

    動作確認します。

    $ twt 'command line de tweet'

    OKでした。

    Gerritの方の設定は,開発をつぶやくを見てください。

     

  • Doxygenのインストール

    Doxygenで,Lhazのソースコードからドキュメントを生成します。

    まず,インストールです。

    $ sudo apt-get install doxygen

    doxyfile を作成します。Webコンテンツ向けに,/var/www にLhazのソースを git clone / pullしているので,/var/www に doxyfile を作成します。

    $ cd /var/www
    $ sudo doxygen -g doxyfile
    

    ドキュメントの出力先ディレクトリを作成します。

    $ cd public_html
    $ sudo mkdir doxtgen
    

    doxyfileを編集します。

    $ cd /var/www
    $ sudo vi doxyfile
    
    (変更部分)
    PROJECT_NAME           = Lhaz
    OUTPUT_DIRECTORY       = /var/www/public_html/doxygen
    OUTPUT_LANGUAGE        = Japanese
    INPUT                  = /var/www/lhaz
    INPUT_ENCODING         = SHIFT_JIS
    などです。
    

    /etc/cron.daily にドキュメント生成スクリプトを作成します。

    $ sudo vi /etc/cron.daily/doxygen
    
    #!/bin/sh
    cd /var/www
    doxygen doxyfile
    
    $ sudo chmod +x /etc/cron.daily/doxygen
    

    動作確認です。

    $ sudo /etc/cron.daily/doxygen
    $ curl http://192.168.1.7/doxygen/html/
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=9"/>
    <meta name="generator" content="Doxygen 1.8.3.1"/>
    <title>Lhaz: メインページ</title>
    ...略...
    

    無事ドキュメントが生成されました。

  • WordPressの移行

    ブログも移行します。BackWPupプラグインで毎日バックアップしているファイルを利用します。

    MySQLデータベースのユーザー(wordpress)を作成します。

    $ mysql -u root -p
    mysql> create user 'wordpress'@'localhost' identified by 'PASSWORD';
    mysql> quit
    

    データベース(wordpress)を作成します。

    $ mysql -u root -p
    mysql> CREATE DATABASE wordpress;
    mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"localhost";
    mysql> FLUSH PRIVILEGES;
    

    バックアップファイルのsqlスクリプト(wordpress.sql)を流し込みます。

    $ mysql -u wordpress -p
    mysql> use wordpress;
    mysql> source wordpress.sql
    

    バックアップファイル(backwpup.tar.gz)を展開します。(実際には,上のwordpress.sqlが必要なので,展開済みです)。

    $ cd /var/www/public_html
    $ sudo mkdir blog
    $ cd blog
    $ sudo tar xvf backwpup.tar.gz
    $ sudo rm wordpress.sql
    $ sudo rm backwpup.tar.gz
    $ sudo chmod www-data -R *
    $ sudo chown www-data -R *
    

    curlでうまくブログの内容が取得できてOKです。

    $ curl http://127.0.0.1/blog/
    

    ブラウザで開いたらプラグインが移行されていませんでした。(そのようにBackWPupを設定していた)。ので,コピーしました。

    $ cd /var/www/public_html/blog/wp-content
    $ scp -r chitora@192.168.1.1:/home/chitora/public_html/blog/wp-content/plugins .
    

    プラグインの有効化と設定を再確認(パスの調整をしたかも)して,OKです。

  • Redmineのインストール

    プロジェクト管理用に,Redmineをインストールします。

    $ sudo apt-get install make
    $ sudo apt-get install ruby1.9.1-dev
    $ sudo gem install ruby-openid
    $ sudo gem install bundler
    $ wget http://rubyforge.org/frs/download.php/77138/redmine-2.3
    $ tar xvf redmine-2.3.3.tar.gz
    $ cd redmine-2.3.3
    $ sudo gem install json -v '1.8.0'
    $ sudo apt-get install imagemagick libmagickcore-dev libmagicckwand-dev
    $ sudo gem install rmagick -v '2.13.2'
    $ sudo bundle install --without development test
    
    ...(略)...
    Your bundle is complete!
    Gems in the groups development and test were not installed.
    Use `bundle show [gemname]` to see where a bundled gem is installed.

    旧Redmineからのデータベース移行は次回。

    と思ったら不足があったので,追記。passengerの事をすっかり忘れていました。

    $ sudo apt-get install libmysqlclient-dev
    $ sudo gem install mysql2
    $ sudo gem install passenger --no-rdoc --no-ri

    指示通りに,build-essential libcurl4-openssl-dev lib ssl-dev apache2-threaded-dev libapr1-dev libaprutil1-dev をインストール。

    $ sudo passenger-install-apache2-module

    apacheの方の設定を下記 redmine.load に張り付ける。

    $ sudo vi /etc/apache2/mods-available/redmine.load
    $ cd /etc/apache2/mods-enabled
    $ sudo ln -snf ../mods-available/redminne.load redmine.load

    権限の調整。

    $ cd ~/redmine-2.3.3
    $ sudo chown -R 自分:自分 *

    以下,データベースの移行。 redmine.db は旧サーバーで mysqldump したファイル。

    $ mysql -u redmine -p < redmine.db
    $ scp 自分@旧サーバー:/home/自分/redmine-1.2.1/files/* ~/redmine-2.3.3/files/.
    $ cd ~/redmine-2.3.3/
    $ RAILS_ENV=production rake db:migrate
    $ rake generate_secret_token

    database.ymlの設定。

    $ cd ~/redmine-2.3.3/config
    $ cp database.yml.example database.yml
    $ vi database.yml
    

    /etc/apache2/sites-available/my_site_に追加。

    <VirtualHost *:80>
            ServerName redmine.chitora.com
            DocumentRoot /home/自分/redmine-2.3.3/public
        <Directory /home/自分/redmine-2.3.3/public/>
            AllowOverride all
            allow from all
            Options -MultiViews
        </Directory>
    </VirtualHost>
    

    apacheの再起動。

    $ sudo /etc/init.d/apache2 restart

    以上で,表面上はRedmineが開けました。中の動作は未確認です。