概要
Linuxマシンを用意する方が早いのは重々承知の上で、
Windows環境でサーバー構築する話。
サーバー機として使えるマシンが、
既に別の常駐ソフトが稼働中のWindowsマシンしか無いという事案。
手段として下記の2つを考える。
- Windows Subsystem for Linux(WLS)を使う
- Windowsで構築する
WLSを使う
Unixが使い慣れていることと、なるべく既存ソフトに影響を与えないようにとWLS を検討する。
はたしてWLSにUbuntuを入れれば普通のLinuxサーバーっぽく動作させられるのか、試してみることにする。
WLSを起動するまでの設定手順
Windows10の「Windowsの機能の有効化または無効化」から、Windows Subsystem for Linuxのチェックを有効にする
Ubuntu 設定
インストール
Microsoft StoreからUbuntuを検索して、Ubuntu18.04 LTSを入手する
設定で開発者モードを有効にする
Proxy設定を入力(必要なら)
sudo vi /etc/environment
http_proxy="http://user:path@proxy-server:proxy-port"
https_proxy="http://user:path@proxy-server:proxy-port"
ftp_proxy="http://user:path@proxy-server:proxy-port"
ssh有効化
vi /etc/ssh/sshd_config
-> 変更する PasswordAuthentication yes
sudo ssh-keygen -A
sudo service ssh restart
アンインストール方法
無事に動いているが、一旦アンインストールしたい場合は、普通にWindows10のスタートアップかアプリ画面でアイコン右クリックでアプリを削除を選べばできた。
削除しおわってアイコンが消えるのに2, 3分くらいかかった。
WebUIのインストール
Gitに標準で付いているWebUIでは1プロジェクト毎にサーバーを立てる必要があるため、
もう少し高機能なWebUIがほしいと考えた。
今回は導入に成功したGitクライアント以外に幾つか試したものがあるため、
どんな状況だったのかを記録するために、ここに記しておく。
今回試したWeb UIは下記の通り。
- GitLab (不可)
- Kallithea (不可)
- GitBucket インストールできた
最低限の条件としては、Freeで使えること。
ユーザーとプロジェクトの管理ができること。
その点で、GitWebは除外したがプロジェクト単体で管理したいならベストだろう。
gintra, ungitなどはUIが一般的な気がしなかったため、除外した。
GitLab
Ubuntu アップデート
$ sudo apt update
$ sudo apt upgrade
Gitlab インストール
$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
$ sudo apt install gitlab-ce
更新後に、下記のコマンドで再コンフィグをかける
$ sudo gitlab-ctl reconfigure
ここで永久にコンフィグが完了しない問題が発生している。
非WLSのLinuxマシンでのUbuntuでは本手順で問題ないことは確認できており、
gitlabはスタートアップ関連にも依存があるというか自動設定してくれるため、
そのあたりに何か問題が出ているだろうという見当は有るのだが、
ここまで高級なクライアントを求めているわけではないため、次を試したい。
ちなみに、VirutalBoxだとインストール出来るらしい。
Kallithea
python 関連の準備
apt-get install python-dev
apt-get install git
apt-get install python-pip
easy_install pip
easy_install PasteScript
Kallitheaのインストール
pip install kallithea
paster make-config Kallithea kallithea.ini
pasterのエラーが取れず挫折。
GitBucket
JettyやH2DB、Gitのjava実装を内蔵しているため、最小構成で利用する場合は、
gitbucket.warをwgetして、java -jar gitbucket.warするだけで実行可能。もちろん拡張も可能。
gitbucketのデータやリポジトリが置かれる場所は、デフォルトでは~/.gitbucketだったため、環境変数GITBUCKET_HOMEに指定すると変更できた。
8080ポート指定は、apache-tomcat-8.5.8/conf/server.confで変更できる。
SSHを使う場合、User Managementから『System Settings』を変更することになるが
ブラウザ経由でGitBucketにアクセスできなくなる場合がある。
そのときは、設定ファイルを直接編集して修正する。.gitbucket/gitbucket.conf
Windowsで構築する
※この件に関しては1個づつ環境をインストールしていく手順で進めたことにより
動作はしているが環境の拡張性が乏しくなった。
XAMPPに統一すべきだったと反省している。
Web UIのインストール
Gitbucket
上記検討の結果、Gitbucket自体はJavaで動作しており、
Webサーバー側のGitクライアントはGitのJava実装であるということ。
例えば、WLSを使う必要がなくGitのWebクライアントだけを入れたい場合は普通にWindowsのシェルで起動すれば良い。
他のWebアプリと起動しない、Tomcatが必要ないという状況であれば下記だけでいい。
java -jar C:\gitbucket\gitbucket.war --port=80 --prefix=/gitbucket --gitbucket.home=hogehoge
サービス化する場合は、管理者実行したコマンドプロンプトで
sc create binPath="GitBucket java -jar C:\gitbucket\gitbucket.war --port=80 --prefix=/gitbucket --gitbucket.home=hogehoge"
Redmine
ApacheのウェブサーバーとMySQLとそれらサービスの起動・停止マネージャーがオールインワンになっているBitnami Redmineをインストールするのが一番簡単。
インストール
インストーラーに従ってインストールするだけ。
MySQL, Apache, Redmine は自動的にサービスに追加される。
それぞれ単独で再起動などしたい場合は、C:\Bitnami\redmine-4.0.5-0に、
manager-windows.exe という実行ファイルがあり、
このGUIを使って再起動などをかけられる。
メール設定
config/configuration.ymlを編集
C:\Bitnami\redmine-4.0.5-0\apps\redmine\htdocs\config にある。
defaultのconfigは設定例がいっぱい書いてあるため
バックアップしておき、設定だけを記載するようにする
詳しくは公式を見よう。Gmailの設定方法はここに書いてある
login認証が不要な場合はauthは書かなくていい。
設定の反映
Bitnamiフォルダをmanager-windows.exeで検索してRestart All
確認
管理->設定->メールからメールアドレスを入力して、テストメールを送信で確認
プラグイン追加
EasyGantt
Easyganttを公式からダウンロードすると、3.0と4.0が入っているため
今回は4.0を解凍して出てきたeasy_ganttを
C:\Bitnami\redmine\apps\redmine\htdocs\pluginsに展開した
次に、bundle install を使用できるようにするため、
システム環境変数の「Path」に次を追加した ※別にしなくても
C:\Bitnami\redmine-[version]\ruby\bin
コマンドプロンプトを開いて、プロキシ設定
set http_proxy=http://proxy.hogehoge.co.jp:8080
インストール
cd C:\Bitnami\redmine\apps\redmine\htdocs
bundle install --no-deployment
bundle exec rake db:migrate RAILS_ENV=production
管理者でコマンドプロンプトを実行しないと、bundle execでDBが生成されない。
表示上は特にエラー等が出ないので地味にはまる。
view-customize
同じようにview-customizeを追加する
CSS, Javascriptを使って、見た目などを拡張しやすくなるので便利
git clone https://github.com/onozaty/redmine-view-customize.git view_customize
cd ../
bundle install --no-deployment
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
knowledgebase
本家が更新されておらずRails5に対応していないようなので、
folkのcommit 5109c5cb275441cef9bf2abd6c460d7daadf162eを持ってきた。
それでも、migrationでエラーとなる、これくらいはgemが無視してくれてもいいじゃんと思うが、
Cannot drop index 'index_taggings_on_tag_id': needed in a foreign key constraint: DROP INDEX index_taggings_on_tag_id
ON taggings
db\migrate\20150326093104_add_missing_unique_indice.rbでコメントアウトしたらインストールできた
#add_index :tags, :name, unique: true
#remove_index :taggings, :tag_id
#remove_index :taggings, [:taggable_id, :taggable_type, :context]