Cách cài đặt dịch vụ Gogs Go Git trên CentOS 7

theanh

Administrator
Nhân viên
Gogs là dịch vụ Git miễn phí và mã nguồn mở được viết bằng ngôn ngữ Go. Đây là dịch vụ git tự lưu trữ, không gây khó khăn cho phép bạn tạo và chạy máy chủ Git của riêng mình trên máy chủ phần cứng tối thiểu. Giao diện người dùng web của Gogs rất giống với GitHub và cung cấp hỗ trợ cho cơ sở dữ liệu MySQL, PostgreSQL và SQLite.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn từng bước cách cài đặt và cấu hình dịch vụ Git của riêng bạn bằng Gogs trên máy chủ CentOS 7. Hướng dẫn này sẽ đề cập đến các chủ đề bao gồm, cài đặt Go trên hệ thống CentOS 7, cài đặt PostgreSQL và cài đặt/cấu hình máy chủ web Nginx làm proxy ngược cho ứng dụng Go.
  • Máy chủ CentOS 7
  • Quyền root
  1. Cài đặt EPEL Repository
  2. Cài đặt và cấu hình cơ sở dữ liệu PostgreSQL
  3. Cài đặt Go và Git
  4. Cài đặt Gogs Go Git Service
  5. Cấu hình Gogs Go Git Service
  6. Chạy Gogs dưới dạng dịch vụ trên CentOS 7
  7. Cài đặt và cấu hình Nginx làm proxy ngược cho Gogs
  8. Kiểm tra thiết lập

Bước 1 - Cài đặt EPEL Repository​

Bước đầu tiên chúng ta sẽ thực hiện trong hướng dẫn này là cài đặt EPEL repository. Cài đặt kho EPEL bằng lệnh bên dưới.
Mã:
sudo yum -y install epel-release
Kho EPEL đã được thêm vào máy chủ CentOS 7.

Bước 2 - Cài đặt và cấu hình cơ sở dữ liệu PostgreSQL​

Gogs hỗ trợ các hệ thống cơ sở dữ liệu MySQL, PostgreSQL, SQLite3, MSSQL và TiDB. Trong hướng dẫn này, chúng ta sẽ sử dụng PostgreSQL làm cơ sở dữ liệu cho các cài đặt Gogs của mình.

Cài đặt cơ sở dữ liệu PostgreSQL bằng lệnh yum bên dưới.
Mã:
sudo yum -y install postgresql-server postgresql-contrib
Sau khi cài đặt hoàn tất, chúng ta cần khởi tạo cơ sở dữ liệu và cấu hình PostgreSQL.

Chạy lệnh bên dưới.
Mã:
sudo postgresql-setup initdb
Tiếp theo, chúng ta sẽ cấu hình PostgreSQL để chạy dưới địa chỉ IP cục bộ '127.0.0.1' và cho phép tất cả người dùng trên địa chỉ máy chủ cục bộ đăng nhập bằng xác thực md5.

Đăng nhập với tư cách là người dùng Postgres.
Mã:
su - postgres
Bây giờ hãy đến thư mục 'data' và chỉnh sửa tệp 'postgresql.conf' bằng vim.
Mã:
cd data/
vim postgresql.conf
Bỏ chú thích dòng 'listen_addresses' và thay đổi giá trị thành '127.0.0.1'.
Mã:
listen_addresses = '127.0.0.1'
Lưu và thoát.

Chỉnh sửa 'pg_hba.conf' để cấu hình xác thực.
Mã:
vim pg_hba.conf
Trên cấu hình máy chủ cục bộ '127.0.0.1/32', hãy thay đổi phương thức xác thực thành 'md5' như bên dưới.
Mã:
host all all 127.0.0.1/32 md5
Lưu và thoát.

Bây giờ hãy khởi động dịch vụ PostgreSQL và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
sudo systemctl start postgresql
sudo systemctl enable postgresql


Cơ sở dữ liệu PostgreSQL đã được cài đặt trên máy chủ CentOS 7 - hãy kiểm tra bằng lệnh netstat.
Mã:
netstat -plntu
Và hãy đảm bảo rằng bạn thấy PostgreSQL đang chạy trên địa chỉ IP cục bộ '127.0.0.1' với cổng 5432.



Tiếp theo, chúng ta sẽ tạo một cơ sở dữ liệu mới để cài đặt Gogs. Chúng tôi sẽ tạo một cơ sở dữ liệu mới có tên 'gogs_production' với người dùng 'git'.

Đăng nhập với tư cách là người dùng Postgres và truy cập shell psql.
Mã:
su - postgres
psql
Tạo người dùng 'git' mới bằng lệnh bên dưới.
Mã:
CREATE USER git CREATEDB;
\password git
Bây giờ hãy tạo cơ sở dữ liệu 'gogs_production' và đặt chủ sở hữu là người dùng 'git'.
Mã:
CREATE DATABASE gogs_production OWNER git;
exit
Cơ sở dữ liệu PostgreSQL để cài đặt Gogs đã được tạo.


