LinuxMint20 MATEにgitlabをインストール

予め、gitlabの依存パッケージをインストールして下さいね。gitlab公式<URL:https://www.gitlab.jp/install/>
を参照して下さい。

$ sudo apt-get update
$ sudo apt-get install -y curl openssh-server ca-certificates


まず、パッケージマネージャ aptのパッケージリストにgitlab-ceのURLを追加してから、gitlab-ceをインストールします。
もし、gitlab-eeをインストールしたければ、以下のgitlab-ce部分をgitlab-eeに置き換えて実施して下さいね。

手順:

1.gitlab-ceのスクリプトをダウンロードする

$ wget https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

2.ダウンロードしたscript.deb.shをエディットする
apt_config_url=を探して$(os)部分と$(dist)部分を変更する。
LinuxMint20はUbuntu 20.04 LTSがベースなので、"$(os)"→"ubuntu"、"$(dist)"→"focal"に置き換えます。

 apt_config_url="https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/config_file.list?os=ubuntu&dist=focal&source=script"

ちなみに。。。

  • Mint19.Xの場合、ベースバージョンはUbuntu 18.04 LTSなので、"$(dist)"→"bionic"です。
  • Mint18.Xの場合、Ubuntu 16.04 LTSなので、"$(dist)"→"xenial"です。

3.script.deb.shを実行する

$ sudo bash script.deb.sh
Detected operating system as LinuxMint/ulyana.
Checking for curl...
Detected curl...
Checking for gpg...
Detected gpg...
Running apt-get update... done.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/gitlab_gitlab-ce.list...done.
Importing packagecloud gpg key... done.
Running apt-get update... done.
The repository is setup! You can now install packages.

4.aptアップデートする

$ sudo apt update
ヒット:1 http://archive.canonical.com/ubuntu focal InRelease
ヒット:2 http://archive.ubuntu.com/ubuntu focal InRelease
ヒット:3 http://security.ubuntu.com/ubuntu focal-security InRelease
無視:5 http://packages.linuxmint.com ulyana InRelease
ヒット:6 http://archive.ubuntu.com/ubuntu focal-updates InRelease
ヒット:7 http://packages.linuxmint.com ulyana Release
ヒット:8 http://archive.ubuntu.com/ubuntu focal-backports InRelease
ヒット:4 https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu focal InRelease
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
パッケージはすべて最新です。

5.gitlab-ceをインストールする

$ sudo apt-get install gitlab-ce
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  gitlab-ce
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
837 MB のアーカイブを取得する必要があります。
この操作後に追加で 2,262 MB のディスク容量が消費されます。
取得:1 https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu focal/main amd64 gitlab-ce amd64 13.6.3-ce.0 [837 MB]
837 MB を 26秒 で取得しました (32.0 MB/s)
以前に未選択のパッケージ gitlab-ce を選択しています。
(データベースを読み込んでいます ... 現在 378295 個のファイルとディレクトリがインストールされています。)
.../gitlab-ce_13.6.3-ce.0_amd64.deb を展開する準備をしています ...
gitlab-ce (13.6.3-ce.0) を展開しています...
gitlab-ce (13.6.3-ce.0) を設定しています ...
It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting external_url
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

インストール完了です。

Git for windowsインストール

Git for windowsは、Gitクライアントです。

GitHubやGitLab等のGitサーバーとSSH接続するために、GitクライアントをPCにインストールして SSHキーを作成できます。
厳密にいえば、Gitクライアントは、Gitサーバーと接続するために使用するのではなく、ローカル(PC)リポジトリやGitサーバーリポジトリをgitコマンドで操作するためのCLI(Command Line Interface)ツールです。
Gitクライアントの付随機能として、GitサーバーとSSH接続するための SSHキーも生成できます。

Gitクライアントは、git for windows https://gitforwindows.orgからダウンロードして、インストールします。

ダウンロードした Git-2.26.2-64-bit.exe を実行すると、インストールが開始されます。※ 2020年5月6日時点の最新バージョンが 2.26.2です。

最近のバージョンでは、セットアップ画面が変わってますがデフォルトの設定でインストールして問題ないでしょう。

ssh鍵(キー)の生成

Git Bashを起動して、gitサーバとssh接続するためのssh鍵を生成できます。
$ ssh-keygen -t rsa -b 2048または4096[Enter]
・”-t rsa”は、RSA鍵を指定します。
・”-b 4096 / 2048″は、4096または2048を指定します。4096または2048ビット長でssh鍵が生成されます。値を大きくすると暗号・復号処理が遅くなりますが暗号強度が増します。”-b 4096″で生成した鍵でssh接続してますが遅いと感じません。

※ちまたで、-Cやパスフレーズを指定していますが、無い方がトラブル回避できますよ。
・”-C”のコメント指定は不要なので、指定しない方が良いでしょう。
・パスフレーズの入力が促されますが、[Enter]を押して何も指定しない方が、様々なgitサーバーに使用できると思います。今のところ問題おきてません。

