Redmine2.3.2にグループ管理プラグインを入れる

redmineにグループ管理のプラグインを入れたが、ちゃんと動かなかったので
つまづいた所をメモする。
※補足
Ruby on Railsを全然知らないPHPerがちょちょっと修正しているので、
Railsに詳しい人から見たらおかしいかも。指摘してくれるとありがたいです。

■環境
CentOS 6.5
Redmine 2.3.2
ruby 2.0.0
rails 3.2.13

https://github.com/fathomssen/redmine_group_manager
基本的なインストール方法はREADME.rdoc通り

①order by句がおかしい

オーダー句がおかしいとエラーになったので、app/models/gmanager.rbの9行目を修正した
【修正前】

mem = Member.where(:project_id => pid).order(user_id: :asc)

【修正後】

mem = Member.where(:project_id => pid).order("user_id asc")

②オーナー未指定のグループがあると動かない

まあ、インストール直後は全てのグループにオーナーが指定されていないのですが、
オーナーが未指定の場合はユーザテーブルのID=1のユーザがオーナーになるそうです。
(app/helpers/gmanagers_helper.rbの28行目参照)

私の環境ではID=1のユーザが既に削除されていたので、
新しくID=1で絶対的管理者的存在のユーザを作成しました。
別IDで絶対的管理者がいるなら、上記のヘルパーを修正するのでも良いと思います。
(個人のIDにしてしまうと退職した際などに困るのでオススメしません)

③グループ編集タグがredmine管理者にしかでない

各プロジェクトページにてグループ編集タブが表示されるはずなのですが、
プラグインを入れた時点ではredmineの管理者でなければタブが表示されていませんでした。
プロジェクトの管理者にグループ編集機能を使わせたい場合は、redmine管理者メニューの
『管理 > ロールと権限』からグループ編集権限を予め付与しておかなければなりません。
説明をよく読めば書いてあるのかもしれませんが、英語辛いので斜め読みしてました。すみません。

④グループメンバー一覧の項目順がおかしい

各プロジェクトのグループ編集タブよりグループメンバー一覧を表示すると、
カスタムフィールドの項目名と値の並び順が一致していませんでした。
なので、一致するようソート処理を入れます。

app/models/gmanager.rbの34行目と48行目に同じ修正を入れる。
【修正前】

keys = CustomField.where(:type => 'UserCustomField')

【修正後】

keys = CustomField.where(:type => 'UserCustomField').order(:id)

app/models/gmanager.rbの49行目も修正する。
【修正前】

values = User.find(id).custom_values

【修正後】

values = User.find(id).custom_values.order(:custom_field_id)

これで動くようになりました。

〜番外編〜

このプラグインはプロジェクトに所属している人をグループに追加することしかできません。
私はプロジェクトに所属していないユーザもグループ追加できるようにしたかったので、
プラグインを大幅に修正しました。

プロジェクトに未所属のメンバーもグループに追加できるようにしたプラグインは
こちらです。
https://github.com/mildjester/redmine_group_manager

Share

CentOS7にfishを入れる

最近人気らしいfishを試しに入れてみました。

■環境

CentOS 7.3
fish 2.3.1

epelリポジトリが入っていない人はインストールします。

yum -y install epel-release

fishをyumでインストールします。

yum -y install fish

今だけfishを使う場合は、コマンドでそのままfishと打ちます。

fish

恒久的にfishを使いたい場合はchshしておきます。

chsh -s /usr/bin/fish {ユーザ名}

 

これでfishが使えるようになりました。


〜参考〜

CentOS6.X系の場合は以下でfishのインストールできるようです。

wget -P /etc/yum.repos.d/ http://download.opensuse.org/repositories/shells:fish:release:2/CentOS_6/shells:fish:release:2.repo
yum -y install fish

【oh-my-fishインストール】

ついでにoh-my-fishもインストールします。
CentOS7でyumインストールできるgitのバージョンは1.8系(2017年4月現在)なのですが、
oh-my-fishのインストールにはgit 1.9.5以上が必要なので
ソースからコンパイルします。

ソースからコンパイルする際に必要なものをインストールします。
私の環境では以下でしたが、ここは各環境に合わせてインストールしてください。
ソースからコンパイルする方法を調べれば出てくると思います。

yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf gettext gcc

ソースコードをダウンロードしてきます

cd /tmp/
wget https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
tar xzf git-2.9.3.tar.gz

※最新のソースは以下で確認
https://www.kernel.org/pub/software/scm/git/

gitをインストールします。
configureのオプション「–with-curl」を付けないと、oh-my-fishインストール時にコケます。

cd git-2.9.3
make configure
./configure --with-curl
make
make install

『/usr/local/bin』配下にgit系コマンドが配置されるので、
もしPATHを通していない場合は追加する。

set -U fish_user_paths $fish_user_paths /usr/local/bin
git --version
git version 2.9.3

最後にoh-my-fishをインストールして完了です。

curl -L https://get.oh-my.fish | fish

oh-my-fishのインストール詳細についてはこちらを参照してください。
https://github.com/oh-my-fish/oh-my-fish

【pecoインストール】

ついでにpecoもインストールしておきます。

peco本体はgithubからダウンロードし、利用可能な状態にしておきます。

cd /tmp/
wget https://github.com/peco/peco/releases/download/v0.5.1/peco_linux_amd64.tar.gz
tar xzf peco_linux_amd64.tar.gz
mv peco_linux_amd64/peco /usr/local/bin/.

