Grav là một nền tảng CMS dựa trên tệp nhanh, đơn giản và linh hoạt. Grav đi kèm với một Hệ thống quản lý gói mạnh mẽ cho phép cài đặt và nâng cấp plugin và chủ đề một cách đơn giản, cũng như cập nhật Grav một cách đơn giản.
Kiến trúc cơ bản của Grav được thiết kế để sử dụng các công nghệ tốt nhất và đã được thiết lập tốt để đảm bảo Grav dễ sử dụng và dễ mở rộng. Một số công nghệ chính bao gồm:
Đảm bảo hệ thống của bạn đáp ứng các yêu cầu sau:
Thiết lập múi giờ:
Cập nhật các gói hệ điều hành (phần mềm) của bạn. Đây là bước đầu tiên quan trọng vì nó đảm bảo bạn có các bản cập nhật và bản sửa lỗi bảo mật mới nhất cho các gói phần mềm mặc định của hệ điều hành:
Cài đặt một số gói thiết yếu cần thiết cho việc quản trị cơ bản hệ điều hành Fedora:
Để hiển thị PHP đã biên dịch trong các mô-đun, bạn có thể chạy:
Kiểm tra phiên bản PHP:
Khởi động và kích hoạt dịch vụ PHP-FPM:
Tải xuống và cài đặt acme.sh:
Kiểm tra phiên bản acme.sh:
Lấy chứng chỉ RSA và ECC/ECDSA cho tên miền/tên máy chủ của bạn:
Nếu bạn muốn có chứng chỉ giả để thử nghiệm, bạn có thể thêm
Sau khi chạy các lệnh trên, chứng chỉvàkhóacủa bạn sẽ nằm trong:
Tạo một thư mục để lưu trữ các chứng chỉ của bạn. Chúng tôi sẽ sử dụng thư mục
Cài đặt/sao chép chứng chỉ vào /etc/letsencryptthư mục .
Tất cả các chứng chỉ đều được gia hạn tự động mỗi 60 ngày.
Sau khi lấy được chứng chỉ, hãy thoát khỏi người dùng root và quay lại người dùng sudo thông thường:
Kiểm tra phiên bản NGINX:
Khởi động và kích hoạt dịch vụ NGINX:
Cấu hình NGINX cho Grav. Chạy sudo vim /etc/nginx/conf.d/grav.conf[/ICODE] và thêm cấu hình sau.
Kiểm tra cấu hình NGINX để tìm lỗi cú pháp:
Tải lại dịch vụ NGINX:
Thay đổi quyền sở hữu thư mục
Điều hướng đến thư mục gốc của tài liệu:
Tải xuống và giải nén Grav:
LƯU Ý: Phiên bản 1.6.9 là phiên bản hiện tại và có thể khác vào thời điểm bạn đọc bài viết này. Vui lòng kiểm tra trang web Grav để biết thông tin mới nhất.
Thay đổi quyền sở hữu thư mục
Chạy
Khởi động lại dịch vụ PHP-FPM.
Tạo thư mục
Mở
Sau khi tạo, bạn sẽ được chuyển hướng đến bảng điều khiển quản trị:
Kiến trúc cơ bản của Grav được thiết kế để sử dụng các công nghệ tốt nhất và đã được thiết lập tốt để đảm bảo Grav dễ sử dụng và dễ mở rộng. Một số công nghệ chính bao gồm:
- Twig Templating: để kiểm soát giao diện người dùng mạnh mẽ
- Markdown: để tạo nội dung dễ dàng
- YAML: để cấu hình đơn giản
- Parsedown: để hỗ trợ Markdown và Markdown Extra nhanh chóng
- Doctrine Cache: lớp để tăng hiệu suất
- Simple Dependency Injection Container: để mở rộng và bảo trì
- Symfony Event Dispatcher: để xử lý sự kiện plugin
- Symfony Console: để giao diện CLI
- Gregwar Image Library: để thao tác hình ảnh động
Yêu cầu
Grav được thiết kế có chủ đích với một số yêu cầu ít ỏi. Grav được xây dựng bằng các tệp văn bản thuần túy cho nội dung của bạn. Không cần cơ sở dữ liệu.Đảm bảo hệ thống của bạn đáp ứng các yêu cầu sau:
- Máy chủ web (Apache, Nginx, LiteSpeed, Lightly, IIS, v.v.) Chúng tôi sẽ sử dụng NGINX.
- Phiên bản PHP 7.1.3 trở lên
Điều kiện tiên quyết
- Hệ điều hành chạy Fedora 30.
- Người dùng không phải root có quyền sudo.
Các bước ban đầu
Kiểm tra phiên bản Fedora của bạn:
Mã:
cat /etc/fedora-release
#
Mã:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Mã:
sudo dnf update -y
Mã:
sudo dnf install -y curl wget vim git unzip socat bash-completion epel-release
Bước 1 - Cài đặt PHP và các tiện ích mở rộng PHP cần thiết
Cài đặt PHP cũng như các tiện ích mở rộng PHP cần thiết:
Mã:
sudo dnf install -y php-cli php-fpm php-common php-curl php-gd php-json php-mbstring php-xml php-zip php-opcache php-pecl-apcu
Mã:
php -m
ctype
curl
exif
thông tin tệp
. . .
. . .
Mã:
php --version
#PHP 7.3.17 (cli) (xây dựng: 13 tháng 5 năm 2019 18:03:04) (NTS)
# Bản quyền (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Bản quyền (c) 1998-2018 Zend Technologies
# với Zend OPcache v7.2.17, Bản quyền (c) 1999-2018, của Zend Technologies
Mã:
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service
Bước 2 - Cài đặt acme.sh client và lấy chứng chỉ Let's Encrypt (tùy chọn)
Không nhất thiết phải bảo mật diễn đàn của bạn bằng HTTPS, nhưng đây là một biện pháp tốt để bảo mật lưu lượng truy cập trang web của bạn. Để lấy chứng chỉ TLS từ Let's Encrypt, chúng ta sẽ sử dụng Acme.sh client. Acme.sh là phần mềm shell UNIX đơn giản để lấy chứng chỉ TLS từ Let's Encrypt mà không cần phụ thuộc.Tải xuống và cài đặt acme.sh:
Mã:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [emailprotected]
source ~/.bashrc
cd ~
Mã:
acme.sh --version
# v2.8.2
Mã:
# RSA 2048
acme.sh --issue--standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
--staging
flag vào các lệnh trên.Sau khi chạy các lệnh trên, chứng chỉvàkhóacủa bạn sẽ nằm trong:
- Đối với RSA: thư mục
/home/username/example.com
. - Đối với ECC/ECDSA: thư mục
/home/username/example.com_ecc
.
Mã:
acme.sh --list
/etc/letsencrypt
.
Mã:
mkdir -p /etc/letsecnrypt/example.com
[ICODE]sudo mkdir -p /etc/letsencrypt/example.com_ecc
Mã:
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
Sau khi lấy được chứng chỉ, hãy thoát khỏi người dùng root và quay lại người dùng sudo thông thường:
Mã:
thoát
Bước 3 - Cài đặt và cấu hình NGINX
Cài đặt NGINX:
Mã:
sudo dnf install -y nginx
Mã:
nginx -v
#nginx version: nginx/1.14.2
Mã:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Mã:
server { listen 80; listen 443 ssl;
server_name example.com; gốc /var/www/grav;
chứng chỉ ssl /etc/letsencrypt/example.com/fullchain.pem;
khóa chứng chỉ ssl /etc/letsencrypt/example.com/private.key;
chứng chỉ ssl /etc/letsencrypt/example.com_ecc/fullchain.pem;
khóa chứng chỉ ssl /etc/letsencrypt/example.com_ecc/private.key;
chỉ mục index.html index.php; vị trí / { try_files $uri $uri/ /index.php?$query_string; } vị trí ~* /(\.git|bộ nhớ đệm|bin|nhật ký|sao lưu|kiểm tra)/.*$ { trả về 403; } vị trí ~* /(hệ thống|nhà cung cấp)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { trả về 403; } vị trí ~* /người dùng/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { trả về 403; } vị trí ~ /(GIẤY PHÉP\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { trả về 403; } vị trí ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; bao gồm fastcgi_params; fastcgi_param TÊN_TỆP_KẾ_CHỈNH $document_root/$fastcgi_script_name; }}
Mã:
sudo nginx -t
Mã:
sudo systemctl reload nginx.service
Bước 4 - Cài đặt Grav CMS
Tạo thư mục gốc của tài liệu:
Mã:
sudo mkdir -p /var/www/grav
/var/www/grav
thành người dùng mà bạn đang đăng nhập tại thời điểm này, trong trường hợp của tôi, người dùng làjohndoe:
Mã:
sudo chown -R johndoe:johndoe /var/www/grav
Mã:
cd /var/www/grav
Mã:
wget https://getgrav.org/download/core/grav-admin/1.6.9
giải nén 1.6.9
mv grav-admin/* . && mv grav-admin/.* .
rm -rf grav-admin 1.6.9
Thay đổi quyền sở hữu thư mục
/var/www/grav
thành nginx:
Mã:
sudo chown -R nginx:nginx /var/www/grav
sudo vim /etc/php-fpm.d/www.conf
và đặt người dùng và nhóm thành nginx
. Ban đầu, nó được đặt thành người dùng và nhóm apache:
Mã:
sudo vim /etc/php-fpm.d/www.conf
Mã:
user = nginx
group = nginx
Mã:
sudo systemctl restart php-fpm.service
/var/lib/php/session/
và thay đổi quyền sở hữu thành nginx:
Mã:
sudo mkdir -p /var/lib/php/session/ && sudo chown -R nginx:nginx /var/lib/php/session/
http://example.com
trong trình duyệt web của bạn và làm theo hướng dẫn trên màn hình. Để truy cập Grav admin, hãy thêm /admin
vào URL của bạn.Bước 5 - Hoàn tất Gravsetup
Tạo người dùng quản trị Grav:Sau khi tạo, bạn sẽ được chuyển hướng đến bảng điều khiển quản trị: