GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS8にHTTPSを使用してGiteaコードホスティングプラットフォームをインストールする方法

Giteaは、Goで記述されたコードホスティングWebアプリケーションです。その名前が示すように、GitlabやGithubと同様に、人気のあるソース管理プログラムGitで使用するように設計されています。このガイドでは、NginxHTTPSリバースプロキシを使用したCentOS8へのGiteaのインストールについて説明します。

要件
  • root権限を持つCentOS8システム。
  • サーバーを指す登録済みドメイン名。
  • $EDITOR環境変数はお好みのテキストエディタに設定する必要があります。
  • 電子メール通知用のSMTPサーバーへのアクセス(オプション)。

(サブ)ドメインがAレコードでサーバーのIPv4アドレスを指していることを確認してください。必要に応じて、サーバーのIPv6アドレスを指すAAAAレコードを作成します。

注: このガイドは、SELinuxが無効または許可に設定されていることを前提としています。

ステップ1:システムの準備

利用可能なアップデートをインストールして再起動することから始めます:

dnf update -y
reboot

このセットアップには、いくつかのソフトウェアコンポーネントが必要です。

  • Git、Giteaの依存関係。
  • Giteaにはデータベースが必要なためのPostgreSQL。
  • リバースプロキシとして使用されるNginx。
  • Sudo、postgresシステムユーザーとしてコマンドを実行します。
  • Wget
  • Certbot、Let'sEncryptSSL証明書を取得するためのユーティリティ。 Certbotは、CentOSソフトウェアリポジトリでは利用できないため、個別にインストールされます。

次のようにインストールします:

dnf install -y git postgresql postgresql-server nginx sudo wget

Certbot-autoは、certbotのインストールを管理するスクリプトです。ダウンロード:

wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto

正しい権限が設定されていることを確認してください:

chmod 0755 /usr/local/bin/certbot-auto

以下を実行してcertbotをインストールします。パッケージマネージャーから、依存関係のインストールを確認するように求められます。「y」と答えてください。

certbot-auto --install-only

次に、Giteaを実行するユーザーを作成します:

useradd --system --shell /bin/bash --create-home --home-dir /home/gitea gitea

次に、Giteaのディレクトリ構造を作成します:

mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea

そして、所有権と権限を次のように設定します。

chown -R gitea:gitea /var/lib/gitea
chown -R gitea:gitea /var/run/gitea
chown -R root:gitea /etc/gitea
chmod -R 750 /var/lib/gitea
chmod 770 /etc/gitea

/ etc / giteaの権限は一時的なものであり、Webインストーラーの実行後に強化されます。

ポート80および443へのトラフィックを永続的に有効にします:

firewall-cmd --add-port 80/tcp --add-port 443/tcp --permanent
firewall-cmd --reload

ポート3000へのアクセスは、代わりにUnixソケットを使用するようにgiteaを構成するため、初期設定に一時的にのみ必要です。

firewall-cmd --add-port 3000/tcp

ステップ2:データベースのセットアップ

Postgresを初期化する:

postgresql-setup --initdb --unit postgresql

有効になっていて実行されていることを確認してください:

systemctl enable --now postgresql.service

Postgresにログインします:

sudo -u postgres psql

次に、Giteaが使用するユーザーロールとデータベースを作成します。

postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password';
postgres=# CREATE DATABASE gitea;
postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;
postgres=# \q

Postgresクライアント認証構成ファイルを開きます:

$EDITOR /var/lib/pgsql/data/pg_hba.conf

直後に次の行を追加します #IPv4ローカル接続:

# IPv4 local connections:
host	gitea		gitea		127.0.0.1/32		md5

ファイルを保存してPostgresを再起動します:

systemctl restart postgresql.service

ステップ3:Giteaのインストール

GiteaのダウンロードページからGiteaのlinux-amd64バイナリバージョンをダウンロードします。例:

wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea

ダウンロードしたバイナリに正しい権限を設定します:

chmod 755 /usr/local/bin/gitea

次に、systemdユニットファイルを作成します:

$EDITOR /etc/systemd/system/gitea.service

そして、次のように入力します:

[Unit]
Description=Gitea (Git with a cup of tea)
After=syslog.target
After=network.target
Requires=postgresql.service
[Service]
Type=simple
User=gitea
Group=gitea
WorkingDirectory=/var/lib/gitea/
RuntimeDirectory=gitea
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target

新しいユニットがロードされていることを確認してください:

systemctl daemon-reload

次に、systemdに起動時にGiteaを起動するように指示します:

systemctl enable gitea.service

ステップ4:Giteaの設定

初期構成には、付属のWebインストーラーを使用します。まず、Giteaを起動します:

systemctl start gitea.service