企画したイベントを会員に展開するプラグイン

ProfileGrid プラグインの無料拡張プラグインにEventPrimeプラグインがある。

このプラグインはイベントカレンダーに日時や詳細なイベント内容を記載して、会員に告知、展開できそうだ。

スターターガイドが丁寧に書かれています。このプラグインも日本語化してしまえば、簡単に使えそうだ。

ProfileGrid のグループとユーザー

◆ユーザーについて
このプラグインでユーザー登録するとWordPress ユーザーにも登録されます。また、ユーザーの権限もWordPressのユーザー権限と同じです。
しかし、プラグインはWordPressのコアより先に動くので、ユーザー権限が異なると落とし穴にハマります。ユーザー管理はWordPressとプラグインで分けて欲しいところですね。無料プラグインでは厳しいのかな…!?

◆グループについて
最初に[Default User Group]が作られています。プラグイン有効化時点のWordpressユーザーが、このグループに所属されます。
管理者権限のユーザーは、このグループから即刻外すことをお勧めします。理由は、このグループに所属するとグループ内ユーザーのデフォルト権限が「講読者」のため、Wordpress の管理者ログインページからログイン出来なくなります。
ログイン出来なくなった場所は、FTPクライアントソフトやSSHクライアントソフトでサーバーに接続して、ProfileGrid プラグインフォルダを別なフォルダに移動するか、フォルダ削除すると直りますよ。

ProfileGridプラグインの有効化

◼️ProfileGridプラグインインストール後、プラグインを有効化すると、以下に列挙した固定ページが作成されます。Wordpressの固定ページで確認できますよ。

これら固定ページにはショートコードが記載されていて、タイトルに合致した画面が表示されるようになります。これらをWordPress のメニューに割り当てて、ユーザーが使えるようにします。

◆作成される固定ページ
・login:ログイン画面の表示
・Register:会員(WordPressユーザー)のアカウント情報表示
・Profile:会員(WordPressユーザー)のプロファイル情報表示
・forget password :パスワードリセット要求画面


私は使用しませんが、以下のようなページもあります。
・All Group:すべてのグループ表示
・Default User Group:ユーザーが所属するグループの表示
・Search :ユーザー検索画面等々。

ProfileGridプラグインの簡単な説明

◼️ProfileGrid は、メンバーシップ(=会員制)サイトを構築するためのWordPressプラグインです。
メンバー間のメッセージ通信、メンバーによるブログ投稿、グループ内メンバーへの連絡、メンバーアカウントやプロファイルのカスタマイズがグループごとに定義できます。
メンバーは複数のグループに所属することも可能です。グループ定義を無料会員向け、有料会員向けグループとしても定義できます。
支払いにはPayPalを導入できます。

私は、会員制サイトを作る上で、会員のプロファイルを自由に定義したいのでこのプラグインを検討してます。
無料で出来る範囲が他の有名プラグインより多い印象です。

ProfileGrid による会員制サイト構築の検討

会員制サイトを構築するために、まずはローカルLAN環境で、ProfileGrid – User Profiles, Groups and Communitiesプラグインをいじり倒して、プラグインで使われている単語や振る舞いを理解中です。このプラグインは無料で出来る事が、他のプラグインに比べて多い印象です。 
・グループにより、会員レベルが定義出来きます。(一般会員、ゴールド会員等)
・会員のプロファイル項目が簡単に追加・削除でき、項目の並び順も簡単に出来ます。(自由にカスタマイズ可能)
・拡張プラグイン(無料)でカレンダーから企画したイベントを会員に展開できるようです。(これから試します)
・PayPalが使えそうです。
現在、会員制サイト立ち上げのための設定をまとめ中です。後日展開できると良いです。

Git, GitHub, TortoiseGitのSSH接続設定

TortoiseGitからGitHub にSSH接続する設定を展開します。以下”SSH鍵”と記載していますが、「SSH接続するための暗号化鍵」の事です。Windows 7でも確認済みです。尚、ソフトウェア版数は、現在(2019/2/6)の最新版を使用します。

・Git for Windows 2.20.1
・TortoiseGit 2.7.0 +言語パッケージ

◆ 0.準備

GitHub アカウントは登録済みであること。
Git for Windows 、TortoiseGit は、インストール済みであること。

インストール方法は、別途記載します。

◆ 1.Git Bashのコンソールからssh-keygenコマンドでSSH 鍵を生成しますが、その前に gitコマンドでconfig設定しておきましょう。

$ git config –global user.name “YourName”
$ git config –global user.email YourEmail@hoge.com $ ssh-keygen -t rsa -b 4096

