Gogs をインストールしてみる記録
環境
CentOS 8.3
Ref
git user を作る
[root@gogs1 ope]# useradd git [root@gogs1 ope]# passwd git ユーザー git のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。 [root@gogs1 ope]#
locale を変更
[root@gogs1 ope]# locale LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL= [root@gogs1 ope]# [root@gogs1 ope]# localectl list-locales | grep -i us en_US en_US.iso885915 en_US.utf8 [root@gogs1 ope]# [root@gogs1 ope]# localectl set-locale en_US.utf8 [root@gogs1 ope]# [root@gogs1 ope]# source /etc/locale.conf [root@gogs1 ope]# [root@gogs1 ope]# locale LANG=en_US.utf8 LC_CTYPE="en_US.utf8" LC_NUMERIC="en_US.utf8" LC_TIME="en_US.utf8" LC_COLLATE="en_US.utf8" LC_MONETARY="en_US.utf8" LC_MESSAGES="en_US.utf8" LC_PAPER="en_US.utf8" LC_NAME="en_US.utf8" LC_ADDRESS="en_US.utf8" LC_TELEPHONE="en_US.utf8" LC_MEASUREMENT="en_US.utf8" LC_IDENTIFICATION="en_US.utf8" LC_ALL= [root@gogs1 ope]#
git user が sudo 出来るようにする
ついでに、パスワード無しでコマンドを実行できるようにする
# visudo ... ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL git ALL=(ALL) NOPASSWD: ALL ...
必要な周辺パッケージをインストールする
いつもの
# yum check # yum update
tar とか
[root@gogs1 ope]# yum install tar wget mariadb mariadb-server ... Installed: mariadb-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-backup-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-common-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-connector-c-3.1.11-2.el8_3.x86_64 mariadb-connector-c-config-3.1.11-2.el8_3.noarch mariadb-errmsg-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-gssapi-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-server-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 mariadb-server-utils-3:10.3.28-1.module_el8.3.0+757+d382997d.x86_64 perl-DBD-MySQL-4.046-3.module_el8.1.0+203+e45423dc.x86_64 perl-DBI-1.641-3.module_el8.1.0+199+8f0a6bbd.x86_64 perl-Math-BigInt-1:1.9998.11-7.el8.noarch perl-Math-Complex-1.59-416.el8.noarch Complete! [root@gogs1 ope]#
git (latest)
ref
結局めんどくさくなって yum で入れてしまった。
[root@gogs1 ope]# yum install git-all ... Installed: apr-1.6.3-11.el8.x86_64 apr-util-1.6.1-6.el8.x86_64 apr-util-bdb-1.6.1-6.el8.x86_64 apr-util-openssl-1.6.1-6.el8.x86_64 centos-logos-httpd-80.5-2.el8.noarch git-all-2.27.0-1.el8.noarch git-credential-libsecret-2.27.0-1.el8.x86_64 git-email-2.27.0-1.el8.noarch git-gui-2.27.0-1.el8.noarch git-instaweb-2.27.0-1.el8.noarch git-subtree-2.27.0-1.el8.x86_64 git-svn-2.27.0-1.el8.noarch gitk-2.27.0-1.el8.noarch gitweb-2.27.0-1.el8.noarch httpd-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64 httpd-filesystem-2.4.37-30.module_el8.3.0+561+97fdbbcc.noarch httpd-tools-2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64 libserf-1.3.9-9.module_el8.3.0+703+ba2f61b7.x86_64 mod_http2-1.15.7-2.module_el8.3.0+477+498bb568.x86_64 perl-Authen-SASL-2.16-13.el8.noarch perl-CGI-4.38-2.el8.noarch perl-Compress-Raw-Bzip2-2.081-1.el8.x86_64 perl-Compress-Raw-Zlib-2.081-1.el8.x86_64 perl-Digest-HMAC-1.03-17.module_el8.3.0+416+dee7bcef.noarch perl-Digest-SHA-1:6.02-1.el8.x86_64 perl-Encode-Locale-1.05-10.module_el8.3.0+416+dee7bcef.noarch perl-GSSAPI-0.28-23.el8.x86_64 perl-Git-SVN-2.27.0-1.el8.noarch perl-HTML-Parser-3.72-15.module_el8.3.0+416+dee7bcef.x86_64 perl-HTML-Tagset-3.20-34.module_el8.3.0+416+dee7bcef.noarch perl-HTTP-Date-6.02-19.module_el8.3.0+416+dee7bcef.noarch perl-HTTP-Message-6.18-1.module_el8.3.0+416+dee7bcef.noarch perl-IO-Compress-2.081-1.el8.noarch perl-IO-HTML-1.001-11.module_el8.3.0+416+dee7bcef.noarch perl-LWP-MediaTypes-6.02-15.module_el8.3.0+416+dee7bcef.noarch perl-MailTools-2.20-2.el8.noarch perl-Memoize-1.03-416.el8.noarch perl-Net-SMTP-SSL-1.04-5.el8.noarch perl-Time-HiRes-1.9758-1.el8.x86_64 perl-TimeDate-1:2.30-15.module_el8.3.0+416+dee7bcef.noarch perl-YAML-1.24-3.module_el8.1.0+230+35fea25e.noarch subversion-1.10.2-4.module_el8.3.0+703+ba2f61b7.x86_64 subversion-libs-1.10.2-4.module_el8.3.0+703+ba2f61b7.x86_64 subversion-perl-1.10.2-4.module_el8.3.0+703+ba2f61b7.x86_64 tcl-1:8.6.8-2.el8.x86_64 tk-1:8.6.8-1.el8.x86_64 utf8proc-2.1.1-5.module_el8.3.0+703+ba2f61b7.x86_64 Complete! [root@gogs1 ope]# [root@gogs1 ope]# git --version git version 2.27.0 [root@gogs1 ope]#
バージョン結構高いな
2.32
が最新らしい
mariadb をスタートさせる
[root@gogs1 ope]# systemctl start mariadb.service [root@gogs1 ope]# systemctl status mariadb.service ● mariadb.service - MariaDB 10.3 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor > Active: active (running) since Sat 2021-05-29 16:22:59 JST; 2s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 35310 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited,> Process: 35176 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.servi> Process: 35151 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, s> Main PID: 35279 (mysqld) Status: "Taking your SQL requests now..." Tasks: 30 (limit: 12415) Memory: 83.3M CGroup: /system.slice/mariadb.service └─35279 /usr/libexec/mysqld --basedir=/usr May 29 16:22:58 gogs1.tk.net mysql-prepare-db-dir[35176]: See the MariaDB Kno> May 29 16:22:58 gogs1.tk.net mysql-prepare-db-dir[35176]: MySQL manual for mo> May 29 16:22:58 gogs1.tk.net mysql-prepare-db-dir[35176]: Please report any p> May 29 16:22:58 gogs1.tk.net mysql-prepare-db-dir[35176]: The latest informat> May 29 16:22:58 gogs1.tk.net mysql-prepare-db-dir[35176]: You can find additi> May 29 16:22:58 gogs1.tk.net mysql-prepare-db-dir[35176]: http://dev.mysql.com May 29 16:22:58 gogs1.tk.net mysql-prepare-db-dir[35176]: Consider joining Ma> May 29 16:22:58 gogs1.tk.net mysql-prepare-db-dir[35176]: https://mariadb.org> May 29 16:22:59 gogs1.tk.net mysqld[35279]: 2021-05-29 16:22:59 0 [Note] /usr> May 29 16:22:59 gogs1.tk.net systemd[1]: Started MariaDB 10.3 database server. [root@gogs1 ope]#
[root@gogs1 ope]# systemctl is-enabled mariadb.service disabled [root@gogs1 ope]# systemctl enable mariadb.service Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service. [root@gogs1 ope]#
git user になる
[root@gogs1 ope]# su - git [git@gogs1 ~]$ [git@gogs1 ~]$
mariadb の初期設定する
command
mysql -u root -e "CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
log
[git@gogs1 ~]$ mysql -u root -e "CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" [git@gogs1 ~]$ mysql -u root -e "show databases;" +--------------------+ | Database | +--------------------+ | gogs | | information_schema | | mysql | | performance_schema | +--------------------+ [git@gogs1 ~]$
mariadb に gogs user を作る command
mysql -u root -e "create user gogs; grant all privileges on gogs.* to gogs@'%' identified by 'PASSWORD';"
log
[git@gogs1 ~]$ mysql -u root -e "create user gogs; grant all privileges on gogs.* to gogs@'%' identified by 'PASSWORD';" [git@gogs1 ~]$ [git@gogs1 ~]$ [git@gogs1 ~]$ mysql -u root -e "select Host,User,Password from mysql.user; show grants for gogs@'%';" +--------------+------+-------------------------------------------+ | Host | User | Password | +--------------+------+-------------------------------------------+ | localhost | root | | | gogs1.tk.net | root | | | 127.0.0.1 | root | | | ::1 | root | | | % | gogs | *1F0D3C5C4DB52D3E2CABA5BB638A291DC24B2F9E | +--------------+------+-------------------------------------------+ +-----------------------------------------------------------------------------------------------------+ | Grants for gogs@% | +-----------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO `gogs`@`%` IDENTIFIED BY PASSWORD '*1F0D3C5C4DB52D3E2CABA5BB638A291DC24B2F9E' | | GRANT ALL PRIVILEGES ON `gogs`.* TO `gogs`@`%` | +-----------------------------------------------------------------------------------------------------+ [git@gogs1 ~]$
Go をインストールする
ref
[git@gogs1 ~]$ sudo -s [root@gogs1 git]# wget https://golang.org/dl/go1.16.4.linux-amd64.tar.gz ... [root@gogs1 git]# ls -l total 126020 -rw-r--r--. 1 root root 129044044 May 7 03:04 go1.16.4.linux-amd64.tar.gz [root@gogs1 git]#
install go
[root@gogs1 git]# rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.4.linux-amd64.tar.gz [root@gogs1 git]# ls -l /usr/local/ total 0 drwxr-xr-x. 2 root root 6 Nov 4 2020 bin drwxr-xr-x. 2 root root 6 Nov 4 2020 etc drwxr-xr-x. 2 root root 6 Nov 4 2020 games drwxr-xr-x. 10 root root 272 May 7 00:05 go drwxr-xr-x. 2 root root 6 Nov 4 2020 include drwxr-xr-x. 2 root root 6 Nov 4 2020 lib drwxr-xr-x. 3 root root 17 Mar 22 21:16 lib64 drwxr-xr-x. 2 root root 6 Nov 4 2020 libexec drwxr-xr-x. 2 root root 6 Nov 4 2020 sbin drwxr-xr-x. 5 root root 49 Mar 22 21:16 share drwxr-xr-x. 2 root root 6 Nov 4 2020 src [root@gogs1 git]# [root@gogs1 git]# vim /etc/profile [root@gogs1 git]# [root@gogs1 git]# source /etc/profile [root@gogs1 git]# [root@gogs1 git]# tail /etc/profile ... export PATH=$PATH:/usr/local/go/bin [root@gogs1 git]# [root@gogs1 git]# go version go version go1.16.4 linux/amd64 [root@gogs1 git]#
gogs をダウンロード、インストールする
[git@gogs1 ~]$ git clone --depth 1 https://github.com/gogs/gogs.git gogs Cloning into 'gogs'... remote: Enumerating objects: 2331, done. remote: Counting objects: 100% (2331/2331), done. remote: Compressing objects: 100% (2156/2156), done. remote: Total 2331 (delta 122), reused 1874 (delta 86), pack-reused 0 Receiving objects: 100% (2331/2331), 21.48 MiB | 3.50 MiB/s, done. Resolving deltas: 100% (122/122), done. [git@gogs1 ~]$ ls go1.16.4.linux-amd64.tar.gz gogs [git@gogs1 ~]$ cd gogs [git@gogs1 gogs]$ ls -l total 136 -rw-rw-r--. 1 git git 11265 May 29 16:45 CHANGELOG.md -rw-rw-r--. 1 git git 116 May 29 16:45 codecov.yml drwxrwxr-x. 8 git git 108 May 29 16:45 conf drwxrwxr-x. 4 git git 171 May 29 16:45 docker -rw-rw-r--. 1 git git 974 May 29 16:45 Dockerfile drwxrwxr-x. 5 git git 42 May 29 16:45 docs -rw-rw-r--. 1 git git 794 May 29 16:45 gogs.go -rw-rw-r--. 1 git git 3082 May 29 16:45 go.mod -rw-rw-r--. 1 git git 73365 May 29 16:45 go.sum drwxrwxr-x. 34 git git 4096 May 29 16:45 internal -rw-rw-r--. 1 git git 1054 May 29 16:45 LICENSE -rw-rw-r--. 1 git git 1624 May 29 16:45 Makefile drwxrwxr-x. 8 git git 79 May 29 16:45 public -rw-rw-r--. 1 git git 7034 May 29 16:45 README.md -rw-rw-r--. 1 git git 5372 May 29 16:45 README_ZH.md drwxrwxr-x. 7 git git 112 May 29 16:45 scripts -rw-rw-r--. 1 git git 332 May 29 16:45 SECURITY.md -rw-rw-r--. 1 git git 2139 May 29 16:45 Taskfile.yml drwxrwxr-x. 11 git git 158 May 29 16:45 templates [git@gogs1 gogs]$ [git@gogs1 gogs]$ go build -o gogs ... [git@gogs1 gogs]$
firewall を編集する
[git@gogs1 gogs]$ sudo firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [git@gogs1 gogs]$
ところで、インストール初期で cockpit 入っているのなんで?
firewall に穴あけするのは、 http
と 3000/tcp
で。
[git@gogs1 gogs]$ sudo firewall-cmd --zone=public --add-service=http --permanent success [git@gogs1 gogs]$ sudo firewall-cmd --zone=public --add-port=3000/tcp --permanent success [git@gogs1 gogs]$ sudo firewall-cmd --reload success [git@gogs1 gogs]$ [git@gogs1 gogs]$ sudo firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: enp0s3 sources: services: cockpit dhcpv6-client http ssh ports: 3000/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: [git@gogs1 gogs]$
test してみる
[git@gogs1 gogs]$ ./gogs web 2021/05/29 16:54:35 [ WARN] Custom config "/home/git/gogs/custom/conf/app.ini" not found. Ignore this warning if you're running for the first time 2021/05/29 16:54:35 [TRACE] Log mode: Console (Trace) 2021/05/29 16:54:35 [ INFO] Gogs 0.13.0+dev 2021/05/29 16:54:35 [TRACE] Work directory: /home/git/gogs 2021/05/29 16:54:35 [TRACE] Custom path: /home/git/gogs/custom 2021/05/29 16:54:35 [TRACE] Custom config: /home/git/gogs/custom/conf/app.ini 2021/05/29 16:54:35 [TRACE] Log path: /home/git/gogs/log 2021/05/29 16:54:35 [TRACE] Build time: 2021/05/29 16:54:35 [TRACE] Build commit: 2021/05/29 16:54:35 [ INFO] Run mode: Development 2021/05/29 16:54:35 [ INFO] Listen on http://0.0.0.0:3000 # ここで web ページにアクセス 2021/05/29 16:54:40 [TRACE] Session ID: 1d1fcd1eaa96e69b 2021/05/29 16:54:40 [TRACE] CSRF Token: PdxXE2Kvrtv2lgHMm1WGO3wr_hc6MTYyMjI3NDg4MDQyMjgyNzI5Ng 2021/05/29 16:54:40 [TRACE] Session ID: 1d1fcd1eaa96e69b 2021/05/29 16:54:40 [TRACE] CSRF Token: 8VvfvemJmKERprrj75MeC3J6eFA6MTYyMjI3NDg4MDQ1MzQ3NzEyNA 2021/05/29 16:54:40 [TRACE] Template: install
一旦ページが見れれば Ctrl-C
で止める
タグをつける(多分任意)
[git@gogs1 gogs]$ go build -tags "pam cert" -o gogs go: downloading github.com/msteinert/pam v0.0.0-20190215180659-f29b9f28d6f9 # github.com/msteinert/pam ../go/pkg/mod/github.com/msteinert/pam@v0.0.0-20190215180659-f29b9f28d6f9/transaction.go:4:10: fatal error: security/pam_appl.h: No such file or directory //#include <security/pam_appl.h> ^~~~~~~~~~~~~~~~~~~~~ compilation terminated. [git@gogs1 gogs]$
エラーが出た
このページにあるようにパッケージを入れてみる
[git@gogs1 gogs]$ sudo yum install libpam0g-dev Last metadata expiration check: 1:34:13 ago on Sat 29 May 2021 03:32:31 PM JST. No match for argument: libpam0g-dev Error: Unable to find a match: libpam0g-dev [git@gogs1 gogs]$
ないんだが? 無視しよう
もう GUI で設定を入れよう
[git@gogs1 gogs]$ ./gogs web 2021/05/29 17:20:40 [ WARN] Custom config "/home/git/gogs/custom/conf/app.ini" not found. Ignore this warning if you're running for the first time 2021/05/29 17:20:40 [TRACE] Log mode: Console (Trace) 2021/05/29 17:20:40 [ INFO] Gogs 0.13.0+dev 2021/05/29 17:20:40 [TRACE] Work directory: /home/git/gogs 2021/05/29 17:20:40 [TRACE] Custom path: /home/git/gogs/custom 2021/05/29 17:20:40 [TRACE] Custom config: /home/git/gogs/custom/conf/app.ini 2021/05/29 17:20:40 [TRACE] Log path: /home/git/gogs/log 2021/05/29 17:20:40 [TRACE] Build time: 2021-05-29 08:15:35 UTC 2021/05/29 17:20:40 [TRACE] Build commit: ba8be9489e6d959fa9005fc7d38bf62562580d23 2021/05/29 17:20:40 [ INFO] Run mode: Development 2021/05/29 17:20:41 [ INFO] Listen on http://0.0.0.0:3000
key | value |
---|---|
database | MySQL |
host | 127.0.0.1:3306 |
user | gogs |
password | PASSWORD |
database | gogs |
ssl mode | Disable |
key | value |
---|---|
application name | Gogs |
repo root path | /home/git/gogs-repositories |
exec user | git |
domain | localhost |
ssh port | 22 |
http port | 3000 |
application url | http://localhost:3000/ |
log path | /home/git/gogs/log |
click Gogs をインストール
サインアップ
新規アカウントを作成をクリック
サインイン
自動でサインイン画面になる
ダッシュボード
サインインしたらダッシュボードに行く 既に1つ適当にリポジトリを作ったのでこんな感じになっている
しかし、 issue -> 課題 pull request -> プルリクエスト
てなっているの、ちょっとダサいw
サービスとして動かしたいんだが?
ref
一旦今動いているのを Ctrl-C
で止める
[root@gogs1 system]# cd /usr/lib/systemd/system [root@gogs1 system]# [root@gogs1 system]# vim gogs.service [root@gogs1 system]# cat gogs.service [Unit] Description=Gogs After=syslog.target After=network.target After=mariadb.service [Service] Type=simple User=git Group=git WorkingDirectory=/home/git/gogs ExecStart=/home/git/gogs/gogs web Restart=always Environment=USER=git HOME=/home/git [Install] WantedBy=multi-user.target [root@gogs1 system]#
reload daemon
[root@gogs1 system]# systemctl daemon-reload [root@gogs1 system]#
start and enable gogs
[root@gogs1 system]# systemctl start gogs.service [root@gogs1 system]# systemctl status gogs.service ● gogs.service - Gogs Loaded: loaded (/usr/lib/systemd/system/gogs.service; disabled; vendor pre> Active: active (running) since Sat 2021-05-29 18:04:54 JST; 2s ago Main PID: 40289 (gogs) Tasks: 6 (limit: 12415) Memory: 41.4M CGroup: /system.slice/gogs.service └─40289 /home/git/gogs/gogs web May 29 18:04:54 gogs1.tk.net systemd[1]: Started Gogs. May 29 18:04:54 gogs1.tk.net gogs[40289]: 2021/05/29 18:04:54 [TRACE] Log mod> [root@gogs1 system]# [root@gogs1 system]# systemctl enable gogs.service Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /usr/lib/systemd/system/gogs.service. [root@gogs1 system]#
これでひとまず終わり