Cách cài đặt Hugo Site Generator với Nginx trên Rocky Linux 9

theanh

Administrator
Nhân viên
Một trang web tĩnh được xây dựng bằng các trang có nội dung tĩnh hoặc mã HTML, JavaScript hoặc CSS thuần túy. Nội dung không được tạo động và không liên quan đến bất kỳ cơ sở dữ liệu hoặc xử lý phía máy chủ nào. Các trang web như vậy cực kỳ nhanh và miễn nhiễm với các khai thác phụ thuộc vào mã động hoặc SQL.

Hugo là trình tạo trang web tĩnh nguồn mở được viết bằng Go. Nó tạo nội dung bằng cách chuyển đổi các bài đăng được viết bằng ngôn ngữ đánh dấu sang HTML. Hugo cũng đi kèm với một máy chủ tích hợp để lưu trữ các trang web mà nó tạo ra. Bạn cũng có thể lưu trữ trang web Hugo trên Amazon S3, GitHub pages, Google Cloud, Netlify, Vercel, v.v.

Trong hướng dẫn này, chúng ta sẽ khám phá cách cài đặt Hugo để tạo trang web tĩnh trên máy chủ chạy Rocky Linux 9. Chúng ta sẽ sử dụng máy chủ Nginx để lưu trữ trang web và chứng chỉ SSL Let's Encrypt để bảo mật cài đặt của mình.

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


  • Máy chủ chạy Rocky Linux 9.

  • Người dùng không phải root có quyền sudo.

  • Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ của bạn. Đối với mục đích của chúng tôi, chúng tôi sẽ sử dụng hugo.example.com làm tên miền.

  • Đảm bảo mọi thứ đều được cập nhật.
Mã:
$ sudo dnf update
[*]
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils tree -y

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Nó sẽ hiển thị đầu ra sau.
Mã:
cockpit dhcpv6-client ssh
Wiki.js cần có cổng HTTP và HTTPS để hoạt động. Mở chúng ra.
Mã:
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
Tải lại tường lửa để áp dụng thay đổi.
Mã:
$ sudo firewall-cmd --reload

Bước 2 - Cài đặt Nginx​

Rocky Linux 9 đi kèm với phiên bản Nginx cũ hơn. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.

Tạo và mở tệp /etc/yum.repos.d/nginx.repo để tạo kho lưu trữ Nginx chính thức.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Dán mã sau vào nó.
Mã:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cài đặt máy chủ Nginx.
Mã:
$ sudo dnf install nginx -y
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Bật và khởi động máy chủ Nginx.
Mã:
$ sudo systemctl enable nginx --now
Kiểm tra trạng thái của máy chủ.
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Mon 2023-10-30 08:24:05 UTC; 7s ago Docs: http://nginx.org/en/docs/ Process: 4265 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 4266 (nginx) Tasks: 2 (limit: 4402) Memory: 1.9M CPU: 7ms CGroup: /system.slice/nginx.service ??4266 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??4267 "nginx: worker process"
Oct 30 08:24:05 hugo.example.com systemd[1]: Starting nginx - high performance web server...

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

Hugo cần Git để hoạt động. Chạy lệnh sau để cài đặt Git
Mã:
$ sudo dnf install git -y
Xác minh cài đặt Git.
Mã:
$ git --version
git version 2.39.3

Bước 4 - Cài đặt Hugo​

Vì Hugo được xây dựng bằng ngôn ngữ Go nên việc cài đặt khá dễ dàng vì nó không yêu cầu bất kỳ sự phụ thuộc nào và có thể chạy độc lập.

Tải xuống Hugo. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ cài đặt phiên bản mở rộng của Hugo. Phiên bản mở rộng có thể mã hóa hình ảnh sang định dạng Webp khi xử lý hình ảnh. Điều này hữu ích nếu bạn muốn Hugo chuyển đổi hình ảnh cho bạn ngay lập tức và giữ kích thước của chúng ở mức thấp. Phiên bản mở rộng cũng bao gồm trình biên dịch SASS có thể hữu ích trong một số trường hợp nhất định khi bạn cần.

