CMS 설치 · 15 min read · Oct 23, 2025
Debian 12에 Craft CMS 설치하는 방법

Craft CMS는 모든 종류의 웹사이트를 만들기 위한 오픈 소스 콘텐츠 관리 시스템입니다. 보안성과 확장성이 뛰어난 CMS로, 광범위한 플러그인 생태계와 고품질의 무료 및 유료 플러그인을 제공합니다. 콘텐츠 생성 및 관리 작업을 위한 직관적이고 사용자 친화적인 제어판을 갖추고 있습니다. Yii PHP 프레임워크를 기반으로 구축되었으며, Twig 템플릿 엔진이 템플릿 시스템을 지원합니다. MySQL 및 PostgreSQL 데이터베이스와 함께 작동할 수 있으며, Redis 데이터베이스를 캐싱 및 세션 저장소로 사용합니다.
이 튜토리얼에서는 Debian 12 서버에 Craft CMS를 설치하는 방법을 배우게 됩니다. 또한 Redis를 활성화하여 함께 작동하는 방법과 Craft CMS를 사용하여 만든 사이트를 백업하고 복원하는 방법도 배웁니다.
필수 조건
- 최소 1GB의 RAM을 갖춘 Debian 12를 실행하는 서버.
- sudo 권한이 있는 비루트 사용자.
- 간단한 방화벽(UFW)이 활성화되어 실행 중입니다.
- 서버를 가리키는
craftcms.example.com과 같은 완전한 도메인 이름(FQDN). - Amazon SES 또는 Mailgun과 같은 이메일 서비스의 SMTP 계정.
- 모든 것이 업데이트되어 있습니다.
$ sudo apt update && sudo apt upgrade - 튜토리얼과 Craft CMS가 실행되기 위해 필요한 몇 가지 필수 패키지가 필요합니다. 이 중 일부는 이미 서버에 있을 수 있습니다.
$ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y
1단계 - 방화벽 구성
패키지를 설치하기 전에 첫 번째 단계는 HTTP 및 HTTPS 연결을 허용하도록 방화벽을 구성하는 것입니다.
방화벽 상태를 확인합니다.
$ sudo ufw status다음과 같은 내용이 표시되어야 합니다.
상태: 활성
허용된 액션
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)HTTP 및 HTTPS 포트를 허용합니다.
$ sudo ufw allow http
$ sudo ufw allow https확인을 위해 상태를 다시 확인합니다.
$ sudo ufw status
상태: 활성
허용된 액션
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)2단계 - Nginx 설치
Debian 12는 이전 버전의 Nginx를 포함하고 있습니다. 최신 버전을 설치하려면 공식 Nginx 저장소를 다운로드해야 합니다.
Nginx의 서명 키를 가져옵니다.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/nullNginx의 안정적인 버전을 위한 저장소를 추가합니다.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list시스템 저장소를 업데이트합니다.
$ sudo apt updateNginx를 설치합니다.
$ sudo apt install nginx설치를 확인합니다. Debian 시스템에서는 다음 명령이 sudo와 함께만 작동합니다.
$ sudo nginx -v
nginx version: nginx/1.24.0Nginx 서버를 시작합니다.
$ sudo systemctl start nginx서비스 상태를 확인합니다.
$ sudo systemctl status nginx
? nginx.service - nginx - 고성능 웹 서버
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Fri 2023-12-01 09:46:46 UTC; 18s ago
Docs: https://nginx.org/en/docs/
Process: 39483 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 39484 (nginx)
Tasks: 2 (limit: 2315)
Memory: 1.7M
CPU: 6ms
CGroup: /system.slice/nginx.service
??39484 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??39485 "nginx: worker process"3단계 - PHP 및 확장 설치
Debian 12는 기본적으로 PHP 8.2를 포함하고 있습니다. 다음 명령을 실행하여 Craft CMS에 필요한 확장과 함께 설치할 수 있습니다.
$ sudo apt install php php-cli php-common php-json php-gmp php-fpm php-xmlrpc php-bcmath php-imagick php-curl php-zip php-gd php-mysql php-xml php-mbstring php-xmlrpc php-intl php-pgsql최신 버전의 PHP를 항상 유지하거나 여러 버전의 PHP를 설치하려면 Ondrej의 PHP 저장소를 추가합니다.
먼저, Sury의 repo PHP GPG 키를 가져옵니다.
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpgOndrej Sury의 PHP 저장소를 추가합니다.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'시스템 저장소 목록을 업데이트합니다.
$ sudo apt update아마도 보류 중인 업그레이드에 대한 정보를 받을 것입니다. 이를 실행합니다.
$ sudo apt upgradePHP 및 그 확장을 설치합니다.
$ sudo apt install php8.2 php8.2-cli php8.2-common php8.2-gmp php8.2-fpm php8.2-xmlrpc php8.2-bcmath php8.2-imagick php8.2-curl php8.2-zip php8.2-gd php8.2-mysql php8.2-xml php8.2-mbstring php8.2-xmlrpc php8.2-intl php8.2-pgsql설치된 PHP 버전을 확인합니다.
$ php --version
PHP 8.2.13 (cli) (built: Nov 24 2023 13:10:42) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies
with Zend OPcache v8.2.13, Copyright (c), by Zend TechnologiesPHP 서비스 상태를 확인합니다.
$ sudo systemctl status php8.2-fpm
? php8.2-fpm.service - PHP 8.2 FastCGI 프로세스 관리자
Loaded: loaded (/lib/systemd/system/php8.2-fpm.service; enabled; preset: enabled)
Active: active (running) since Fri 2023-12-01 10:29:53 UTC; 34min ago
Docs: man:php-fpm8.2(8)
Process: 65825 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.2/fpm/pool.d/www.conf 82 (code=exited, status=0/SUCCESS)
Main PID: 65821 (php-fpm8.2)
Status: "활성 프로세스: 0, 유휴: 3, 요청: 208, 느림: 0, 트래픽: 0.2req/sec"
Tasks: 4 (limit: 2315)
Memory: 83.4M
CPU: 6.456s
CGroup: /system.slice/php8.2-fpm.service
??65821 "php-fpm: master process (/etc/php/8.2/fpm/php-fpm.conf)"
??65823 "php-fpm: pool www"
??65824 "php-fpm: pool www"
??65843 "php-fpm: pool www"4단계 - PHP-FPM 구성
php.ini를 편집하기 위해 엽니다.
$ sudo nano /etc/php/8.2/fpm/php.ini파일 업로드 크기를 설정하려면 upload_max_filesize 및 post_max_size 변수의 값을 변경합니다. 이 값은 Craft CMS에 업로드할 수 있는 파일 크기를 결정합니다. 우리의 목적을 위해 128MB로 설정하고 있습니다. 원하는 대로 설정할 수 있습니다.
$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 128M/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 128M/' /etc/php/8.2/fpm/php.ini서버 리소스 및 요구 사항에 따라 PHP의 메모리 제한을 구성합니다.
$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini/etc/php/8.2/fpm/pool.d/www.conf 파일을 엽니다.
$ sudo nano /etc/php/8.2/fpm/pool.d/www.confPHP 프로세스의 Unix 사용자/그룹을 nginx로 설정해야 합니다. 파일에서 user=www-data 및 group=www-data 줄을 찾아 nginx로 변경합니다.
...
; 프로세스의 Unix 사용자/그룹
; 주의: 사용자는 필수입니다. 그룹이 설정되지 않으면 기본 사용자의 그룹이 사용됩니다.
; 사용됩니다.
user = nginx
group = nginx
...또한 파일에서 listen.owner=www-data 및 listen.group=www-data 줄을 찾아 nginx로 변경합니다.
listen.owner = nginx
listen.group = nginxCtrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력합니다.
PHP-fpm 프로세스를 재시작합니다. PHP 서비스를 재시작하기 전에 Nginx가 설치되어 있는지 확인하십시오. 그렇지 않으면 nginx 그룹을 찾을 수 없기 때문에 실패합니다.
$ sudo systemctl restart php8.2-fpm5단계 - Composer 설치
Composer는 PHP의 종속성 관리자로 작동합니다. 또한 Craft CMS를 지원하는 Laravel PHP 프레임워크의 종속성 관리자가 됩니다.
Composer 설치 스크립트를 다운로드합니다.
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"다운로드한 설치 프로그램을 확인합니다.
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo '설치 프로그램 확인됨'; } else { echo '설치 프로그램 손상됨'; unlink('composer-setup.php'); } echo PHP_EOL;"다음과 같은 출력을 받게 됩니다.
설치 프로그램 확인됨최신 버전의 Composer를 다운로드하기 위해 설치 스크립트를 실행합니다.
$ php composer-setup.php설치 스크립트를 제거합니다.
$ php -r "unlink('composer-setup.php');"다운로드한 바이너리 파일을 /usr/local/bin 디렉토리로 이동합니다.
$ sudo mv composer.phar /usr/local/bin/composer설치를 확인합니다.
$ composer --version
Composer version 2.6.5 2023-10-06 10:11:526단계 - PostgreSQL 설치 및 구성
Debian 12는 기본적으로 PostgreSQL 15를 포함하고 있습니다. 대신 PostgreSQL 16을 사용할 것입니다.
다음 명령을 실행하여 PostgreSQL GPG 키를 추가합니다.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/nullAPT 저장소를 소스 목록에 추가합니다.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'시스템 저장소를 업데이트합니다.
$ sudo apt update이제 다음 명령을 사용하여 PostgreSQL을 설치할 수 있습니다.
$ sudo apt install postgresql postgresql-contribpostgresql-contrib 패키지에는 몇 가지 추가 유틸리티가 포함되어 있습니다.
버전을 확인합니다.
$ psql --version
psql (PostgreSQL) 16.1 (Debian 16.1-1.pgdg120+1)PostgreSQL 서비스 상태를 확인합니다.
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Wed 2023-11-29 05:54:03 UTC; 11s ago
Main PID: 20170 (code=exited, status=0/SUCCESS)
CPU: 1ms
Nov 29 05:54:03 craftcms systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Nov 29 05:54:03 craftcms systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.서비스가 기본적으로 활성화되어 실행 중임을 확인할 수 있습니다.
PostgreSQL 셸을 시작합니다.
$ sudo -i -u postgres psqlCraft CMS 데이터베이스를 생성합니다.
postgres=# CREATE DATABASE craftcms;Craft CMS 사용자를 생성하고 강력한 비밀번호를 선택합니다.
postgres-# CREATE USER craftuser WITH PASSWORD 'Your_Password';데이터베이스 소유자를 Craft CMS 사용자로 변경합니다.
postgres-# ALTER DATABASE craftcms OWNER TO craftuser;Craft CMS 사용자에게 데이터베이스에 대한 모든 권한을 부여합니다.
postgres-# GRANT ALL PRIVILEGES ON DATABASE craftcms TO craftuser;셸을 종료합니다.
postgres-# \q자격 증명이 작동하는지 확인합니다.
$ psql --username craftuser --password --host localhost craftcms
Password:
psql (16.1 (Debian 16.1-1.pgdg120+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.
craftcms=>셸을 종료하려면 \q를 입력합니다.
7단계 - Redis 설치 및 구성
Debian 12는 기본적으로 Redis 7.0을 포함하고 있으며, 이것을 사용할 것입니다. Redis를 설치합니다.
$ sudo apt install redis버전을 확인합니다.
$ redis-server --version
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=c4e7f6bf175a885b최신 버전을 설치하려면 Redis의 공식 저장소를 사용하여 다음 명령을 실행할 수 있습니다.
$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
$ sudo apt update
$ sudo apt install redis다음 단계는 Redis 서버에 인증을 추가하는 것입니다. Redis v6.0부터 인증을 추가하는 가장 좋은 방법은 ACL(Access Control Lists)을 사용하는 것입니다. /etc/redis/redis.conf 파일을 편집하기 위해 엽니다.
$ sudo nano /etc/redis/redis.conf# aclfile /etc/redis/users.acl 항목을 찾아 해시(#)를 제거하여 주석을 해제합니다.
aclfile /etc/redis/users.aclCtrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력합니다.
다음으로 /etc/redis/users.acl 파일을 생성하고 편집하기 위해 엽니다.
$ sudo nano /etc/redis/users.acl다음 줄을 추가합니다.
user navjot on +@all ~* >yourpasswordCtrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력합니다.
Redis 서버를 재시작하여 변경 사항을 적용합니다.
$ sudo systemctl restart redisRedis 셸을 엽니다.
$ redis-cliPING 명령을 사용합니다. 인증 오류가 발생합니다.
127.0.0.1:6379> PING
(error) NOAUTH Authentication required.AUTH 명령을 사용하여 로그인합니다.
127.0.0.1:6379> AUTH navjot yourpassword
OK다시 PING 명령을 사용합니다.
127.0.0.1:6379> PING
OK셸을 종료합니다.
127.0.0.1:6379> exitPHP Redis 확장도 설치해야 합니다.
$ sudo apt install php-redis8단계 - Craft CMS 설치
Craft CMS를 설치하기 전에 다음 명령을 사용하여 실행할 수 있는 모든 서버 요구 사항을 확인할 수 있습니다.
$ curl -Lsf https://raw.githubusercontent.com/craftcms/server-check/HEAD/check.sh | bash다음과 같은 출력을 받게 됩니다.
Craft 서버 검사 실행 중...
Craft CMS 요구 사항 검사기
이 스크립트는 웹 서버 구성이 Craft CMS 설치를 실행하기 위한 요구 사항을 충족하는지 확인합니다.
서버가 올바른 버전의 PHP를 실행하고 있는지, 적절한 PHP 확장이 로드되었는지, php.ini 파일 설정이 올바른지 확인합니다.
결과:
--------
PHP 8.2+: OK
BCMath 확장: OK
ctype 확장: OK
cURL 확장: OK
DOM 확장: OK
Fileinfo 확장: OK
GD 확장 또는 ImageMagick 확장: OK
iconv 확장: OK
Intl 확장: OK
JSON 확장: OK
다중 바이트 문자열 확장(함수 오버로딩 비활성화): OK
OPcache 확장(주석 저장): OK
OpenSSL 확장: OK
PCRE 확장(UTF-8 지원): OK
PDO 확장: OK
Reflection 확장: OK
SPL 확장: OK
Zip 확장: OK
ignore_user_abort(): OK
password_hash(): OK
proc_close(): OK
proc_get_status(): OK
proc_open(): OK
proc_terminate(): OK
allow_url_fopen: OK
ini_set 호출: OK
메모리 제한: OK
------------------------------------------
오류: 0 경고: 0 총 검사: 27모든 것이 괜찮다면 진행할 수 있습니다. 웹 루트 디렉토리를 생성합니다.
$ sudo mkdir /var/www/html/craftcms -p현재 로그인한 사용자를 이 디렉토리의 소유자로 설정합니다.
$ sudo chown -R $USER:$USER /var/www/html/craftcms디렉토리로 이동합니다.
$ cd /var/www/html/craftcmsComposer를 사용하여 Craft CMS를 다운로드하고 설치합니다. 명령 끝의 점(.)은 현재 디렉토리에서 설치가 수행되어야 함을 의미합니다.
$ composer create-project craftcms/craft .설치 중에 데이터베이스, 관리자 계정, 사이트 URL 및 언어와 관련된 여러 세부정보를 요청받게 됩니다. 아래와 같이 표시됩니다.
> @php craft setup/welcome
______ .______ ___ _______ .___________.
/ || _ \ / \ | ____|| |
| ,----'| |_) | / ^ \ | |__ `---| |----`
| | | / / /_\ \ | __| | |
| `----.| |\ \----./ _____ \ | | | |
\______|| _| `._____/__/ \__\ |__| |__|
A N E W I N S T A L L
______ .___ ___. _______.
/ || \/ | / |
| ,----'| \ / | | (----`
| | | |\/| | \ \
| `----.| | | | .----) |
\______||__| |__| |_______|
애플리케이션 ID 생성 중 ... 완료 (CraftCMS--923f03f1-9bea-4c3d-a7ca-1466645ce75d)
보안 키 생성 중 ... 완료 (iMdcUi6wQyf9MshEda__vZcCwILbclxz)
Craft CMS에 오신 것을 환영합니다!
설정을 시작할 준비가 되셨습니까? (yes|no) [no]:yes
어떤 데이터베이스 드라이버를 사용하고 있습니까? (mysql 또는 pgsql) [mysql] pgsql
데이터베이스 서버 이름 또는 IP 주소: [127.0.0.1]
데이터베이스 포트: [5432]
데이터베이스 사용자 이름: [root] craftuser
데이터베이스 비밀번호:
데이터베이스 이름: craftcms
데이터베이스 테이블 접두사:
데이터베이스 자격 증명 테스트 중 ... 성공!
기본 스키마 "public" 사용 중.
데이터베이스 자격 증명을 .env 파일에 저장 중 ... 완료
지금 Craft를 설치하시겠습니까? (yes|no) [yes]:yes
사용자 이름: [admin] navjot
이메일: [email protected]
비밀번호:
확인:
사이트 이름: Howtoforge Tutorials
사이트 URL: https://craftcms.example.com
사이트 언어: [en-US]
*** Craft 설치 중Redis를 Craft CMS와 함께 작동하게 만들기
yiisoft/yii2-redis 패키지를 설치합니다.
$ composer require --prefer-dist yiisoft/yii2-redis:"~2.0.0"/var/www/html/craftcms/config/app.php 파일을 편집하기 위해 엽니다.
$ nano config/app.php다음과 같은 내용을 보게 됩니다.
use craft\helpers\App;
return [
'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
];다음과 같이 변경합니다.
use craft\helpers\App;
return [
'id' => App::env('CRAFT_APP_ID') ?: 'CraftCMS',
'components' => [
'cache' => function() {
$config = [
'class' => yii\redis\Cache::class,
'keyPrefix' => Craft::$app->id,
'defaultDuration' => Craft::$app->config->general->cacheDuration,
// 전체 Redis 연결 세부정보:
'redis' => [
'hostname' => App::env('REDIS_HOSTNAME') ?: 'localhost',
'port' => 6379,
'username' => App::env('REDIS_USERNAME') ?: null,
'password' => App::env('REDIS_PASSWORD') ?: null,
],
];
return Craft::createObject($config);
},
],
];Ctrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력합니다. 이렇게 하면 Craft CMS의 캐시 저장소로 Redis가 활성화됩니다. Redis를 PHP 세션 데이터, 작업 큐 및 뮤텍스 드라이버를 저장하는 데 사용할 수도 있습니다. 이에 대한 구성은 Craft CMS 문서에서 확인할 수 있습니다.
또한 .env 파일에 Redis 구성을 추가해야 합니다.
$ nano .env파일 끝에 다음 코드를 추가합니다.
REDIS_HOSTNAME=localhost
REDIS_USERNAME=navjot
REDIS_PASSWORD=yourpassword위와 같이 옵션을 선택합니다. 완료되면 디렉토리의 그룹을 nginx로 변경합니다. 이렇게 하면 현재 로그인한 사용자와 Nginx가 Craft CMS에 접근할 수 있습니다.
$ sudo chgrp -R nginx /var/www/html/craftcmsnginx 그룹에 디렉토리에 대한 쓰기 권한을 부여합니다.
$ sudo chmod -R g+w /var/www/html/craftcms이후로는 다시 권한을 변경할 필요가 없으며 루트 권한 없이 모든 작업을 수행할 수 있습니다.
9단계 - SSL 설치
SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. Debian의 저장소를 사용하여 Certbot을 설치하거나 Snapd 도구를 사용하여 최신 버전을 가져올 수 있습니다. 우리는 Snapd 버전을 사용할 것입니다.
Debian 12는 Snapd가 설치되어 있지 않습니다. Snapd 패키지를 설치합니다.
$ sudo apt install snapd다음 명령을 실행하여 Snapd 버전이 최신인지 확인합니다.
$ sudo snap install core && sudo snap refresh coreCertbot을 설치합니다.
$ sudo snap install --classic certbot다음 명령을 사용하여 Certbot 명령이 /usr/bin 디렉토리에 대한 심볼릭 링크를 생성하여 실행될 수 있도록 합니다.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbotCertbot이 제대로 작동하는지 확인합니다.
$ certbot --version
certbot 2.7.4다음 명령을 실행하여 SSL 인증서를 생성합니다.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d craftcms.example.com위 명령은 서버의 /etc/letsencrypt/live/craftcms.example.com 디렉토리에 인증서를 다운로드합니다.
Diffie-Hellman 그룹 인증서를 생성합니다.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096Certbot 갱신 스케줄러 서비스를 확인합니다.
$ sudo systemctl list-timerssnap.certbot.renew.service가 실행될 서비스 중 하나로 표시됩니다.
NEXT LEFT LAST PASSED UNIT ACTIVATES
---------------------------------------------------------------------------------------------------------------------------
Fri 2023-12-01 10:39:00 UTC 12min left Fri 2023-12-01 10:09:01 UTC 17min ago phpsessionclean.timer phpsessionclean.service
Fri 2023-12-01 17:01:47 UTC 6h left Thu 2023-11-30 17:01:47 UTC 17h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2023-12-01 18:34:00 UTC 8h left - - snap.certbot.renew.timer snap.certbot.renew.serviceSSL 갱신이 잘 작동하는지 확인하기 위해 프로세스를 드라이 런으로 실행합니다.
$ sudo certbot renew --dry-run오류가 없으면 모든 준비가 완료된 것입니다. 인증서는 자동으로 갱신됩니다.
10단계 - Nginx 구성
/etc/nginx/nginx.conf 파일을 편집하기 위해 엽니다.
$ sudo nano /etc/nginx/nginx.confinclude /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.
server_names_hash_bucket_size 64;Ctrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력합니다.
/etc/nginx/conf.d/craftcms.conf 파일을 생성하고 편집하기 위해 엽니다.
$ sudo nano /etc/nginx/conf.d/craftcms.conf다음 코드를 붙여넣습니다. craftcms.example.com을 도메인 이름으로 바꾸십시오. client_max_body_size 값이 PHP를 구성할 때 설정한 128MB로 설정되어 있는지 확인합니다.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name craftcms.example.com;
root /var/www/html/craftcms/web;
index index.php;
client_max_body_size 128M;
access_log /var/log/nginx/craftcms.access.log;
error_log /var/log/nginx/craftcms.error.log;
ssl_certificate /etc/letsencrypt/live/craftcms.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/craftcms.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/craftcms.example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
try_files $uri/index.html $uri $uri/ /index.php?$query_string;
}
location ~ [^/]\.php(/|$) {
try_files $uri $uri/ /index.php?$query_string;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_keep_conn on;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTP_PROXY "";
}
}
# HTTPS 강제 적용
server {
listen 80;
listen [::]:80;
server_name craftcms.example.com;
return 301 https://$host$request_uri;
}Ctrl + X를 눌러 파일을 저장하고, 프롬프트가 나타나면 Y를 입력합니다.
Nginx 구성을 확인합니다.
$ sudo nginx -tNginx 서버를 재시작합니다.
$ sudo systemctl restart nginx11단계 - Craft CMS 접근
브라우저에서 https://craftcms.example.com URL을 열면 다음 페이지로 이동합니다.

관리 페이지에 접근하려면 https://craftcms.example.com/admin URL을 방문하면 로그인 페이지로 이동합니다.

관리 자격 증명을 입력하고 로그인 버튼을 클릭하여 로그인합니다. 다음 대시보드로 이동합니다.

이제 Craft CMS를 사용하여 웹사이트를 구축할 수 있습니다.
12단계 - Craft CMS 백업 및 복원
관리 패널 내에서 관리 대시보드 >> 유틸리티 >> 데이터베이스 백업을 방문하여 Craft CMS의 데이터베이스를 백업할 수 있습니다.

백업 버튼을 클릭하여 데이터베이스 백업을 다운로드합니다. 터미널을 사용하여 백업을 생성할 수도 있습니다. 다음 명령을 실행하여 백업을 생성합니다. 프롬프트가 나타나면 비밀번호를 입력합니다.
$ mysqldump -u craftcmsuser -p craftcms > ~/craftcms.database.sqlCraft CMS 명령줄 유틸리티를 사용하여 데이터베이스 백업을 생성할 수도 있습니다. 이 유틸리티의 장점은 데이터베이스 자격 증명을 전달할 필요가 없다는 것입니다. Craft CMS 명령 콘솔 유틸리티에 대해 자세히 알아보세요.
$ cd /var/www/html/craftcms
$ php craft db/backup ~/
백업 중 ... 완료
백업 파일: /home/navjot/howtoforge-tutorials--2023-12-03-065138--v4.5.11.1.sql (200.019 KB)위 명령에서 위치를 지정하지 않으면 백업 파일은 /var/www/html/craftcms/storage/backups 디렉토리에 작성됩니다.
파일을 백업하려면 /var/www/html/craftcms 폴더 전체를 복사하고 저장합니다.
$ cd /var/www/html
$ tar -zcf ~/craftcms.tar.gz craftcms새 서버에 복원하려면 파일을 /var/www/html 폴더로 추출합니다.
$ tar -xzf craftcms.tar.gz -C /var/www/html/새 서버에서 동일한 자격 증명으로 데이터베이스를 생성하고 다음 명령을 사용하여 데이터베이스를 복원합니다. 프롬프트가 나타나면 비밀번호를 입력합니다.
$ mysqlimport -u craftcmsuser -p craftcms craftcms.database.sql13단계 - Craft CMS 업데이트
Craft CMS를 업데이트하는 방법은 두 가지가 있습니다. 하나는 관리 패널 내에서입니다. 업데이트가 가능할 때 알림을 받게 됩니다. 알림을 클릭하여 업그레이드합니다. Craft CMS는 업데이트를 수행하기 전에 자동으로 데이터베이스를 백업합니다.
터미널을 통해 업데이트할 수도 있습니다.
사용 가능한 모든 업데이트를 확인하려면 다음 명령을 실행합니다.
$ cd /var/www/html/craftcms/
$ php craft update업데이트가 가능하면 다음 명령을 실행하여 적용합니다.
$ php craft update all결론
이로써 Debian 12 서버에 Craft CMS 소프트웨어를 설치하는 방법을 배운 튜토리얼이 마무리되었습니다. 질문이 있으시면 아래 댓글로 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.