Bước 3 - Cài đặt Go và Git​

Cài đặt Git từ kho lưu trữ bằng lệnh yum bên dưới.
Mã:
sudo yum -y install git
Bây giờ hãy thêm người dùng mới 'git' vào hệ thống.
Mã:
useradd -m -s /bin/bash git
passwd git
Đăng nhập vào người dùng 'git' và tạo thư mục 'local' mới.
Mã:
su - git
mkdir -p /home/git/local
Đi đến thư mục 'local' và tải xuống phiên bản Go mới nhất bằng lệnh wget.
Mã:
cd ~/local
wget https://dl.google.com/go/go1.9.2.linux-amd64.tar.gz


Giải nén tệp nén go, sau đó xóa tệp lưu trữ.
Mã:
tar -xf go1.9.2.linux-amd64.tar.gz
rm -f go1.9.2.linux-amd64.tar.gz
Các tệp nhị phân 'Go' đã được tải xuống trong thư mục '~/local/go'. Bây giờ chúng ta cần thiết lập môi trường, vì vậy chúng ta cần xác định thư mục 'GOROOT' và 'GOPATH' để chạy lệnh go trong hệ thống với tư cách là người dùng 'git'.

Chạy các lệnh bên dưới.
Mã:
cd ~/
echo 'export GOROOT=$HOME/local/go' >> $HOME/.bashrc
echo 'export GOPATH=$HOME/go' >> $HOME/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> $HOME/.bashrc
Và tải lại bash bằng cách chạy lệnh 'source ~/.bashrc' như bên dưới.
Mã:
source ~/.bashrc
Đảm bảo bạn đang sử dụng bash làm shell mặc định của mình.



Bây giờ hãy chạy lệnh go để kiểm tra phiên bản.
Mã:
phiên bản go
Và đảm bảo bạn nhận được kết quả như hiển thị bên dưới.



Go hiện đã được cài đặt trên hệ thống dưới người dùng 'git'.

Bước 4 - Cài đặt Dịch vụ Gogs Go Git​

Đăng nhập với tư cách là người dùng 'git' và tải xuống 'Gogs' từ GitHub bằng lệnh go như bên dưới.
Mã:
su - git
go get -u github.com/gogits/gogs
Lệnh này sẽ tải xuống toàn bộ mã nguồn Gogs vào thư mục 'GOPATH/src'.

Đi đến thư mục '$GOPATH/src/github.com/gogits/gogs' và xây dựng gogs bằng các lệnh bên dưới.
Mã:
cd $GOPATH/src/github.com/gogits/gogs
go build
Và đảm bảo bạn không gặp lỗi nào.

Bây giờ hãy chạy Gogs Go Git Service bằng lệnh bên dưới.
Mã:
./gogs web
Lệnh này sẽ chạy Gogs trên địa chỉ IP công khai với cổng mặc định là 3000.



Mở trình duyệt web của bạn và nhập địa chỉ IP máy chủ của bạn với cổng 3000.

http://192.168.33.10:3000/

Và bạn sẽ nhận được kết quả như hiển thị bên dưới.



Gogs hiện đã được cài đặt trên hệ thống CentOS 7. Bây giờ quay lại terminal của bạn và nhấn 'Ctrl + c' để thoát.

Bước 5 - Cấu hình Gogs Go Git Service​

Trong bước này, chúng ta sẽ tạo cấu hình tùy chỉnh cho Gogs.

Đi đến thư mục cài đặt gogs và tạo thư mục 'custom/conf' mới.
Mã:
cd $GOPATH/src/github.com/gogits/gogs
mkdir -p custom/conf/
Sao chép cấu hình mặc định vào thư mục tùy chỉnh và chỉnh sửa bằng vim.
Mã:
cp conf/app.ini custom/conf/app.ini
vim custom/conf/app.ini
Trong phần '[server]', hãy đổi 'HOST_ADDR' của máy chủ thành '127.0.0.1'.
Mã:
[server]
 GIAO THỨC = http
 DOMAIN = localhost
 ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
 HTTP_ADDR = 127.0.0.1
 HTTP_PORT = 3000
Trong phần '[database]', hãy thay đổi mọi thứ bằng thông tin cơ sở dữ liệu của riêng bạn.
Mã:
[database]
 DB_TYPE = postgres
 HOST = 127.0.0.1:5432
 NAME = gogs_production
 USER = git
 PASSWD = aqwe123@
Lưu và thoát.

Bây giờ hãy xác minh cấu hình bằng cách chạy lệnh sau.
Mã:
./gogs web
Và đảm bảo bạn nhận được kết quả như bên dưới.



