Redmineネタ / おしながき
運用ノウハウや考え方といったものには触れず、簡単に立ててみる。
特に、どのディレクトリにどんなデータがあって、どこさえ守ればいいのか、ログは何を確認すればいいのかといったあたりを説明したい。
立てようとして詰まってしまい、手を出せなかった...という残念なことにならないように、なにか不明不安なところがあれば、解消してあげたい。
----------------
Redmineについてさっくりはなす
このへんは飛ばすかも(開始直後の5分くらいまで)
言語はruby, Ruby on Railsというフレームワークで作られている
本家紹介
日本の情報紹介(詳細は末尾)
こまったらTweetするとRedmine職人がやって来てくれる
----------------
以下、様子を見て手を動かす側に入ります。
どこから取得する?
ダウンロード元について
本家のtgz / zip -> Gitなしでもだいじょぶ
本家のSubversion -> Svnコマンドで取ってくるよ
本家の公式ミラー (Bitbucket)
有志がメンテナンスしているGitHub
ためすにはどうしたらいい?
Rubyのバージョンに注意!
個人的見解
nokogiriのインストールとかで結構心が折れることがある
gem installで失敗するとどうしたらいいかわからなくなる
可能ならDockerがいい
全部入りのRedmineはどう?
BitNamiとかは、Webアプリケーションの管理運用に慣れていない場合は、かなり厳しい
構成を変えようとしたり、プラグインを追加する際にハマるから
ざざっと、BitNamiの中身について説明(これは時間があまったらにする)
パスはここ。なにで動くetc....
Redmineのソースのレイアウトを確認する
まずはわたしのローカルのMacに入っているのを眺めます!
SQLite3をデータストアにする
マイグレーションの情報がどこにあるのか、テーブルを眺める
DataGripとか使う
プラグインをアンインストールするときどうするのかをお話する
rake (rails) tasks, consoleについて少し説明する
consoleからパスワードを変更する
User.find_by_login('admin').update!(password: 'infra-study')
WARNING: Can't mass-assign protected attributes for User: password になる
User.find_by_login('admin').update_attribute(:password, 'infra-study') ならOK
code:ruby
u = User.find_by_login('admin')
new_passwd = 'infra_study'
# (1) オブジェクトのプロパティに値を設定して、save
u.password = new_passwd
=> "infra_study"
irb(main):016:0> >> u.save
(0.3ms) begin transaction
Setting Load (0.3ms) SELECT "settings".* FROM "settings" WHERE "settings"."name" = ? ORDER BY "settings"."id" DESC LIMIT 1 "name", "password_min_length"
SQL (1.1ms) UPDATE "users" SET "salt" = ?, "hashed_password" = ?, "passwd_changed_on" = ?, "updated_on" = ? WHERE "users"."id" = ? "salt", "xxxxx"], "hashed_password", "xxxxxxx", "passwd_changed_on", "2018-10-17 22:24:17.000000", "updated_on", "2018-10-17 22:24:17.441790", ["id", 1 SQL (0.8ms) DELETE FROM "tokens" WHERE "tokens"."user_id" = ? AND "tokens"."action" IN ('recovery', 'autologin', 'session') "user_id", 1
(5.8ms) commit transaction
# (2) update_attribute(:password, new_passwd)で、単一フィールドのみ更新
u.update_attribute(:password, new_passwd)
(0.1ms) begin transaction
SQL (0.7ms) UPDATE "users" SET "salt" = ?, "hashed_password" = ?, "passwd_changed_on" = ?, "updated_on" = ? WHERE "users"."id" = ? "salt", "xxxxxxx"], "hashed_password", "xxxxxxx", "passwd_changed_on", "2018-10-17 22:25:05.000000", "updated_on", "2018-10-17 22:25:05.627834", ["id", 1 SQL (0.1ms) DELETE FROM "tokens" WHERE "tokens"."user_id" = ? AND "tokens"."action" IN ('recovery', 'autologin', 'session') "user_id", 1
(37.8ms) commit transaction
# (3) update_attributes!(password: new_passwd) だとWARNING,
# 例外は発生しないが、パスワードUpdateの処理が走らない
u.update_attributes!(password: new_passwd)
(0.1ms) begin transaction
WARNING: Can't mass-assign protected attributes for User: password
code:ruby
irb(main):028:0> >> Redmine::Info.versioned_name
=> "Redmine 3.4.4.stable"
irb(main):029:0> >> Rails.env
=> "development"
irb(main):030:0>
attr_protectedにpasswordが指定されてる。attr_accessorでの指定はあるので、user.password という呼び出しはできる。
productionでならOK,というわけでもなさそう。
プラグインの調整をしてみます
ほんのサンプルです
日本語版のReadmeを調整します&プルリクを作ります&CircleCIでのビルド、Siderのチェックを通します
Docker (docker-compose) で簡単に起動する
コンテナの動きを確認する
docker-compose の場合にどんな動きをするかを確認する
このリポジトリを使います!
APIを叩くデモをする
こんなツールで確認するよ
curlでシンプルに
Restlet ClientでGUIから
これくらいまでかなあ、と予想。(30 - 40min)
Azureに放り込んでみましょう
もしかしたらこれをやります -> ちょっとむりっぽいのでパス
もっときっちり起動する
※ たぶんこれは行いません。どこかのサーバで、もしくはCloud9で。
Nginxを前に立てる
unicornでバックエンドを起動する
添付ファイルの保存場所について確認する
その他(参考程度に書いておく)
時間ないと思われるので、リンクだけ。適宜お話。
組みあわせを色々試しているのです