次に、http:// your_domain:3000 / installに移動し、次のように必要なパラメーターを入力します。

  • データベースタイプ:PostgreSQL
  • ホスト:127.0.0.1:5432
  • ユーザー名:gitea
  • パスワード:Postgresロールの作成時に選択したパスワードを入力します。
  • データベース名:gitea
  • SSL:無効
  • サイトタイトル:選択したタイトル。
  • リポジトリルートパス:/ var / lib / gitea / data / repository
  • Git LFSルートパス:/ var / lib / gitea / data / lfs
  • ユーザー名として実行:gitea
  • SSHサーバードメイン:your_domain
  • SSHサーバーポート:22
  • Gitea HTTPリッスンポスト:3000
  • GiteaベースURL:https:// your_domain /
  • ログパス:/ var / lib / gitea / log

メールと残りの設定を適切と思われるものとして構成し、[Giteaのインストール]をクリックします。誤ったURLにリダイレクトされます。 NginxまたはHTTPSをまだ構成していないため、これは正常です。パフォーマンス上の理由から、デフォルトのTCPポートではなくUNIXソケットでリッスンするようにGiteaを構成します。

続行する前にGiteaを停止してください:

systemctl stop gitea.service

以下に示すように、/ etc/giteaの権限を強化します。これにより、giteaグループに属していない人が、データベースのクレデンシャルなどの機密情報を含むapp.iniを読み取ることができなくなります。

chmod 750 /etc/gitea
chown root:gitea /etc/gitea/app.ini
chmod 640 /etc/gitea/app.ini

構成ファイルを開きます:

$EDITOR /etc/gitea/app.ini

サーバーセクションから次の行を削除します。

HTTP_PORT = 3000

そして、サーバーセクションに次の行を追加します。

HTTP_ADDR        = /run/gitea/gitea.sock
PROTOCOL         = unix
UNIX_SOCKET_PERMISSION = 666

ステップ5:リバースプロキシの設定

Nginxが実行されている場合は停止し、certbotがポート80でリッスンできるようにします:

systemctl stop nginx.service

次のコマンドを使用して、ドメインの証明書を取得します。

certbot-auto certonly --standalone --agree-tos -m [email protected] -d your_domain

Let's Encryptは、証明書を発行する前にドメインの所有権を確認します。証明書、チェーン、秘密鍵は/ etc /letsencrypt / live /your_domain/に保存されます。

これで、Nginxを構成できます。新しい構成ファイルを作成します:

$EDITOR /etc/nginx/conf.d/gitea.conf

そして、次のサーバーブロックを入力します。

server {
        listen 80;
        listen [::]:80;
        server_name your_domain;
        return 301 https://$server_name$request_uri;
	access_log /var/log/nginx/gitea-proxy_access.log;
	error_log /var/log/nginx/gitea-proxy_error.log;
}
server {
        listen 443 ssl;
        listen [::]:443 ssl;
        server_name your_domain;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
        location / {
                proxy_pass http://unix:/var/run/gitea/gitea.sock;
	}
	access_log /var/log/nginx/gitea-proxy_access.log;
	error_log /var/log/nginx/gitea-proxy_error.log;
}

最初のサーバーブロックは、すべてのHTTPリクエストをHTTPSにリダイレクトするためだけに機能します。 2番目のブロックはHTTPS接続をリッスンし、Giteaがリッスンするように構成したUnixソケットにプロキシします。

上記の構成を保存したら、構文エラーがないか確認し、必要に応じて構成を編集します。

nginx -t

最後に、NginxとGiteaを起動します:

systemctl start nginx.service gitea.service

これで、Giteaインスタンスが正常に実行されているはずです。 https:// your_domain

でアクセスします オプションの手順 ログ設定

デフォルトでは、Giteaは重大度レベルInfo以上のメッセージをログに記録します。ほとんどの場合、これを警告またはエラーに変更することをお勧めします。これを行うには、/ etc / gitea / app.iniを開き、[log]セクションのLEVELパラメーターをtrace、debug、info、warn、error、critical、fatal、noneのいずれかに変更します。たとえば、重大度が警告以上のメッセージをログに記録するには、次を使用します。

[log]
MODE = file
LEVEL = warn
ROOT_PATH = /var/lib/gitea/log

変更を有効にするためにGiteaを再起動します:

systemctl restart gitea.service
個別のSSHサーバー

代わりに、Giteaは独自のSSHサーバーを使用できます。有効にするには、[サーバー]構成セクションに次の行を追加します。

START_SSH_SERVER = true

また、SSHポートを1024を超える任意の数に変更します。例:

SSH_PORT = 2222

次に、Giteaを再起動して変更を適用し、選択したポートへのトラフィックを有効にします。

firewall-cmd --add-port 2222/tcp --permanent
firewall-cmd --reload

Cent OS
  1. CentOS 8のインストール方法(スクリーンショット付き)

  2. SCLを使用してCentOS7にPython3をインストールする方法

  3. Debian10にHTTPSを使用してGiteaコードホスティングプラットフォームをインストールする方法

  1. CentOS8にGiteaをインストールする方法

  2. CentOS7にNginxを使用してphpMyAdminをインストールする方法

  3. CentOS7にVisualStudioCodeをインストールする方法

  1. CentOS8にVisualStudioCodeをインストールする方法

  2. CentOS8でElasticsearchを使用してGraylogをインストールする方法

  3. CentOS7でHTTPSLetsencryptを使用してApacheSubversionをセットアップする方法