Tạo thư mục cho Hugo.
Mã:
$ sudo mkdir /var/www/html/hugo -p
Chuyển sang thư mục mới tạo.
Mã:
$ cd /var/www/html/hugo
Tải xuống Hugo từ Trang phát hành GitHub. Vào thời điểm viết hướng dẫn này, v0.119.0 là phiên bản mới nhất mà chúng ta sẽ tải xuống.
Mã:
$ sudo wget https://github.com/gohugoio/hugo/releases/download/v0.119.0/hugo_extended_0.119.0_linux-amd64.tar.gz
Giải nén các tệp từ kho lưu trữ.
Mã:
$ sudo tar -xzf hugo_extended_0.119.0_linux-amd64.tar.gz
Bạn sẽ thấy ba tệp sau trong thư mục.
Mã:
$ ls
hugo hugo_extended_0.119.0_linux-amd64.tar.gz LICENSE README.md
Di chuyển tệp nhị phân hugo đến /usr/bin thư mục.
Mã:
$ sudo mv hugo /usr/bin/hugo
Tệp đã được thiết lập quyền thực thi nên bạn không cần phải thiết lập.

Xác nhận cài đặt.
Mã:
$ hugo version
hugo v0.119.0-b84644c008e0dc2c4b67bd69cccf87a41a03937e+extended linux/amd64 BuildDate=2023-09-24T15:20:17Z VendorInfo=gohugoio
Bạn cũng có thể kiểm tra tất cả các tùy chọn có sẵn để sử dụng bằng cách sử dụng --help cờ.
Mã:
$ hugo --help
Bạn sẽ nhận được kết quả sau.
Mã:
hugo is the main command, used to build your Hugo site.
Hugo is a Fast and Flexible Static Site Generator
built with love by spf13 and friends in Go.
Complete documentation is available at https://gohugo.io/.
Usage: hugo [flags] hugo [command]
Available Commands: completion Generate the autocompletion script for the specified shell config Print the site configuration convert Convert your content to different formats deploy Deploy your site to a Cloud provider. env Print Hugo version and environment info gen A collection of several useful generators. help Help about any command import Import your site from others. list Listing out various types of content mod Various Hugo Modules helpers. new Create new content for your site server A high performance webserver version Print Hugo version and environment info
Flags: -b, --baseURL string hostname (and path) to the root, e.g. https://spf13.com/ -D, --buildDrafts include content marked as draft -E, --buildExpired include expired content -F, --buildFuture include content with publishdate in the future --cacheDir string filesystem path to cache directory --cleanDestinationDir remove files from destination not found in static directories --clock string set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00 --config string config file (default is hugo.yaml|json|toml) --configDir string config dir (default "config") -c, --contentDir string filesystem path to content directory --debug debug output -d, --destination string filesystem path to write files to --disableKinds strings disable different kind of pages (home, RSS etc.) --enableGitInfo add Git revision, date, author, and CODEOWNERS info to the pages -e, --environment string build environment --forceSyncStatic copy all files when static is changed. --gc enable to run some cleanup tasks (remove unused cache files) after the build -h, --help help for hugo --ignoreCache ignores the cache directory --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern -l, --layoutDir string filesystem path to layout directory --logLevel string log level (debug|info|warn|error) --minify minify any supported output format (HTML, XML etc.) --noBuildLock don't create .hugo_build.lock file --noChmod don't sync permission mode of files --noTimes don't sync modification time of files --panicOnWarning panic on first WARNING log --poll string set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes --printI18nWarnings print missing translations --printMemoryUsage print memory usage to screen at intervals --printPathWarnings print warnings on duplicate target paths etc. --printUnusedTemplates print warnings on unused templates. --quiet build in quiet mode --renderToMemory render to memory (only useful for benchmark testing) -s, --source string filesystem path to read files relative from --templateMetrics display metrics about template executions --templateMetricsHints calculate some improvement hints when combined with --templateMetrics -t, --theme strings themes to use (located in /themes/THEMENAME/) --themesDir string filesystem path to themes directory --trace file write trace to file (not useful in general) -v, --verbose verbose output -w, --watch watch filesystem for changes and recreate as needed
Use "hugo [command] --help" for more information about a command.
Xóa tất cả các tệp còn lại trong thư mục vì chúng không còn cần thiết nữa.
Mã:
$ sudo rm -rf *.*

Bước 5 - Tạo một Hugo Site mới​

