Cách cài đặt GitBucket với Nginx trên Ubuntu 20.04 LTS

theanh

Administrator
Nhân viên
GitBucket là một nền tảng web Git mã nguồn mở được hỗ trợ bởi Scala. Nó cung cấp các tính năng giao diện người dùng giống như Github như lưu trữ kho lưu trữ Git qua HTTP và SSH, các vấn đề, wiki, trình xem kho lưu trữ và yêu cầu kéo. Nó đi kèm với một bộ tính năng phong phú. Dưới đây là một số trong số chúng:
  • Giao diện người dùng trực quan
  • Hỗ trợ GitLFS
  • Hỗ trợ kho lưu trữ Git công khai và riêng tư
  • Dòng thời gian hoạt động và thông báo qua email
  • Khả năng tương thích của API với GitHub
  • Quản lý tài khoản và nhóm
Trong hướng dẫn này, chúng tôi sẽ giải thích cách cài đặt GitBucket với Nginx trên Ubuntu 20.04.

Điều kiện tiên quyết​

  • Một máy chủ chạy Ubuntu 20.04 với 2 GB RAM.
  • Một tên miền hợp lệ được trỏ đến máy chủ của bạn.
  • Một mật khẩu gốc được cấu hình trên máy chủ của bạn.

Cài đặt Java​

GitBucket dựa trên Java nên bạn sẽ cần cài đặt nó vào hệ thống của mình. Bạn có thể cài đặt bằng lệnh sau:
Mã:
apt-get install default-jdk -y
Sau khi cài đặt, hãy xác minh phiên bản Java bằng lệnh sau:
Mã:
java -version
Bạn sẽ nhận được kết quả sau:
Mã:
openjdk version "11.0.7" 2020-04-14Môi trường chạy thời gian OpenJDK (bản dựng 11.0.7+10-post-Ubuntu-3ubuntu1)Máy ảo máy chủ OpenJDK 64-Bit (bản dựng 11.0.7+10-post-Ubuntu-3ubuntu1, chế độ hỗn hợp, chia sẻ)
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cài đặt và cấu hình GitBucket​

Trước khi bắt đầu, bạn nên tạo người dùng và nhóm riêng để chạy GitBucket. Bạn có thể tạo một nhóm và người dùng mới có tên là gitbucket bằng lệnh sau:
Mã:
groupadd -g 555 gitbucket
useradd -g gitbucket --no-user-group --home-dir /opt/gitbucket --no-create-home --shell /usr/sbin/nologin --system --uid 555 gitbucket
Tiếp theo, tạo một thư mục mới cho GitBucket bằng lệnh sau:
Mã:
mkdir /opt/gitbucket
Tiếp theo, tải xuống phiên bản mới nhất của GitBucket bên trong thư mục GitBucket:
Mã:
cd /opt/gitbucket
wget https://github.com/gitbucket/gitbucket/releases/download/4.33.0/gitbucket.war
Tiếp theo, thay đổi quyền sở hữu của thư mục GitBucket:
Mã:
chown -R gitbucket:gitbucket /opt/gitbucket
GitBucket đi kèm với cơ sở dữ liệu H2 nhúng. Bạn có thể tạo tệp cấu hình cơ sở dữ liệu mới bằng lệnh sau:
Mã:
nano /opt/gitbucket/database.conf
Thêm các dòng sau:
Mã:
db { url = "jdbc:h2:${DatabaseHome};MVCC=true" user = "sa" password = "sa"}
Lưu và đóng tệp khi bạn hoàn tất.

Tạo tệp dịch vụ Systemd cho GitBucket​

Tiếp theo, bạn sẽ cần tạo tệp dịch vụ systemd để quản lý dịch vụ GitBucket. Bạn có thể tạo nó bằng lệnh sau:
Mã:
nano /etc/systemd/system/gitbucket.service
Thêm các dòng sau:
Mã:
# GitBucket Service[Unit]Description=Manage Java service[Service]WorkingDirectory=/opt/gitbucketExecStart=/usr/bin/java -Xms128m -Xmx256m -jar gitbucket.warUser=gitbucketGroup=gitbucketType=simpleRestart=on-failureRestartSec=10[Install]WantedBy=multi-user.target
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, tải lại daemon systemd bằng lệnh sau:
Mã:
systemctl daemon-reload
Tiếp theo, khởi động dịch vụ GitBucket và cho phép nó khởi động sau khi hệ thống khởi động lại bằng lệnh sau:
Mã:
systemctl start gitbucket
systemctl enable gitbucket
Tiếp theo, xác minh trạng thái của dịch vụ GitBucket bằng lệnh sau:
Mã:
systemctl status gitbucket
Bạn sẽ nhận được kết quả đầu ra sau:
Mã:
? gitbucket.service - Quản lý dịch vụ Java Đã tải: đã tải (/etc/systemd/system/gitbucket.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) kể từ Thu 2020-05-14 02:27:13 UTC; 10 giây trước PID chính: 93029 (java) Nhiệm vụ: 36 (giới hạn: 2282) Bộ nhớ: 324,9M CGroup: /system.slice/gitbucket.service ??93029 /usr/bin/java -Xms128m -Xmx256m -jar gitbucket.war14 tháng 5 02:27:19 ubuntu2004 java[93029]: 14-05-2020 02:27:19.868:INFO:oejs.session:main: DefaultSessionIdManager workerName=node014 tháng 5 02:27:19 ubuntu2004 java[93029]: 14-05-2020 02:27:19.868:INFO:oejs.session:main: Không có SessionScavenger nào được đặt, sử dụng defaults14 tháng 5 02:27:19 ubuntu2004 java[93029]: 2020-05-14 02:27:19.875:INFO:oejs.session:main: node0 Quét sau mỗi 600000ms14 tháng 5 02:27:20 ubuntu2004 java[93029]: 02:27:20.261 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Đang bắt đầu...14 tháng 5 02:27:20 ubuntu2004 java[93029]: 02:27:20.691 [main] INFO com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Đã bắt đầu.Ngày 14 tháng 5 02:27:20 ubuntu2004 java[93029]: 02:27:20.697 [main] CẢNH BÁO slick.util.AsyncExecutor - Có maxConnection > maxThreads có thể dẫn đến d>14 tháng 5 02:27:20 ubuntu2004 java[93029]: 02:27:20.721 [main] THÔNG TIN g.core.servlet.InitializeListener - Kiểm tra phiên bản14 tháng 5 02:27:20 ubuntu2004 java[93029]: 02:27:20.721 [main] THÔNG TIN g.core.servlet.InitializeListener - Bắt đầu cập nhật lược đồ14 tháng 5 02:27:22 ubuntu2004 java[93029]: 02:27:22.156 [main] THÔNG TIN l.servicelocator.ServiceLocator - Không thể sử dụng lớp liquibase.parser.core.ya>14 tháng 5 02:27:22 ubuntu2004 java[93029]: 02:27:22.161 [main] THÔNG TIN l.servicelocator.ServiceLocator - Không thể sử dụng lớp liquibase.parser.core.js>
Tại thời điểm này, GitBucket đang chạy và lắng nghe trên cổng 8080.