コマンドを実行すると、SSH鍵をcreateするファイル名やパスフレーズが問われます。何も入力せず[Enter]キーを押します。
パスフレーズは10文字以上入力すると強固な鍵が作成できるのですが、TortoiseGit での利用が思うように出来なかったりするので、私は利用面を優先します。しかし、セキュリティ面も大事ですので4096ビットで鍵生成します。因みにデフォルトは2048ビットです。
パスフレーズを入力すると、PuTTYgenでTortoiseGit に設定するid_rsa.ppkが作成出来ません。(id_rsaの秘密鍵の読み込みに失敗します)

・id_rsa:RSA秘密鍵
・id_rsa.pub:RSA公開鍵。GitHubにはこちらの公開鍵を設定します。

秘密鍵と公開鍵ができたので、GitHub で受け入れられるか確認しましょう。

◆ 2.PuTTYgen で先に生成したSSH鍵をid_rsa.ppkファイルに変換します。

id_rsa.ppkファイルはTortoiseGit に設定して、GitHub とSSH接続するための鍵ファイルです。

PuTTYgenを起動して、[File]-[Load private key]メニューでid_rsa秘密鍵ファイルを読み込みます。読み込みがSuccess なら、[Save private key]ボタンを押して、ファイル名 id_rsa.ppkで保存します。

PuTTYgen 画面に表示されているPublic keyテキスト内をコピーして、
GitHubの[settings] – [Personal setting] -[SSH and GPG keys]のSSH keysにペーストして、GitHubでも公開鍵が受け入れるかをチェックしましょう。

以上でTortoiseGit からGitHub にSSH 接続できます。

巷のサイトではソフトバージョンが古くて思うように行かなかったゼ。

STM32CubeMX

年末年始休暇を利用して、STM32F103C8でI2CデバイスのMCP23017をPB6,PB7(I2C1 SCL,SDA)に接続した回路をブレッドボードに実装してみた。
そして、STM32CubeMX(CubeF1)にて初期化部分のコードを生成したところバグがあることが分かった。
開発環境の各バージョンは次の通りである。
・STM32FCubeMX Ver5.0.0
・STM32CubeF1 Ver1.7.0
・IAR社 EWARM 7.50.3

STM32CubeMXで自動生成された下記コードでは、I2C SCLにクロックが出力されない事が分かった。

void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(hi2c->Instance==I2C1)
  {
  /* USER CODE BEGIN I2C1_MspInit 0 */

  /* USER CODE END I2C1_MspInit 0 */

    __HAL_RCC_GPIOB_CLK_ENABLE();
    /**I2C1 GPIO Configuration    
    PB6     ------> I2C1_SCL
    PB7     ------> I2C1_SDA 
    */
    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    /* Peripheral clock enable */   ★★I2CペリフェラルへのクロックEnableは、
    __HAL_RCC_I2C1_CLK_ENABLE();    ★★HAL_GPIO_Init()より前に行わないとI2Cが正常に動作しない
  /* USER CODE BEGIN I2C1_MspInit 1 */

  /* USER CODE END I2C1_MspInit 1 */
  }

}

私は、GPIOBのクロックの直後に移動した。

__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_I2C1_CLK_ENABLE();

ちなみに、MCP23017のdevice addressは0x20であるが、I2C APIのパラメータに渡すときは、左にシフトして(0x40)渡すことが、API仕様に書いてあります。

#include "stm32f1xx.h"

/** i2cスレーブアドレス */
#define SLAVE_ADDR  0x40
/** i2cデバイスハンドル */
I2C_HandleTypeDef   MCP23017_handle;

void MCP23017_init(void)
{
    uint8_t rw_buff[2];

    /* Initialize for I2C */
    MCP23017_handle.Instance = I2C1;
    MCP23017_handle.Init.ClockSpeed = 100000;
    MCP23017_handle.Init.DutyCycle = I2C_DUTYCYCLE_2;
    MCP23017_handle.Init.OwnAddress1 = 0;
    MCP23017_handle.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
    MCP23017_handle.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
    MCP23017_handle.Init.OwnAddress2 = 0;
    MCP23017_handle.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
    MCP23017_handle.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
    if( HAL_I2C_Init( &MCP23017_handle ) != HAL_OK )
    {
        Error_Handler();
    }

    /** I2Cデバイスからの読み出し(デバッグ用) */
    rw_buff[0] = 0x05;
    if( HAL_I2C_Master_Receive( &MCP23017_handle, SLAVE_ADDR, rw_buff, 1, HAL_MAX_DELAY ) != HAL_OK ){
//  if( HAL_I2C_Master_Transmit( &MCP23017_handle, SLAVE_ADDR, rw_buff, 1, HAL_MAX_DELAY ) != HAL_OK ){
//  if( HAL_I2C_Master_Transmit_IT( &MCP23017_handle, SLAVE_ADDR, rw_buff, 1 ) != HAL_OK ){
        Error_Handler();
    }
}