Phát hành lệnh sau để tạo một Hugo mới trang web.
Mã:
$ sudo hugo new site howtoforge
Bạn sẽ nhận được kết quả sau.
Mã:
Congratulations! Your new Hugo site was created in /home/navjot/hugo/howtoforge.
Just a few more steps...
1. Change the current directory to /home/navjot/hugo/howtoforge.
2. Create or install a theme: - Create a new theme with the command "hugo new theme " - Install a theme from https://themes.gohugo.io/
3. Edit hugo.toml, setting the "theme" property to the theme name.
4. Create new content with the command "hugo new content /.".
5. Start the embedded web server with the command "hugo server --buildDrafts".
See documentation at https://gohugo.io/.
Chạy tree lệnh để kiểm tra cấu trúc của trang web.
Mã:
$ tree howtoforge/
Bạn sẽ nhận được thông tin sau đầu ra.
Mã:
howtoforge/
??? archetypes
? ??? default.md
??? assets
??? content
??? data
??? hugo.toml
??? i18n
??? layouts
??? static
??? themes
8 directories, 2 files
Chuyển sang thư mục Hugo.
Mã:
$ cd howtoforge

Bước 6 - Cài đặt Hugo Theme​

Bước tiếp theo là cài đặt chủ đề Hugo. Có hai cách để thực hiện và cả hai đều yêu cầu Git. Phương pháp đầu tiên đơn giản và rõ ràng, bao gồm sao chép kho lưu trữ GitHub của Chủ đề. Điều này hữu ích trong hầu hết các trường hợp và là cách dễ nhất để thực hiện. Việc cập nhật thông qua phương pháp này rất dễ dàng mặc dù phương pháp này liên quan đến việc tải xuống nhiều thứ không cần thiết mà bạn không cần. Có một số chủ đề, đặc biệt là các chủ đề trả phí, không có kho lưu trữ GitHub nơi bạn có thể lấy chúng. Các chủ đề như vậy thường được cung cấp dưới dạng kho lưu trữ nén. Trong trường hợp đó, bạn cần giải nén kho lưu trữ theo cách thủ công và cập nhật chủ đề theo cách thủ công. Phương pháp thứ ba liên quan đến việc lấy chủ đề dưới dạng mô-đun con Git. Điều này yêu cầu bạn khởi tạo thư mục Hugo của mình dưới dạng kho lưu trữ Git. Đây là phương pháp được khuyến nghị và hữu ích trong trường hợp bạn muốn triển khai trang web của mình lên GitHub, Netlify hoặc bất kỳ dịch vụ lưu trữ nào khác. Đẩy trang web Hugo của bạn lên GitHub cũng đảm bảo sao lưu tự động mà không cần bất kỳ nỗ lực nào thêm.

Chúng tôi sẽ đề cập đến cả ba phương pháp. Có một phương pháp khác để cài đặt chủ đề Hugo bằng các mô-đun Hugo Go. Phương pháp này chỉ có hiệu quả nếu theme có sẵn dưới dạng module Hugo. Tuy nhiên, chúng tôi sẽ không đề cập đến phương pháp này vì nó nằm ngoài phạm vi của bài viết này.

Phương pháp 1 - Sao chép Theme Hugo​

Đây là phương pháp được sử dụng phổ biến nhất để cài đặt theme Hugo. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ cài đặt chủ đề Paper. Chuyển đến thư mục Hugo.
Mã:
$ cd /var/www/html/hugo/howtoforge
Chạy lệnh sau để sao chép kho lưu trữ GitHub của theme. Cờ --depth=1 chỉ lấy cam kết mới nhất.
Mã:
$ sudo git clone https://github.com/nanxiaobei/hugo-paper themes/Paper --depth=1
Để cập nhật chủ đề đã tải xuống thông qua phương pháp này, hãy chạy lệnh sau commands.
Mã:
$ cd ~/hugo/howtoforge/themes/Paper
$ sudo git pull

Phương pháp 2 - Cài đặt Theme từ file nén​