Gogs là hiện đang chạy với cấu hình tùy chỉnh của chúng tôi và dưới địa chỉ IP cục bộ '127.0.0.1' với cổng 3000.

Bước 6 - Chạy Gogs dưới dạng dịch vụ trên CentOS 7​

Trong bước này, chúng tôi sẽ cấu hình Gogs dưới dạng dịch vụ trên hệ thống CentOS 7. Chúng tôi sẽ tạo cấu hình tệp dịch vụ mới 'gogs.service' trong thư mục '/etc/systemd/system'.

Đi đến thư mục '/etc/systemd/system' và tạo tệp dịch vụ mới 'gogs.service' bằng trình soạn thảo vim.
Mã:
cd /etc/systemd/system
vim gogs.service
Dán cấu hình dịch vụ gogs sau vào đó.
Mã:
[Unit]
 Description=Gogs
 After=syslog.target
 After=network.target
 After=mariadb.service mysqld.service postgresql.service memcached.service redis.service
 
 [Service]
 # Sửa đổi hai giá trị này và bỏ chú thích nếu bạn có
 # kho lưu trữ có nhiều tệp và gặp lỗi HTTP 500 vì
 # trong số đó
 ###
 #LimitMEMLOCK=infinity
 #LimitNOFILE=65535
 Type=simple
 User=git
 Group=git
 WorkingDirectory=/home/git/go/src/github.com/gogits/gogs
 ExecStart=/home/git/go/src/github.com/gogits/gogs/gogs web
 Restart=always
 Environment=USER=git HOME=/home/git
 
 [Install]
 WantedBy=multi-user.target
Lưu và thoát.

Bây giờ hãy tải lại các dịch vụ systemd.
Mã:
systemctl daemon-reload
Khởi động dịch vụ gogs và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống bằng lệnh systemctl.
Mã:
systemctl start gogs
systemctl enable gogs
Gogs hiện đang chạy dưới dạng dịch vụ trên hệ thống CentOS 7.



Kiểm tra bằng các lệnh sau.
Mã:
netstat -plntu
systemctl status gogs
Và bạn sẽ nhận được kết quả như hiển thị bên dưới.


Bước 7 - Cài đặt và cấu hình Nginx làm Proxy ngược cho Gogs​

Trong bước này, chúng ta sẽ cài đặt và cấu hình Nginx làm proxy ngược cho Gogs. Chúng tôi sẽ cài đặt các gói Nginx từ kho lưu trữ EPEL.

Chạy lệnh yum bên dưới để cài đặt Nginx.
Mã:
yum -y install nginx
Sau khi cài đặt hoàn tất, chúng ta cần tạo cấu hình máy chủ ảo mới cho Gogs.

Vì vậy, hãy đến thư mục cấu hình '/etc/nginx' và tạo một tệp máy chủ ảo mới 'gogs' trong thư mục 'conf.d'.
Mã:
cd /etc/nginx/
vim conf.d/gogs.conf
Dán cấu hình sau vào đó.
Mã:
server {
 listen 80;
 server_name git.hakase-labs.co;
 
 location / {
 proxy_pass http://127.0.0.1:3000;
 }
 }
Lưu và thoát.

Tiếp theo, chúng ta cần kiểm tra cấu hình nginx và đảm bảo không có lỗi
Mã:
nginx -t
Khởi động dịch vụ Nginx và cho phép nó khởi chạy khi khởi động hệ thống.
Mã:
systemctl restart nginx
systemctl enable nginx
Máy chủ web Nginx hiện đã được cài đặt - hãy kiểm tra bằng lệnh netstat bên dưới.
Mã:
netstat -plntu
và bạn sẽ thấy cổng HTTP 80 trong danh sách.


Bước 8 - Kiểm tra​

Mở trình duyệt web và nhập URL cài đặt Gogs của bạn vào thanh địa chỉ.

http://git.hakase-labs.co/

Trên trang đầu tiên, hãy nhập tất cả Thông tin cơ sở dữ liệu PostgreSQL.



Bây giờ hãy cuộn xuống trang dưới cùng - nhấp vào menu thả xuống 'Cài đặt tài khoản quản trị'.

Nhập tên người dùng quản trị, mật khẩu và email của bạn.



Sau đó, nhấp vào nút 'Cài đặt Gogs'.

Và bạn sẽ được chuyển hướng đến Bảng điều khiển người dùng Gogs như hiển thị bên dưới.



Dưới đây là 'Bảng điều khiển quản trị' của Gogs.



Gogs hiện đã được cài đặt với cơ sở dữ liệu PostgreSQL và máy chủ web Nginx trên máy chủ CentOS 7.

Tham khảo​

https://gogs.io/docs/installation
 
Back
Bên trên