Cấu hình Nginx làm Proxy ngược​

Theo mặc định, GitBucket đang chạy trên cổng 8080. Vì vậy, bạn nên cấu hình Nginx làm proxy ngược cho GitBucket.

Trước tiên, hãy cài đặt máy chủ web Nginx bằng lệnh sau:
Mã:
apt-get install nginx -y
Tiếp theo, hãy tạo tệp cấu hình máy chủ ảo Nginx cho GitBucket:
Mã:
nano /etc/nginx/sites-available/gitbucket
Thêm các dòng sau:
Mã:
upstream gitbucket { server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;}server { listen 80; server_name gitbucket.linuxbuz.com; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://gitbucket/; }}
Lưu và đóng tệp. Sau đó, tạo một liên kết tượng trưng đến thư mục sites-enabled:
Mã:
ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/
Tiếp theo, kiểm tra Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ nhận được kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: tệp cấu hình /etc/nginx/nginx.conf đã kiểm tra thành công
Cuối cùng, khởi động lại dịch vụ Nginx để triển khai các thay đổi:
Mã:
systemctl restart nginx

Bảo mật GitBucket bằng Let's Encrypt​

Tiếp theo, bạn sẽ cần cài đặt ứng dụng khách Certbot để bảo mật GitBucket với Let's Encrypt SSL.

Đầu tiên, thêm kho lưu trữ Certbot bằng lệnh sau:
Mã:
add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471
Tiếp theo, cập nhật kho lưu trữ và cài đặt ứng dụng khách Certbot bằng lệnh sau:
Mã:
apt-get update -y
apt-get install certbot python3-certbot-nginx -y
Tiếp theo, chạy lệnh sau để tải xuống và cài đặt Let's Encrypt SSL cho trang web của bạn:
Mã:
certbot --nginx -d gitbucket.linuxbuz.com
Bạn sẽ được yêu cầu cung cấp email và chấp nhận điều khoản dịch vụ:
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator nginx, Installer nginxNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có sẵn lòng chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuận phát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)o: CNhận chứng chỉ mớiThực hiện các thử thách sau:Thử thách http-01 cho gitbucket.linuxbuz.comĐang chờ xác minh...Đang dọn dẹp các thử tháchTriển khai chứng chỉ cho VirtualHost /etc/nginx/sites-enabled/gitbucket
Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không:
Mã:
Vui lòng chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không, xóa quyền truy cập HTTP.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu đến quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin tưởng rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tácthay đổi này bằng cách chỉnh sửa cấu hình máy chủ web của mình.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] rồi [enter] (nhấn 'c' để hủy): 2
Nhập 2 và nhấn Enter để hoàn tất quá trình cài đặt.
Mã:
Đang chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/sites-enabled/gitbucket- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://gitbucket.linuxbuz.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=gitbucket.linuxbuz.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/gitbucket.linuxbuz.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/gitbucket.linuxbuz.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 12/08/2020. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot renew" - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Truy cập GitBucket​

Bây giờ, hãy mở trình duyệt web của bạn và nhập URL https://gitbucket.linuxbuz.com. Bạn sẽ được chuyển hướng đến trang sau:



Nhấp vào nút Đăng nhập vào. Bạn sẽ thấy trang đăng nhập GitBucket:



Cung cấp tên người dùng mặc định của GitBucket là root và mật khẩu là root rồi nhấp vào nút Đăng nhập vào. Bạn sẽ thấy bảng điều khiển GitBucket ở trang sau:



Tiếp theo, nhấp vào Cài đặt Tài khoản ở góc trên bên phải để thay đổi mật khẩu gốc mặc định:



Cung cấp mật khẩu an toàn mới và nhấp vào nút Lưu để cập nhật mật khẩu gốc.


Kết luận​

Xin chúc mừng! Bạn đã cài đặt và bảo mật thành công GitBucket với Nginx làm proxy ngược trên Ubuntu 20.04. Bây giờ bạn có thể lưu trữ kho lưu trữ Git của riêng mình bằng GitBucket.
 
Back
Bên trên