2018年9月30日日曜日

GitBucket の設定 / データベース (2)

Tomcat8 上の GitBucket における MySQL の設定記事の後半です.

MySQL での接続は,GitBucketの説明ページにも記載されて手順:

  1. mysql -uroot -p -hlocalhost
  2. create database gitbucket;
  3. grant all privileges on `gitbucket`.* to testuser@localhost identified by 'testpassword';
  4. flush privileges; 
  5. quit

で進めていくことになります.これで問題ないとは思いますが,自分自身での確認も含めて,自分がやった方法を順を追って説明します.

まず最初は MySQL でのデータベース管理システムへの接続です.これは上記の手順1の通り,以下となります:

server:~$ sudo mysql -u root -p -h localhost 
Enter password:
Welcome to the MySQL monitor.  
Commands end with ; or \g.Your MySQL connection id is 6Server version: 5.7.23-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. 
Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>


コマンド mysql への引数の意味は
  • -u : ユーザ指定 (rootで)
  • -p : パスワード要求
  • -u : ホスト名の指定
です.
その後,MySQL のコマンドプロンプト mysql> からデータベース操作を行います.

その後の手順を進める前に,まずはデフォルトの MySQL の動作モードがどうなっているかを確認しておく方が良いのではと思います.それは以下のコマンドを mysql> のプロンプトで発行することで確認できます:

  • mysql> SELECT @@sql_mode;

上記コマンドを入力すると表形式で情報が表示されますが,そのコンテンツとしては以下が表示されるのではないかと思います:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 
詳細についてはネット検索や MySQL のリファレンスマニュアル で確認できると思いますが,一つのポイントは以下かと思います:
NO_AUTO_CREATE_USER認証情報が指定される場合を除き、ほかの方法で実行される場合は、GRANT ステートメントで新規ユーザーを自動的に作成しません。ステートメントは IDENTIFIED BY を使用した空以外のパスワードを指定するか、IDENTIFIED WITH を使用した認証プラグインを指定する必要があります。
その後のSQL文における GRANT ステートメント発行において IDENTIFIED BY でパスワードを指定するか,陽にユーザ作成を行ってから GRANT を発行する必要があるとの認識です.MySQL のリファレンスマニュアルでは
「通常、データベース管理者は最初に CREATE USER を使用してアカウントを作成し、次に GRANT を使用してその権限や特性を定義します」(13.7.1.4 GRANT 構文
と記載してあり,通常の順をおったやり方ではまずは CREATE USER でのアカウント作成になるかとは思います.ただし「通常」と記載されている通り,自身の理解があるのであれば簡略した手順で進めていくことも可かと思います.

それをふまえて以下を進めます.
次はデータベースの生成です(手順2).これは GitBucket のページの通りです:
mysql> create database gitbucket;
Query OK, 1 row affected (0.00 sec)
無事に成功です.

その後の手順3:
grant all privileges on `gitbucket`.* to testuser@localhost identified by 'testpassword';
ですが,これは
testpassword というパスワードにより認識されたローカルホストのユーザ名 testuser に,MySQL の gitbucket データベース下のアクセスに関するすべての権限を与える
という意味になりますかね.特に「all privileges」は
ALL [PRIVILEGES] は、GRANT OPTION および PROXY 権限を除き、権限が付与されるレベルで使用可能なすべての権限を表します
となっています.
ここではユーザ名とパスワードを適切に指定して発行します.シングルコーテーション等少しわかりずらい所がありますが,自分は以下と入力し無事にOKが出ました
mysql> grant all privileges on gitbucket.* to 'gitbucket'@'localhost' identified by 'gitbucket'; 
Query OK, 0 rows affected, 1 warning (0.01 sec)
その後は手順4の
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
です.FLUSH ステートメントは,さまざまな内部キャッシュをクリアまたはリロードしたり、テーブルをフラッシュしたりするものですが,上記の「privileges」指定は以下の意味となります:
mysql データベース内の付与テーブルから権限をリロードします。
GRANT、CREATE USER、CREATE SERVER、および INSTALL PLUGIN ステートメントの結果として、サーバーは情報をメモリーにキャッシュします。このメモリーは、対応する REVOKE、DROP USER、DROP SERVER、および UNINSTALL PLUGIN ステートメントによって解放されないため、キャッシュを発生させるステートメントの多数のインスタンスを実行するサーバーでは、メモリー使用量が増加します。このキャッシュされたメモリーは FLUSH PRIVILEGES で解放できます。
その後は最後の quit です:
mysql> quit
Bye

これで無事にデータベースが作成できました.

後は GitBucket 側での設定です.それは次に記事にて.



GitBucket の設定 / データベース (1)

GitBucket を立ち上げ後,System Administration にて各種設定をしていくのですが,その際,System Settings にて以下の表示が目につくと思います:

ピンク色で囲まれた記載:
Your GitBucket is running on embedded H2 database. Recommend to configure to use external database if you would like to use GitBucket for important purpose.
がポイントです.

 GitBucketのデフォルトでは,その各種データを Java SQL Database である
H2 Database Engine
に保存するようになっています.Wikipedia のページ で紹介されている通り,オープンソースで低フットプリントな Java プラットフォーム用データベースの様で,開発元のwebページにある History and Roadmap を拝見するに 2004 年から開発されているデータベースの様です.
 使ってみた感覚として,それなりの信頼性はありそうな気はしますが,上記の GitBucket 上の記載を見るに,重要なデータを管理する場合には,より広く使われているデータベース(MySQLなりPostgreSQLなり)を使用することが薦められています.
作者側で確認済のことがあるのやもしれませんが,一般論としても,その使用者数が多いことからくる信頼性の高さは H2 よりも MySQL/PostgreSQL の方は良いかとは思います.
 記載上にある青字の "configure to use external database" のリンクに飛ぶと,MySQL や PostgreSQL を用いた設定方法が記載されています.
External database configuration
上記ページの記述を元に設定すればデータベースは使える様ですが,さて,どちらを使うべきか,です.
 それについては,僕自身は判断根拠を持ってはいませんが,以下のページを参考にさせて頂きました:
PostgreSQLとMySQL、使うならどっち? データベース専門家が8つの視点で徹底比較!
このページの結論によると
  • PostgreSQLは「多機能であること」が最大の利点なので、その特徴が生きるようなシステムには向いていると思います。たとえば、Oracle Databaseからの移行やSIer系の企業で使われるケースが多いという印象を個人的には持っています。あとは、分析系のシステムでもよく使われます。ただこれも前述のようにMySQLの分析機能が徐々に充実してきているため、将来的に差は少なくなってくるでしょう。
  • (MySQLは) 基本的には、シンプルなWebサービスに向いていると思います。一定数の結果セットを取ってきて、そのデータを表示するといった感じの。たとえばTwitterのように、タイムラインの先頭部分を表示して、下にスクロールすると次のデータを読みこむようなサービスは、MySQLには特にマッチしていると思います。
の様です.最後は「とはいえ、バージョンが上がるごとにPostgreSQLもMySQLも高性能になってきているので、結局は使いたい方を使えばいいんじゃないでしょうか。」と結ばれていますが,上記内容を見るに「MySQL」でいこうかなと思います.GitBucketのページでも MySQL の方が最初に記載されていますし.

MySQL での設定については,少し確認したこととかもあるので後半の記事で紹介しようと思います.

Ubuntu 18.04 Bionic Beaver Linux 上への gitbucket のインストール

前回の記事(Ubuntu 18.04 Bionic Beaver Linux 上への Tomcat8 サーバのインストール)に書きました通り,ソフトウェアリポジトリとして gitbucket を使ってまして,その準備として Tomcat を前回はインストールしました.

そして本丸である gitbucket のインストールです.

Tomcat 上に gitbucket をインストールする際には,以下の Wiki 記事が参考になります:
Deployment to JEE and Servlet containers
そこには Tomcat 8 向けのインストール方法が箇条書きされてまして,まさにその通りに設定をしていく形になります:
Tomcat 8
  1. install java8
  2. install tomcat8
  3. mkdir /var/gitbucket
  4. chown tomcat8:tomcat8 /var/gitbucket
  5. echo "GITBUCKET_HOME=/var/gitbucket" >> /etc/default/tomcat8
  6. deploy gitbucket.war into /var/lib/tomcat8/webapps
  7. service tomcat8 restart
自分が実施した時は手順5のリダイレクトがエラーとなったのですが,内容が明確なため特にエラー内容は確認せずに直接ファイルを修正しました :-)

