Cách cài đặt Jenkins Automation Server với Apache trên Ubuntu 20.04

theanh

Administrator
Nhân viên
Jenkins là một máy chủ tự động hóa mã nguồn mở và miễn phí giúp các nhà phát triển xây dựng, thử nghiệm và triển khai phần mềm của họ. Nó dựa trên Java và cung cấp hơn 1700 plugin giúp tự động hóa các tác vụ lặp đi lặp lại liên quan đến quy trình phát triển phần mềm. Nó hỗ trợ nhiều hệ điều hành như Windows, Mac OS X và Linux và có thể dễ dàng phân phối trên nhiều máy.

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt Jenkins với Apache làm proxy ngược trên Ubuntu 20.04.

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

  • Một máy chủ chạy Ubuntu 20.04.
  • Một mật khẩu gốc được cấu hình cho máy chủ.

Bắt đầu​

Trước khi bắt đầu, bạn nên cập nhật hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật hệ thống của mình bằng lệnh sau:
Mã:
apt-get update -y
apt-get upgrade -y
Sau khi cập nhật hệ thống, hãy khởi động lại hệ thống để áp dụng các thay đổi.

Cài đặt Java​

Jenkins dựa trên Java, do đó Java phải được cài đặt trong hệ thống của bạn. Nếu chưa cài đặt, bạn có thể cài đặt bằng cách chạy lệnh sau:
Mã:
apt-get install openjdk-11-jdk gnupg2 -y
Sau khi cài đặt, hãy kiểm tra phiên bản Java đã cài đặt bằng lệnh sau:
Mã:
java -version
Bạn sẽ nhận được kết quả sau:
Mã:
openjdk version "11.0.8" 2020-07-14Môi trường chạy thời gian OpenJDK (bản dựng 11.0.8+10-post-Ubuntu-0ubuntu120.04)Máy ảo máy chủ OpenJDK 64-Bit (bản dựng 11.0.8+10-post-Ubuntu-0ubuntu120.04, 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 Jenkins​

Theo mặc định, Phiên bản mới nhất của Jenkins không có trong kho lưu trữ mặc định của Ubuntu 20.04. Vì vậy, bạn sẽ cần thêm kho lưu trữ Jenkins vào hệ thống của mình.

Đầu tiên, hãy tải xuống và thêm khóa GPG bằng lệnh sau:
Mã:
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | apt-key add -
Tiếp theo, hãy thêm kho lưu trữ Jenkins vào APT bằng lệnh sau:
Mã:
sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
Tiếp theo, hãy cập nhật kho lưu trữ và cài đặt phiên bản mới nhất của Jenkins bằng lệnh sau:
Mã:
apt-get update -y
apt-get install jenkins -y
Sau khi cài đặt thành công, hãy kiểm tra trạng thái của Jenkins bằng lệnh sau:
Mã:
systemctl status jenkins
Bạn sẽ thấy đầu ra sau:
Mã:
? jenkins.service - LSB: Khởi động Jenkins khi khởi động Đã tải: đã tải (/etc/init.d/jenkins; đã tạo) Đang hoạt động: đang hoạt động (đã thoát) kể từ CN 2020-08-09 12:50:35 UTC; 44 giây trước Tài liệu: man:systemd-sysv-generator(8) Nhiệm vụ: 0 (giới hạn: 2353) Bộ nhớ: 0B CGroup: /system.slice/jenkins.service09/08 12:50:34 ubuntu2004 systemd[1]: Đang khởi động LSB: Đang khởi động Jenkins khi khởi động...09/08 12:50:34 ubuntu2004 jenkins[6134]: Đã tìm thấy phiên bản java chính xác09/08 12:50:34 ubuntu2004 jenkins[6134]: * Đang khởi động Jenkins Automation Server jenkins09/08 12:50:34 ubuntu2004 su[6180]: (với jenkins) không có quyền root09/08 12:50:34 ubuntu2004 su[6180]: pam_unix(su-l:session): phiên mở cho người dùng jenkins bởi (uid=0)09/08 12:50:34 ubuntu2004 su[6180]: pam_unix(su-l:session): phiên đóng cho người dùng jenkins09/08 12:50:35 ubuntu2004 jenkins[6134]: ...xong.09/08 12:50:35 ubuntu2004 systemd[1]: Đã khởi động LSB: Khởi động Jenkins khi khởi động.
Lúc này Jenkins đang chạy và lắng nghe trên cổng 8080. Bạn có thể kiểm tra bằng lệnh sau:
Mã:
netstat -plntu | grep 8080
Bạn sẽ thấy kết quả đầu ra sau:
Mã:
tcp6 0 0 :::8080 :::* LISTEN 6192/java
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

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

Tiếp theo, bạn sẽ cần cài đặt và cấu hình Apache làm proxy ngược cho Jenkins. Vì vậy, bạn có thể truy cập Jenkins thông qua cổng 80.

Đầu tiên, hãy cài đặt máy chủ web Apache bằng lệnh sau:
Mã:
apt-get install apache2 -y
Sau khi cài đặt máy chủ web Apache, hãy bật các mô-đun cần thiết bằng lệnh sau:
Mã:
a2enmod proxy
a2enmod proxy_http
Tiếp theo, hãy tạo tệp cấu hình máy chủ ảo Apache cho Jenkins bằng lệnh sau:
Mã:
nano /etc/apache2/sites-available/jenkins.conf
Thêm các dòng sau:
Mã:
 ServerName jenkins.example.com ProxyRequests Off ProxyPreserveHost On AllowEncodedSlashes NoDecode 
 Order deny,allow Allow from all  ProxyPass / http://localhost:8080/ nocanon ProxyPassReverse / http://localhost:8080/ ProxyPassReverse / http://jenkins.hakase-labs.io/
Lưu và đóng tệp khi bạn hoàn tất. Sau đó, bật tệp cấu hình máy chủ ảo Apache bằng lệnh sau:
Mã:
a2ensite jenkins
Tiếp theo, khởi động lại dịch vụ Apache và Jenkins để áp dụng các thay đổi:
Mã:
systemctl reload apache2
systemctl restart jenkins
Bây giờ bạn có thể kiểm tra trạng thái của dịch vụ Apache bằng lệnh sau:
Mã:
systemctl status apache2
Bạn sẽ nhận được đầu ra sau:
Mã:
? apache2.service - Máy chủ HTTP Apache Đã tải: đã tải (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d ??apache2-systemd.conf Đang hoạt động: đang hoạt động (đang chạy) kể từ Chủ Nhật 2020-08-10 12:41:30 UTC; 22 phút trước Tiến trình: 15407 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS) PID chính: 14417 (apache2) Nhiệm vụ: 11 (giới hạn: 1114) CGroup: /system.slice/apache2.service ??14417 /usr/sbin/apache2 -k start ??15412 /usr/sbin/apache2 -k start ??15413 /usr/sbin/apache2 -k start ??15414 /usr/sbin/apache2 -k start ??15416 /usr/sbin/apache2 -k start ??15417 /usr/sbin/apache2 -k start ??15418 /usr/sbin/apache2 -k start ??15419 /usr/sbin/apache2 -k start ??15420 /usr/sbin/apache2 -k start ??15422 /usr/sbin/apache2 -k start ??15429 /usr/sbin/apache2 -k start10 tháng 8 12:41:29 ubuntu20.04 systemd[1]: Đang khởi động Máy chủ HTTP Apache...
Tại thời điểm này, máy chủ web Apache được cấu hình để phục vụ Jenkins. Bây giờ bạn có thể tiến hành bước tiếp theo.

Lưu ý: nếu bạn kết nối với Jenkins qua internet, thì bạn nên bảo mật các kết nối bằng SSL/TLS. Để bật SSL thông qua Let's Encrypt bằng certbot cho giao diện web Jenkins, hãy xem tại đây:

Truy cập Giao diện web Jenkins​

Bây giờ, hãy mở trình duyệt web của bạn và nhập URL http://jenkins.example.com. Bạn sẽ được yêu cầu nhập mật khẩu quản trị viên ban đầu như hiển thị bên dưới:



Bạn có thể xem mật khẩu quản trị viên ban đầu của Jenkins bằng lệnh sau:
Mã:
cat /var/lib/jenkins/secrets/initialAdminPassword
Bạn sẽ thấy mật khẩu Jenkins trong đầu ra sau:
Mã:
78d6b10330434b27a09590fc781c9e6d
Nhập mật khẩu từ đầu ra ở trên vào màn hình đăng nhập và nhấp vào nút Tiếp tục. Bạn sẽ được chuyển hướng đến màn hình tùy chỉnh Jenkins:



Chọn tùy chọn mong muốn và nhấp vào tùy chọn đó. Bạn sẽ thấy màn hình cài đặt plugin Jenkins đang tiến hành:



Sau khi tất cả các plugin được cài đặt thành công, bạn sẽ thấy màn hình sau:



Cung cấp tên người dùng, mật khẩu, email quản trị viên của bạn và nhấp vào nút Lưu và Tiếp tục. Bạn sẽ thấy màn hình sau:



Nhập URL Jenkins của bạn và nhấp vào nút Lưu và Hoàn tất. Bạn sẽ thấy màn hình sau:



Nhấp vào nút "Bắt đầu sử dụng Jenkins". Bạn sẽ thấy bảng điều khiển Jenkins trong màn hình sau:



Tiếp theo, bạn sẽ cần định cấu hình các thiết lập bảo mật tiêu chuẩn cho Jenkins.

Trong ngăn bên trái, nhấp vào Quản lý Jenkins => Định cấu hình Bảo mật Toàn cầu. Bạn sẽ thấy màn hình sau:





Bây giờ, hãy chọn Bảo mật dựa trên Ma trận, thêm người dùng của bạn, cấp đầy đủ các đặc quyền và nhấp vào nút Lưu.

Kiểm tra Jenkins​

Lúc này, Jenkins đã được cài đặt và định cấu hình. đã đến lúc tạo một công việc mẫu và kiểm tra chức năng Jenkins.

Trên bảng điều khiển Jenkins, nhấp vào nút Create New Job. Bạn sẽ thấy màn hình sau:





Cung cấp tên công việc của bạn, chọn dự án Freestyle và nhấp vào nút OK. Bạn sẽ thấy màn hình sau:



Bây giờ, hãy nhấp vào tab Build. Trên "Add build step", hãy chọn tùy chọn "Execute shell" và nhập "free -m" vào hộp lệnh. Sau đó, nhấp vào nút Save. Bạn sẽ thấy màn hình sau:



Bây giờ, hãy nhấp vào nút "Build Now" ở ngăn bên trái để thực hiện Job. Sau khi công việc được thực hiện, bạn sẽ thấy đầu ra của bảng điều khiển từ công việc được Jenkins thực hiện trong màn hình sau:


Kết luận​

Xin chúc mừng! bạn đã cài đặt thành công Jenkins với Apache trên máy chủ Ubuntu 20.04. Bây giờ bạn có thể sử dụng Jenkins trong môi trường phát triển để tăng tốc quá trình phát triển. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào.
 
Back
Bên trên