自分用Mavenリポジトリを作る

※この投稿は、丸太式 Advent Calendar 2014の8日目です

自分で作った物のJAR(fat jarではない)をMavenリポジトリにデプロイしておけば何かと便利な気がしたのと、ExCellaをMavenで管理できないのはやっぱり不便なので、自前のMavenリポジトリを用意してみました。

必要なもの

  • Javaの実行環境
  • 適当なサーバ
  • Nginx等のフロントサーバがあるといいですね

やること

  • Sonatype NEXUS OSSをダウンロード
  • 適当なディレクトリに展開
  • 展開したディレクトリで、以下のコマンドをを実行
    % bin/nexus start
    ※Windowsならbin\nexus.bat startで良いんじゃないでしょうか
    フォアグラウンドで実行するなら、startの部分をconsoleにすれば良かったはず。

GitLabにPushしたときに”Could not find rake-10.3.2 in any of the sources”が発生した場合の対処

このバグ踏みましたorz
Could not find rake-10.3.2 in any of the sources · Issue #7230 · gitlabhq/gitlabhq

詳しくはチケットのほうを見ていただければわかると思いますが、
とりあえず解消するには

sudo apt-get purge ruby1.9.1 libruby1.9.1

を実行すればOKです。

apt-getで追加したrubyと共存したいときはどうすればいいんでしょうね・・・(あまり調べてない

HipChat+HubotでChatOps【とりあえずHipChatにHubot参加編】

久しぶりの投稿です。今週は珍しく成果が出たので、きちんとアウトプットします。

HipChat

HipChat(http://hipchat.com)とは、Atlassianが提供するグループチャットサービスです。
以前は無料で使えるのが最大で5人だったそうですが、現在は無料でもユーザ数無制限になっています。

Hubot

Hubot(https://github.com/github/hubot)は、GitHubが使っているBotフレームワークです。
Adapterを追加することで、様々なグループチャットやWebサービスと相互に接続することが出来ます。
Node.js上で動作し、AdapterやスクリプトはCoffeeScriptで記述できます。

heroku

Ruby, Java, Node.js等のPaaSのサービスです。
今回はHubotを動作させるために利用しました。Hubotを使う位であれば無料で利用できます。

ChatOps

チャットを使ってサービスを運用しようとする最近のはやりです。DevOpsのツールとの相性も良さそうです。
HipChatやCampfire等のグループチャットにHubot等のBotを接続して、Botを使ったオペレーションを行います。

・・・で、何したの?

今日はHubotの設定とHipChatに参加させただけです。(つまりほとんど何もしていない)
特にハマった点はないので、記事の最後に参考にしたリンクを載せるくらいにしておきます。

(Redmine|GitLab) + HipChat

ついでにRedmineとGitLabをHipChatに連携して、月次で処理しているスクリプトの処理結果をHipChatに表示するように設定しました。
Redmineはプラグインを追加しただけですし、GitLabに至っては標準機能として連携出来るので、こちらもリンクを載せておきます。

これからの目標

NginxのアクセスログとエラーログをFluentdで収集して簡単な解析をしてみようと思っています。
Hubotは解析のトリガーにするか、特定時点の解析結果を取得するのに使うか検討中です。

ところで

このブログを置かせてもらっているConoHaで、オブジェクトストレージ機能の提供が始まりましたが、1年間の無料モニターに当選しました。
オブジェクトストレージも触るのは初めてですが、アウトプットできる何かを作ろうと思います。


Photo By: i k oCC BY-NC-SA 2.0

[CentOS 7] MariaDB Serverのインストールとsystemdによる操作

RHEL7からMySQLの代わりにMariaDBが提供されるようになりましたね。
MySQLと互換性があるようなので、これからはMariaDBの時代が来るのでしょうか。
また、SysV Initに代わってsystemdが新しいinitプロセスとして採用されました。
操作方法が微妙に異なるので、ここで簡単にまとめておきます。

インストール

mysql, mysql-serverパッケージの代わりにmariadb, mariadb-serverパッケージが提供されています。

# yum install mariadb  # クライアント
# yum install mariadb-server  # サーバー

コマンドやUNIXソケットはMySQLと同じですが、バージョン情報を見るとちゃんとMariaDBになっています。

$ mysql --version
mysql  Ver 15.1 Distrib 5.5.37-MariaDB, for Linux (x86_64) using readline 5.1
$ mysqladmin -u root -p version
Enter password:
mysqladmin  Ver 9.0 Distrib 5.5.37-MariaDB, for Linux on x86_64
Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.
 
Server version          5.5.37-MariaDB
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 2 min 49 sec

systemdの操作

RHEL7ではSysV initがsystemdで置き換えられました。基本的な操作はコマンドと引数の順番が違うだけなので覚えやすいと思います。
systemdではサービスやデバイスをUnitと言う単位で管理します。systemctlコマンドではこのUnitの名前を操作対象として指定します。
MariaDBのUnit名はmariadb.serviceです。

# systemctl アクション Unit名で基本的な操作ができます。
# ここで示したほかにもアクションがあるので、詳しくはsystemctl(1)のManページを見ましょう。
systemctl [enable|disable|start|stop|restart] mariadb.service

MariaDB Serverをインストールした後は、MySQLと同じように初期設定を行います。

# systemctl start mariadb.service
# mysql_secure_installation
()

システム起動時にMariaDB Serverが立ち上がるように設定します。

# systemctl enable mariadb.service

Image By: Giuseppe MoscatoCC BY-NC-SA 2.0

MySQLサーバーが立ち上がらない現象

Ubuntu ServerでパッケージからインストールしたMySQLサーバーが、再起動時に自動的に起動してない現象に遭遇した。

環境:
Ubuntu Server 13.10
MySQL Server 5.5.35-0ubuntu0.13.10.2

/var/log/mysql/error.logを見てみると、

(略)
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
140409 20:27:55  InnoDB: Unable to open the first data file
InnoDB: Error in opening ./ibdata1
(略)

こんな具合にエラーが出て起動に失敗しているようだ。

エラーメッセージには「もう別のmysqld起動してんじゃねぇの?」とあるが、再起動直後にそんなの居るわけない。

起動していないとさすがに困るので、/etc/rc.localで無理矢理起動してみることにする。

とりあえずしばらくは様子見ですかね。。。


Image By: smilemarkCC BY-NC-SA 2.0