Đây là phương pháp dễ nhất. Lấy file lưu trữ của file theme. Paper theme không có phần phát hành nên bạn không thể tải xuống phiên bản cụ thể. Do đó, chúng ta sẽ tải xuống GitHub master archive. Bạn có thể lấy liên kết từ trang kho lưu trữ GitHub của nó.
Mã:
$ cd ~
$ wget https://github.com/nanxiaobei/hugo-paper/archive/refs/heads/main.zip
Giải nén tệp lưu trữ vào thư mục chủ đề. Cờ -q sẽ chặn đầu ra và cờ -d sẽ chỉ định đầu ra thư mục.
Mã:
$ sudo unzip -q main.zip -d /var/www/html/hugo/howtoforge/themes/
Để cập nhật chủ đề, bạn cần tải xuống kho lưu trữ mới nhất và giải nén lại. Đảm bảo bạn sao lưu tất cả các tệp bạn đã thay đổi.

Hai phương pháp dưới cùng chỉ hoạt động nếu trang Hugo của bạn được lưu trữ dưới dạng dự án Git. Nếu không, bạn không cần sử dụng các phương pháp sau.

Phương pháp 3 - Cài đặt Theme dưới dạng Git Submodule​

Chuyển sang thư mục Hugo.
Mã:
$ cd /var/www/html/hugo/howtoforge
Khởi tạo thư mục Hugo dưới dạng kho lưu trữ Git. Đây là một bước quan trọng. Điều này cho phép bạn đẩy trang Hugo của mình lên GitHub để sử dụng sau này khi lưu trữ bằng Netlify, AWS, Vercel, v.v.
Mã:
$ sudo git init
Chạy lệnh sau để thêm chủ đề dưới dạng mô-đun con Git.
Mã:
$ sudo git submodule add https://github.com/nanxiaobei/hugo-paper themes/paper
Để cập nhật chủ đề được thêm dưới dạng Mô-đun con, hãy chạy lệnh sau từ Hugo thư mục.
Mã:
$ sudo git submodule update --remote --merge

Cấu hình Hugo​

Sau khi cài đặt chủ đề bằng phương pháp bạn chọn, hãy mở tệp hugo.toml trong thư mục gốc của Hugo. Bắt đầu từ Hugo v0.110.0, tệp cấu hình mặc định có tên là hugo.toml. Nếu bạn đang sử dụng phiên bản cũ hơn của Hugo, bạn sẽ tìm thấy tệp config.toml trong thư mục Hugo của bạn.
Mã:
$ sudo nano hugo.toml
Thêm dòng sau vào tệp. Giá trị phải khớp với thư mục của chủ đề. Đối với chủ đề bài báo, đó sẽ là thư mục hugo-paper-theme nếu bạn sử dụng cài đặt lưu trữ hoặc Paper nếu bạn sử dụng phương pháp sao chép Git hoặc mô-đun con ở trên.
Mã:
theme = 'hugo-paper-main'
Ngoài ra, hãy thay đổi giá trị của biến baseURL thành tên miền của trang web của bạn. Và thay đổi title của trang web của bạn.

Tệp cấu hình của bạn sẽ trông như sau.
Mã:
baseURL = 'https://hugo.example.com/'
languageCode = 'en-us'
title = 'Howtoforge Hugo Demo'
theme = 'hugo-paper-main'
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 7 - Tạo bài đăng và trang​

