웹사이트 검색

Fedora 30에서 Nginx와 함께 Grav CMS를 설치하는 방법


이 페이지에서

  1. 요구 사항\n
  2. 전제 조건
  3. 초기 단계
  4. 1단계 - PHP 및 필요한 PHP 확장 설치\n
  5. 2단계 - acme.sh 클라이언트 설치 및 Lets Encrypt 인증서 획득(선택 사항)\n
  6. 3단계 - NGINX 설치 및 구성
  7. 4단계 - Grav CMS 설치
  8. 5단계 - Grav 설정 완료
  9. 링크

Grav는 빠르고 간단하며 유연한 파일 기반 CMS 플랫폼입니다. Grav는 플러그인과 테마의 간단한 설치 및 업그레이드는 물론 Grav 자체의 간단한 업데이트를 허용하는 강력한 패키지 관리 시스템과 함께 제공됩니다.

Grav의 기본 아키텍처는 Grav가 사용하기 쉽고 확장하기 쉽도록 잘 정립된 동급 최고의 기술을 사용하도록 설계되었습니다. 이러한 핵심 기술 중 일부는 다음과 같습니다.

  • Twig 템플릿: 강력한 사용자 인터페이스 제어용\n
  • Markdown: 손쉬운 콘텐츠 생성
  • YAML: 간단한 구성용\n
  • Parsedown: 빠른 마크다운 및 마크다운 추가 지원
  • Doctrine Cache: 성능 계층
  • 간단한 종속성 주입 컨테이너: 확장성 및 유지 관리용\n
  • Symfony Event Dispatcher: 플러그인 이벤트 처리용\n
  • Symfony Console: CLI 인터페이스용
  • Gregwar 이미지 라이브러리: 동적 이미지 조작용

이 튜토리얼에서는 NGINX를 웹 서버로 사용하여 Fedora 30 시스템에서 Grav CMS 설치 및 설정을 진행하고 선택적으로 SSL 지원을 추가하기 위해 Acme.sh 클라이언트 및 Lets Encrypt 인증 기관을 사용하여 전송 계층을 보호할 수 있습니다. .

요구 사항

Grav는 의도적으로 요구 사항이 거의 없도록 설계되었습니다. Grav는 콘텐츠용 일반 텍스트 파일로 제작되었습니다. 데이터베이스가 필요하지 않습니다.

시스템이 다음 요구사항을 충족하는지 확인하세요.

  • 웹 서버(Apache, Nginx, LiteSpeed, Lightly, IIS 등) NGINX를 사용합니다.\n
  • PHP 버전 7.1.3 이상

전제 조건

  • Fedora 30을 실행하는 운영 체제.\n
  • sudo 권한이 있는 루트가 아닌 사용자.\n

초기 단계

Fedora 버전 확인:

cat /etc/fedora-release
#

시간대 설정:

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

운영 체제 패키지(소프트웨어)를 업데이트합니다. 이는 운영 체제 기본 소프트웨어 패키지에 대한 최신 업데이트 및 보안 수정 사항이 있는지 확인하기 때문에 중요한 첫 번째 단계입니다.

sudo dnf update -y

Fedora 운영 체제의 기본 관리에 필요한 몇 가지 필수 패키지를 설치합니다.

sudo dnf install -y curl wget vim git unzip socat bash-completion epel-release

1단계 - PHP 및 필요한 PHP 확장 설치

PHP와 필수 PHP 확장을 설치합니다.

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

모듈로 컴파일된 PHP를 표시하려면 다음을 실행할 수 있습니다.

php -m

ctype
curl
exif
fileinfo
. . .
. . .

PHP 버전 확인:

php --version

# PHP 7.3.17 (cli) (built: May 13 2019 18:03:04) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
# with Zend OPcache v7.2.17, Copyright (c) 1999-2018, by Zend Technologies

PHP-FPM 서비스 시작 및 활성화:

sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service

2단계 - acme.sh 클라이언트 설치 및 Lets Encrypt 인증서 획득(선택 사항)