oh-my-fishでpecoをfishに取り込みます。

omf install peco

最後にfishのコンフィグファイルを修正します。

vim ~/.config/fish/config.fish
# 記載する内容
function fish_user_key_bindings
    bind \cr peco_select_history
end

以上で設定は完了です。

Share

zabbixでPHPの警告が出る場合の対処

■環境
zabbix 3.2
PHP 7.1

PHP7.1でzabbixを動かすと、以下の警告が出ました。

A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpMemoryLimit() → str2mem() in include/func.inc.php:410]
A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpPostMaxSize() → str2mem() in include/func.inc.php:410]
A non well formed numeric value encountered [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → CFrontendSetup->checkRequirements() → CFrontendSetup->checkPhpUploadMaxFilesize() → str2mem() in include/func.inc.php:410]

警告が出ている箇所は以下のようになっています。
[/usr/share/zabbix/include/func.inc.php]

 394 /**
 395  * Converts strings like 2M or 5k to bytes
 396  *
 397  * @param string $val
 398  *
 399  * @return int
 400  */
 401 function str2mem($val) {
 402         $val = trim($val);
 403         $last = strtolower(substr($val, -1));
 404
 405         switch ($last) {
 406                 case 'g':
 407                         $val *= 1024;
 408                         /* falls through */
 409                 case 'm':
 410                         $val *= 1024;
 411                         /* falls through */
 412                 case 'k':
 413                         $val *= 1024;
 414         }
 415
 416         return $val;
 417 }

この引数の「$val」には『256M』のように単位付きの数字が入ってくるようで、
それを『$val *= 1024』と数字のように扱っているので警告が出ているようです。
(警告は出ているが、処理自体は正常に行なわれている)

解決策は色々あると思いますが、とりあえず以下のように修正したら
警告は表示されなくなりました。(404行目を追加しています)

 401 function str2mem($val) {
 402         $val = trim($val);
 403         $last = strtolower(substr($val, -1));
 404         $val = intval($val);
 405         switch ($last) {
 406                 case 'g':
 407                         $val *= 1024;
 408                         /* falls through */
 409                 case 'm':
 410                         $val *= 1024;
 411                         /* falls through */
 412                 case 'k':
 413                         $val *= 1024;
 414         }
 415
 416         return $val;
 417 }
Share

CentOS 7.3にzabbix 3.2をインストール

■環境

CentOS 7.3
zabbix 3.2
PHP 7.1
MySQL 14.14
Apache 2.4


①zabbixをyumでインストールするためのリポジトリをインストール

# yum install http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

②zabbixの本体をインストール

# yum install \
zabbix-server-mysql \
zabbix-web-mysql \
zabbix-web \
zabbix-agent \
zabbix-get \
zabbix-sender \
zabbix-web-japanese

※MySQLではなくPostgreSQLを使う場合は、上記の『mysql』を『pgsql』にするだけです。

③MySQLの設定

# mysql
mysql> CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'zabbixpassword';
mysql> CREATE DATABASE zabbix CHARACTER SET utf8;
mysql> GRANT ALL ON zabbix.* to 'zabbix'@'localhost';
mysql> quit
# zcat /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql.gz | mysql -uroot zabbix

パスワードは任意のものを入れてください。
DB名とユーザ名も変えたければ変えても構いません。

④Zabbixの設定

# vim /etc/zabbix/zabbix_server.conf
以下項目を設定
LogFileSize=10
DBPassword=zabbixpassword

もし手順③にてDB名とユーザ名も変更していた場合は、ここで該当箇所も修正してください。

⑤起動

# systemctl start zabbix-server
# systemctl start zabbix-agent
# systemctl restart httpd

これでインストールは完了です。
https://ホスト名/zabbixにアクセスするとzabbixが開き、初期設定が始まります。
初期ログインのID/PASSは『Admin/zabbix』です。

ログイン後、右上の人形アイコンで言語やパスワードを変更できます。

私が実施した時はダッシュボードにて以下のPHPの警告が表示されました。
『A non well formed numeric value encountered』
解決策はコチラに記載しています。


その他

MacサーバへのZabbixエージェントインストールが難しかったので、別途記事にしました。
MacにZabbixエージェントを入れる

Share

【git】gitコマンドチートシート

自分が使うgitコマンドを整理しました。

■環境
OS X El Capitan 10.11.6
git 2.10.1

【設定について】
グローバルコンフィグの設定
(全リポジトリの共通設定)

$ git config --global user.name "jester"
$ git config --global user.email "jester@sample.co.jp"

リポジトリ別コンフィグの設定

(対象リポジトリのディレクトリにて)
$ git config user.name "master"
$ git config user.email "master@sample.co.jp"

【リポジトリの作成・リモート設定について】
リモートのリポジトリをクローンする

$ git clone {リモートリポジトリの指定} {生成するディレクトリ}

※生成するディレクトリを省略すると、リモートリポジトリと同じ名前でディレクトリが生成される

ローカルで新規にリポジトリを作成する

$ mkdir SampleProject
$ cd SampleProject
$ git init

ローカルで作成したリポジトリを後からリモートに紐付ける

(対象のリポジトリディレクトリにて)
$ git remote add {名前、originなど} {リモートリポジトリの指定}

リモートリポジトリの変更する

(対象のリポジトリディレクトリにて)
$ git remote set-url {名前、originなど} {リモートリポジトリの指定}

リモートとの紐付けを解除する

(対象のリポジトリディレクトリにて)
$ git remote rm {名前、originなど}
Share