これによりすぐに gitbucket にアクセス可能となります.なお Tomcat8 のURLが
http://<tomcat8のURL.例えば 192.168.10.1:8080等>
の場合,gitbucket は
http://<tomcat8のURL.例えば 192.168.10.1:8080等>/gitbucket
からアクセス可能です :


アクセス後,画面右上に表示されている [Sign In] からログイン可能です.
なお初期アカウントは root (パスワードもroot)となります.

root でログイン後,ユーザアカウント設定等を進めていくことになりますが,まずはリポジトリ上のデータ格納場所をどうするかを考える方が良いと思います.それらの設定は右上の System Administration メニューから実施することになります:

この先はデータベースの設定等,gitbucket の各種設定に関する話になりますので,別の記事にしようと思います.

こんな便利なソフトウェアを公開していただいている作者の方には感謝です.

2018年9月5日水曜日

Ubuntu 18.04 Bionic Beaver Linux 上への Tomcat8 サーバのインストール

うちのサーバでは各種ソフトウェアのリポジトリ管理に gitbucket を使用しています.Scala で実装されたオープンソースの Git サーバです.

なお作者の方は日本人でして,僕個人は面識はありませんが,最近トレジャーデータ社に転職されたみたいですね(作者の方のブログはこちら).

gitbucket自体は単独でもサーバ動作可能なのですが,Java Servlet として実装されており,前のサーバ運用時から Tomcat 上で動作させています.

今回も Tomcat 上でのサーバ動作としたく,まずは Tomcat からのインストールです.



サービス系のソフトウェアをインストールする手順として,これまでは関連する対象ソフトウェア群を個別に apt を使って install した後,設定ファイル等を細かに修正・調整し,サービス起動を自身で行った後,サービスに対してクライアントからの接続操作を行い,その挙動を諸々と確認するということを行っていたため,なかなか手間のかかる作業でした.

最近の Ubuntu では Tasksel というインストールと設定をまとめて実施してくれるツールが使用可能であるため,サービスのインストールも大変楽になりました.

Tasksel の詳細についてはここから確認できます.

また Tasksel を用いた ubuntu18.04 上での各種サービスのインストール詳細についても
LINUXCONFIG.org / YOUR SYSADMIN GUIDE TO GNU/LINUX 
というサイトから確認できます.

今回の tomcat8 のインストールも同サイトの
Install Tomcat 8 server on Ubuntu 18.04 Bionic Beaver Linux
という記事を参考にしました.

便利になりました :-)

具体的な手順は書いてある通りなので省略させて頂く形でお願いします.

GNU Emacs for Windows における最近の IMEパッチ問題

自分は GNU Emacs 使いなのですが、Windows版の Emacs を使用する場合、IMEパッチの問題がありました。 ざっくり言うと、FSFの正規のリリースバイナリだと日本語変換のIMEに切り替えた時、インラインで候補文字が表示されないという問題です。そのために有志の方々...