HTTPS로 포럼을 보호할 필요는 없지만 사이트 트래픽을 보호하는 것이 좋습니다. Lets Encrypt에서 TLS 인증서를 얻기 위해 Acme.sh 클라이언트를 사용합니다. Acme.sh는 종속성이 없는 Lets Encrypt에서 TLS 인증서를 얻기 위한 간단한 UNIX 셸 소프트웨어입니다.

acme.sh를 다운로드하고 설치합니다.

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail
source ~/.bashrc
cd ~

acme.sh 버전 확인:

acme.sh --version
# v2.8.2

도메인/호스트 이름에 대한 RSA 및 ECC/ECDSA 인증서 받기:<br>

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

테스트를 위해 가짜 인증서를 원하는 경우 위 명령에 --staging 플래그를 추가할 수 있습니다.

위 명령어를 실행하면 인증서가 다음 위치에 있게 됩니다.

  • RSA의 경우: /home/username/example.com 디렉토리.
  • ECC/ECDSA의 경우: /home/username/example.com_ecc 디렉터리.

발급된 인증서를 나열하려면 다음을 실행할 수 있습니다.

acme.sh --list

인증서를 저장할 디렉터리를 만듭니다. /etc/letsencrypt 디렉토리를 사용합니다.

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

인증서를 /etc/letsencrypt 디렉터리에 설치/복사합니다.

# 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"

모든 인증서는 60일마다 자동으로 갱신됩니다.

인증서를 얻은 후 루트 사용자에서 종료하고 일반 sudo 사용자로 돌아갑니다.

exit

3단계 - NGINX 설치 및 구성

NGINX 설치:

sudo dnf install -y nginx

NGINX 버전 확인:

nginx -v
# nginx version: nginx/1.14.2

NGINX 서비스 시작 및 사용 설정:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Grav용 NGINX를 구성합니다. sudo vim /etc/nginx/conf.d/grav.conf를 실행하고 다음 구성을 추가합니다.

server {
  
  listen 80;
  listen 443 ssl;
server_name example.com; root /var/www/grav;
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
index index.html index.php; location / { try_files $uri $uri/ /index.php?$query_string; } location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; } location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; } location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; } location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; } location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; } }

구문 오류에 대한 NGINX 구성 확인:

sudo nginx -t

NGINX 서비스 다시 로드:

sudo systemctl reload nginx.service

4단계 - Grav CMS 설치

문서 루트 디렉터리를 만듭니다.

sudo mkdir -p /var/www/grav

/var/www/grav 디렉토리의 소유권을 현재 로그인한 사용자로 변경합니다. 제 경우 사용자는 johndoe:입니다.

sudo chown -R johndoe:johndoe /var/www/grav

문서 루트 폴더로 이동합니다.

cd /var/www/grav

Grav 다운로드 및 압축 해제:

wget https://getgrav.org/download/core/grav-admin/1.6.9
unzip 1.6.9
mv grav-admin/* . && mv grav-admin/.* .
rm -rf grav-admin 1.6.9

참고: 버전 1.6.9는 현재 버전이며 이 문서를 읽는 시점에는 다를 수 있습니다. 최신 정보는 Grav 웹사이트를 확인하세요.

/var/www/grav 디렉토리의 소유권을 nginx:로 변경합니다.

sudo chown -R nginx:nginx /var/www/grav

sudo vim /etc/php-fpm.d/www.conf를 실행하고 사용자 및 그룹을 nginx로 설정합니다. 처음에는 사용자 및 그룹 apache:로 설정됩니다.

sudo vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx

PHP-FPM 서비스를 다시 시작하십시오.

sudo systemctl restart php-fpm.service

/var/lib/php/session/ 디렉토리를 만들고 소유권을 nginx:로 변경합니다.

sudo mkdir -p /var/lib/php/session/ && sudo chown -R nginx:nginx /var/lib/php/session/

웹 브라우저에서 http://example.com을 열고 화면의 지시를 따릅니다. Grav 관리자에 액세스하려면 URL에 /admin을 추가합니다.

5단계 - Grav 설정 완료

Grav 관리 사용자를 만듭니다.

생성 후 관리 대시보드로 리디렉션됩니다.

연결

  • https://getgrav.org/
  • https://github.com/getgrav/grav