Gitea là một ứng dụng web lưu trữ mã được viết bằng Go. Như tên gọi của nó, nó được thiết kế để sử dụng với chương trình kiểm soát nguồn phổ biến Git, tương tự như Gitlab và Github. Hướng dẫn này sẽ giải thích cách cài đặt Gitea trên CentOS 8 với proxy ngược Nginx HTTPS.
LƯU Ý: Hướng dẫn này giả định SELinux được đặt thành vô hiệu hóa hoặc cho phép.
Đối với thiết lập này, cần có một số thành phần phần mềm:
Certbot-auto là một tập lệnh quản lý quá trình cài đặt certbot. Tải xuống:
Đảm bảo thiết lập đúng quyền:
Chạy lệnh sau để cài đặt certbot. Trình quản lý gói sẽ nhắc bạn xác nhận cài đặt các phụ thuộc, hãy trả lời 'y'.
Tiếp theo, tạo người dùng để chạy Gitea:
Sau đó, tạo cấu trúc thư mục cho Gitea:
Và đặt quyền sở hữu và quyền như sau:
Quyền trên /etc/gitea là tạm thời và sẽ được thắt chặt sau khi chạy trình cài đặt web.
Bật lưu lượng truy cập đến các cổng 80 và 443 vĩnh viễn:
Chỉ yêu cầu truy cập vào cổng 3000 tạm thời cho quá trình thiết lập ban đầu vì chúng tôi sẽ cấu hình gitea để sử dụng ổ cắm Unix thay thế.
Đảm bảo rằng nó được bật và đang chạy:
Đăng nhập vào Postgres:
Sau đó tạo vai trò người dùng và cơ sở dữ liệu để Gitea sử dụng:
Mở tệp cấu hình xác thực máy khách Postgres:
Thêm dòng sau ngay sau # IPv4 local connections :
Lưu tệp và khởi động lại Postgres:
Thiết lập quyền chính xác cho tệp nhị phân đã tải xuống:
Tiếp theo, tạo tệp đơn vị systemd:
Và nhập lệnh sau:
Đảm bảo rằng đơn vị mới đã được tải:
Sau đó hướng dẫn systemd khởi động Gitea khi khởi động:
Sau đó, điều hướng đến http://your_domain:3000/install và điền vào các tham số bắt buộc như sau:
Dừng Gitea trước khi tiếp tục:
Thắt chặt quyền đối với /etc/gitea như được hiển thị bên dưới. Điều này ngăn không cho bất kỳ ai không thuộc nhóm gitea đọc app.ini , tệp này chứa thông tin nhạy cảm, bao gồm thông tin xác thực cơ sở dữ liệu.
Mở tệp cấu hình của nó:
Xóa dòng sau khỏi phần server:
Và thêm các dòng sau vào phần server:
Sử dụng lệnh sau để lấy chứng chỉ cho tên miền của bạn:
Let's Encrypt sẽ xác minh quyền sở hữu tên miền trước khi cấp chứng chỉ. Chứng chỉ, chuỗi và khóa riêng của bạn sẽ được lưu trữ trong /etc/letsencrypt/live/your_domain/ .
Bây giờ chúng ta có thể cấu hình Nginx. Tạo một tệp cấu hình mới:
Và nhập các khối máy chủ sau:
Khối máy chủ đầu tiên chỉ phục vụ mục đích chuyển hướng tất cả các yêu cầu HTTP sang HTTPS. Khối thứ hai lắng nghe các kết nối HTTPS và chuyển tiếp chúng đến socket Unix mà chúng tôi đã định cấu hình Gitea để lắng nghe.
Sau khi bạn đã lưu cấu hình trên, hãy kiểm tra mọi lỗi cú pháp và chỉnh sửa cấu hình của bạn nếu cần:
Cuối cùng, hãy khởi động Nginx và Gitea:
Hiện tại, phiên bản Gitea của bạn sẽ chạy thành công. Truy cập tại https://your_domain
Khởi động lại Gitea để các thay đổi có hiệu lực:
Và thay đổi cổng SSH thành bất kỳ số nào lớn hơn 1024, ví dụ:
Sau đó khởi động lại Gitea để áp dụng các thay đổi và bật lưu lượng truy cập đến cổng đã chọn:
Yêu cầu
- Hệ thống CentOS 8 mà bạn có quyền root.
- Tên miền đã đăng ký trỏ đến máy chủ của bạn.
- Biến môi trường $EDITOR phải được đặt thành trình soạn thảo văn bản ưa thích của bạn.
- Truy cập vào máy chủ SMTP để nhận thông báo qua email (tùy chọn).
LƯU Ý: Hướng dẫn này giả định SELinux được đặt thành vô hiệu hóa hoặc cho phép.
Bước 1: Chuẩn bị hệ thống
Bắt đầu bằng cách cài đặt bất kỳ bản cập nhật nào có sẵn và khởi động lại:
Mã:
dnf update -yreboot
- Git, một phần phụ thuộc của Gitea.
- PostgreSQL, vì Gitea yêu cầu một cơ sở dữ liệu.
- Nginx, sẽ được sử dụng như một proxy ngược.
- Sudo, để chạy các lệnh với tư cách là người dùng hệ thống postgres.
- Wget
- Certbot, một tiện ích để lấy chứng chỉ SSL Let's Encrypt. Certbot sẽ được cài đặt riêng vì nó không có sẵn trong kho phần mềm CentOS.
Mã:
dnf install -y git postgresql postgresql-server nginx sudo wget
Mã:
wget https://dl.eff.org/certbot-auto -O /usr/local/bin/certbot-auto
Mã:
chmod 0755 /usr/local/bin/certbot-auto
Mã:
certbot-auto --install-only
Mã:
useradd --system --shell /bin/bash --create-home --home-dir /home/gitea gitea
Mã:
mkdir -p /var/lib/gitea/{data,log} /etc/gitea /run/gitea
Mã:
chown -R gitea:gitea /var/lib/giteachown -R gitea:gitea /var/run/giteachown -R root:gitea /etc/giteachmod -R 750 /var/lib/giteachmod 770 /etc/gitea
Bật lưu lượng truy cập đến các cổng 80 và 443 vĩnh viễn:
Mã:
firewall-cmd --add-port 80/tcp --add-port 443/tcp --permanentfirewall-cmd --reload
Mã:
firewall-cmd --add-port 3000/tcp
Bước 2: Thiết lập cơ sở dữ liệu
Khởi tạo Postgres:
Mã:
postgresql-setup --initdb --unit postgresql
Mã:
systemctl enable --now postgresql.service
Mã:
sudo -u postgres psql
Mã:
postgres=# CREATE ROLE gitea LOGIN ENCRYPTED PASSWORD 'your_password';postgres=# CREATE DATABASE gitea;postgres=# GRANT ALL PRIVILEGES ON DATABASE gitea TO gitea;postgres=# \q
Mã:
$EDITOR /var/lib/pgsql/data/pg_hba.conf
Mã:
# IPv4 local connections:host gitea gitea 127.0.0.1/32 md5
Mã:
systemctl restart postgresql.service
Bước 3: Cài đặt Gitea
Tải xuống phiên bản nhị phân linux-amd64 của Gitea từ trang tải xuống của Gitea. Ví dụ:
Mã:
wget https://dl.gitea.io/gitea/master/gitea-master-linux-amd64 -O /usr/local/bin/gitea
Mã:
chmod 755 /usr/local/bin/gitea
Mã:
$EDITOR /etc/systemd/system/gitea.service
Mã:
[Unit]Description=Gitea (Git với một tách trà)After=syslog.targetAfter=network.targetRequires=postgresql.service[Service]Type=simpleUser=giteaGroup=giteaWorkingDirectory=/var/lib/gitea/RuntimeDirectory=giteaExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.iniRestart=alwaysEnvironment=USER=gitea HOME=/home/gitea GITEA_WORK_DIR=/var/lib/gitea[Install]WantedBy=multi-user.target
Mã:
systemctl daemon-reload
Mã:
systemctl enable gitea.service
Bước 4: Cấu hình Gitea
Đối với cấu hình ban đầu, chúng tôi sẽ sử dụng trình cài đặt web đi kèm. Trước tiên, hãy khởi động Gitea:
Mã:
systemctl start gitea.service
- Loại cơ sở dữ liệu: PostgreSQL
- Máy chủ: 127.0.0.1:5432
- Tên người dùng: gitea
- Mật khẩu: Nhập mật khẩu bạn đã chọn trong quá trình tạo vai trò Postgres.
- Tên cơ sở dữ liệu: gitea
- SSL: Tắt
- Tiêu đề trang web: Tiêu đề bạn chọn.
- Đường dẫn gốc của kho lưu trữ: /var/lib/gitea/data/repositories
- Đường dẫn gốc của Git LFS: /var/lib/gitea/data/lfs
- Chạy với tư cách là tên người dùng: gitea
- Tên miền máy chủ SSH: your_domain
- SSH Cổng máy chủ: 22
- Gitea HTTP Listen Post: 3000
- URL cơ sở Gitea: https://your_domain/
- Đường dẫn nhật ký: /var/lib/gitea/log
Dừng Gitea trước khi tiếp tục:
Mã:
systemctl stop gitea.service
Mã:
chmod 750 /etc/giteachown root:gitea /etc/gitea/app.inichmod 640 /etc/gitea/app.ini
Mã:
$EDITOR /etc/gitea/app.ini
Mã:
HTTP_PORT = 3000
Mã:
HTTP_ADDR = /run/gitea/gitea.sockPROTOCOL = unixUNIX_SOCKET_PERMISSION = 666
Bước 5: Thiết lập Proxy ngược
Dừng Nginx nếu đang chạy, để cho phép certbot lắng nghe trên cổng 80:
Mã:
systemctl stop nginx.service
Mã:
certbot-auto certonly --standalone --agree-tos -m [emailprotected] -d your_domain
Bây giờ chúng ta có thể cấu hình Nginx. Tạo một tệp cấu hình mới:
Mã:
$EDITOR /etc/nginx/conf.d/gitea.conf
Mã:
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;}
Sau khi bạn đã lưu cấu hình trên, hãy kiểm tra mọi lỗi cú pháp và chỉnh sửa cấu hình của bạn nếu cần:
Mã:
nginx -t
Mã:
systemctl start nginx.service gitea.service
Các bước tùy chọn
Cấu hình ghi nhật ký
Theo mặc định, nhật ký của Gitea sẽ ghi lại các thông báo ở mức độ nghiêm trọng Info trở lên. Bạn có thể muốn thay đổi thành Warn hoặc Error. Để thực hiện, hãy mở /etc/gitea/app.ini và thay đổi tham số LEVEL trong phần [log] thành một trong các mục sau: trace, debug, info, warn, error, critical, fatal, none. Ví dụ, để ghi lại các thông báo có mức độ nghiêm trọng Cảnh báo trở lên, hãy sử dụng:
Mã:
[log]MODE = fileLEVEL = warnROOT_PATH = /var/lib/gitea/log
Mã:
systemctl restart gitea.service
Máy chủ SSH riêng
Gitea cũng có thể sử dụng máy chủ SSH riêng của mình. Để bật tính năng này, hãy thêm dòng sau vào phần cấu hình [server]:
Mã:
START_SSH_SERVER = true
Mã:
SSH_PORT = 2222
Mã:
firewall-cmd --add-port 2222/tcp --permanentfirewall-cmd --reload