Để tạo bài đăng mới, hãy thực hiện lệnh sau lệnh.
Mã:
$ sudo hugo new post/first-post.md
Điều này sẽ tạo một tệp đánh dấu mới first-post.md với tiêu đề First Post trong thư mục content/post. Mở tệp trong trình chỉnh sửa yêu thích của bạn và chỉnh sửa các chi tiết và viết một cái gì đó cho bài đăng đầu tiên của bạn.
Mã:
+++
title = 'First Post'
date = 2023-10-30T03:32:38Z
draft = true
+++
## Introduction
This is **bold** text, and this is *emphasized* text.
Visit the [Howtoforge](https://www.howtoforge.com) website!
Xóa draft = true sau khi bạn đã viết xong bài đăng. Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Để tạo trang mới, hãy đưa ra lệnh sau.
Mã:
$ sudo hugo new about.md
Lệnh này sẽ tạo một trang mới có tiêu đề Giới thiệu trong thư mục content. Mở nó ra và chỉnh sửa theo cách tương tự như bài đăng.

Cấu hình chủ đề​

Trước khi xuất bản, chúng ta cần thực hiện một vài thay đổi đối với chủ đề để hiển thị thanh menu. Những thay đổi này sẽ được thực hiện trong tệp cấu hình của Hugo chứ không phải trong cấu hình của chủ đề.

Chuyển sang thư mục Hugo.
Mã:
$ cd /var/www/html/hugo/howtoforge
Mở tệp hugo.toml để chỉnh sửa.
Mã:
$ sudo nano hugo.toml
Dán mã sau vào cuối.
Mã:
author = "Navjot Singh"
copyright = "Copyright © 2023, Navjot Singh; all rights reserved."
paginate = 3
enableInlineShortcodes = true
# needed to render raw HTML (e.g. , , , )
[markup] [markup.goldmark] [markup.goldmark.renderer] unsafe = true
[menu] [[menu.main]] identifier = "about" name = "About" url = "/about/" weight = 10
[taxonomies]
category = "categories"
tag = "tags"
series = "series"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Đây là một số cài đặt cơ bản để trang web hoạt động. Ở đây chúng tôi đã cấu hình trang web để hiển thị 3 bài đăng trên mỗi trang, hiển thị trang Giới thiệu dưới dạng mục menu và thiết lập danh mục, thẻ và chuỗi bài đăng. Chúng tôi cũng đã bật mã ngắn nội tuyến của Hugo và bật HTML thô cho kết xuất Goldmark Markdown. Bạn có thể tắt tính năng này nếu không muốn nhúng HTML thô vào bài đăng của mình.

Bước 8 - Xuất bản Hugo Site​

Để xây dựng và xuất bản trang web, chỉ cần chạy lệnh sau.
Mã:
$ sudo hugo
Bạn sẽ nhận được kết quả tương tự.
Mã:
Start building sites …
hugo v0.119.0-b84644c008e0dc2c4b67bd69cccf87a41a03937e+extended linux/amd64 BuildDate=2023-09-24T15:20:17Z VendorInfo=gohugoio | EN
-------------------+----- Pages | 7 Paginator pages | 0 Non-page files | 0 Static files | 11 Processed images | 0 Aliases | 3 Sitemaps | 1 Cleaned | 0
Total in 46 ms
Điều này tạo ra và xuất bản trang web tĩnh Hugo trong thư mục public. Đây là các tệp chúng ta cần chỉ định trong cấu hình Nginx để trang web hoạt động. Chạy lại lệnh sau khi thực hiện bất kỳ thay đổi nào và trang web của bạn sẽ được cập nhật ngay lập tức.

Bước 9 - Cài đặt SSL​

Trước khi tiến hành, chúng ta cần cài đặt công cụ Certbot và cài đặt chứng chỉ SSL cho tên miền của mình.

Để cài đặt Certbot, chúng ta sẽ sử dụng trình cài đặt gói Snapd. Snapd luôn có phiên bản ổn định mới nhất của Certbot và bạn nên sử dụng phiên bản đó.

Công cụ Snapd yêu cầu kho lưu trữ Epel để hoạt động.
Mã:
$ sudo dnf install epel-release -y
Chúng ta sẽ sử dụng Snapd để cài đặt Certbot. Cài đặt Snapd.
Mã:
$ sudo dnf install snapd -y
Kích hoạt và khởi động dịch vụ Snap.
Mã:
$ sudo systemctl enable snapd.socket --now
Tạo các liên kết cần thiết cho Snapd tới làm việc.
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Đảm bảo rằng phiên bản snapd của bạn được cập nhật. Đợi vài giây trước khi thực hiện các lệnh sau.
Mã:
$ sudo snap install core
$ sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy bằng cách tạo liên kết tượng trưng đến thư mục /usr/bin.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Xác minh cài đặt.
Mã:
$ certbot --version
certbot 2.7.3
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d hugo.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào /etc/letsencrypt/live/hugo.example.com thư mục trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra trình lập lịch gia hạn Certbot dịch vụ.
Mã:
$ sudo systemctl list-timers
Bạn sẽ thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
Wed 2023-10-29 10:00:17 UTC 57min left Wed 2023-10-18 08:49:39 UTC 12min ago dnf-makecache.timer dnf-makecache.service
Wed 2023-10-29 12:18:00 UTC 3h 15min left - - snap.certbot.renew.timer snap.certbot.renew.service
Thu 2023-10-30 00:00:00 UTC 14h left Wed 2023-10-18 08:10:08 UTC 52min ago logrotate.timer logrotate.service
Thực hiện chạy thử quy trình để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không.
Mã:
$ sudo certbot renew --dry-run
Nếu không thấy lỗi, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 10 - Cấu hình Nginx​

Tạo và mở tệp /etc/nginx/conf.d/hugo.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/hugo.conf
Dán mã sau vào Tệp hugo.conf. Thay thế tất cả các trường hợp của hugo.example.com bằng tên miền của bạn.
Mã:
## enforce HTTPS
server { listen 80; listen [::]:80; server_name hugo.example.com; return 301 https://$server_name$request_uri;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name hugo.example.com; root /home/navjot/hugo/howtoforge/public; index index.html access_log /var/log/nginx/hugo.access.log; error_log /var/log/nginx/hugo.error.log; client_max_body_size 20m; gzip on; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/hugo.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hugo.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/hugo.example.com/chain.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header X-Early-Data $tls1_3_early_data; location / { try_files $uri $uri/ =404; } # Media location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ { expires 30d; } # CSS and Js location ~* \.(css|js)$ { expires 7d; }
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default "";
}
Cấu hình trên sẽ chuyển hướng tất cả các yêu cầu HTTP sang HTTPS và sẽ đóng vai trò là proxy cho dịch vụ Hugo để phục vụ nó thông qua tên miền của bạn.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh Nginx của bạn cấu hình.
Mã:
$ sudo nginx -t
Nếu bạn không thấy lỗi nào, điều đó có nghĩa là bạn đã sẵn sàng. Tải lại máy chủ Nginx.
Mã:
$ sudo systemctl reload nginx

Bước 11 - Cấu hình SELinux​

Thay đổi ngữ cảnh bảo mật tệp cho OpenEMR.
Mã:
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/hugo/howtoforge/public(/.*)?"
Áp dụng chính sách.
Mã:
$ sudo restorecon -Rv /var/www/html/hugo/howtoforge/public/
Cho phép Nginx kết nối với mạng.
Mã:
$ sudo setsebool -P httpd_can_network_connect 1

Bước 12 - Chạy trang web​

Bây giờ, bạn có thể xác minh cài đặt của mình bằng cách mở https://hugo.example.com trong trình duyệt web của bạn. Bạn sẽ nhận được trang sau cho biết quá trình cài đặt thành công.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22399%22%3E%3C/svg%3E

Bước 13 - Cập nhật Hugo​

Việc cập nhật Hugo khá đơn giản. Tải xuống bản phát hành mới nhất từ trang GitHub của Hugo.
Mã:
$ cd /var/www/html/hugo
$ sudo wget https://github.com/gohugoio/hugo/releases/download/v0.119.0/hugo_extended_0.119.0_linux-amd64.tar.gz
Giải nén tệp lưu trữ.
Mã:
$ sudo tar -xzf hugo_extended_0.119.0_linux-amd64.tar.gz
Và thay thế tệp nhị phân Hugo bằng phiên bản mới nhất. Cờ -f ghi đè lên tệp nhị phân mà không cần nhắc nhở. Bạn có thể sử dụng cờ -i thay thế nếu bạn muốn nhắc nhở ghi đè.
Mã:
$ sudo mv -f hugo /usr/bin/hugo
Vậy là xong. Việc cập nhật Hugo cũng đơn giản như việc thay thế tệp nhị phân.

Bước 14 - Sao lưu và khôi phục Hugo​

Để sao lưu, hãy tạo một kho lưu trữ toàn bộ thư mục Hugo.
Mã:
$ cd /var/www/html/hugo
$ sudo tar -czvf howtoforge.tar.gz howtoforge/
Để khôi phục trên máy chủ mới, hãy giải nén kho lưu trữ và cài đặt tệp nhị phân, vậy là bạn đã sẵn sàng go.
Mã:
$ cd /var/www/html/hugo
$ sudo tar -xzf howtoforge.tar.gz

Kết luận​

Đây là phần kết thúc hướng dẫn của chúng tôi về cách thiết lập trình tạo trang web tĩnh Hugo trên máy chủ Rocky Linux 9 của bạn bằng Nginx. Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, hãy chia sẻ chúng trong phần bình luận bên dưới.
 
Back
Bên trên