How to install Craft CMS on Debian 12

To Install Craft CMS On Debian 12

Introduction:

Craft CMS is a popular content management system (CMS) that allows users to create and manage websites and digital experiences which is known for its flexibility, powerful features, and user-friendly interface. Craft CMS is developed by Pixel & Tonic, a software development company.

Installation Steps:

Step 1: Check the OS version by using the below command.

root@linuxhelp:~# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian		
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Step 2 : Update the system packages by using the below command.

root@linuxhelp:~# apt update -y
Hit:1 http://security.debian.org/debian-security bookworm-security InRelease
Hit:2 http://deb.debian.org/debian bookworm InRelease
Hit:3 http://deb.debian.org/debian bookworm-updates InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
131 packages can be upgraded. Run 'apt list --upgradable' to see them.

Step 3 : Create a user by using the below command.

root@linuxhelp:~# /usr/sbin/adduser craftcms
Adding user `craftcms' ...
Adding new group `craftcms' (1003) ...
Adding new user `craftcms' (1003) with group `craftcms (1003)' ...
Creating home directory `/home/craftcms' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for craftcms
Enter the new value, or press ENTER for the default
        Full Name []: craftcms
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
Adding new user `craftcms' to supplemental / extra groups `users' ...
Adding user `craftcms' to group `users' ...

Step 4: Make the sudo privileges to the user by using the below command.

root@linuxhelp:~# /usr/sbin/usermod -aG sudo craftcms

Step 5: Login the user by using the below command.

root@linuxhelp:~# su - craftcms

Step 6: Install the Nginx by using the below command.

craftcms@linuxhelp:~$ sudo apt install nginx
[sudo] password for craftcms:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libc-ares2 libgrpc++1.51 libgrpc29 libprotoc32 libre2-9
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  nginx-common
Suggested packages:
  fcgiwrap nginx-doc
The following NEW packages will be installed:
  nginx nginx-common
0 upgraded, 2 newly installed, 0 to remove and 131 not upgraded.
Need to get 640 kB of archives.
After this operation, 1,696 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian bookworm/main amd64 nginx-common all 1.22.1-9 [112 kB]
Get:2 http://deb.debian.org/debian bookworm/main amd64 nginx amd64 1.22.1-9 [527 kB]
Fetched 640 kB in 0s (1,815 kB/s)
Preconfiguring packages ...
Selecting previously unselected package nginx-common.
(Reading database ... 196520 files and directories currently installed.)
Preparing to unpack .../nginx-common_1.22.1-9_all.deb ...
Unpacking nginx-common (1.22.1-9) ...
Selecting previously unselected package nginx.
Preparing to unpack .../nginx_1.22.1-9_amd64.deb ...
Unpacking nginx (1.22.1-9) ...
Setting up nginx-common (1.22.1-9) ...
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.service.
Setting up nginx (1.22.1-9) ...
Upgrading binary: nginx.
Processing triggers for man-db (2.11.2-2) ...

Step 7: Start the Nginx by using the below command.

craftcms@linuxhelp:~$ sudo systemctl start nginx
[sudo] password for craftcms:

Step 8: Enable the Nginx by using the below command.

craftcms@linuxhelp:~$ sudo systemctl enable nginx
Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx

Step 9: Check the Status of Nginx by using the below command.

craftcms@linuxhelp:~$ sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-05-08 12:50:06 IST; 1h 0min ago
       Docs: man:nginx(8)
   Main PID: 4445 (nginx)
      Tasks: 5 (limit: 3408)
     Memory: 3.7M
        CPU: 111ms
     CGroup: /system.slice/nginx.service
             ├─4445 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ├─4447 "nginx: worker process"
             ├─4448 "nginx: worker process"
             ├─4449 "nginx: worker process"
             └─4450 "nginx: worker process"

May 08 12:50:06 linuxhelp systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
May 08 12:50:06 linuxhelp systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.

Step 10: Install the PHP and PHP extensions by using the below command.

craftcms@linuxhelp:~$ 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
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libc-ares2 libgrpc++1.51 libgrpc29 libprotoc32 libre2-9
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libapache2-mod-php8.2 libxmlrpc-epi0 libzip4 php8.2 php8.2-bcmath php8.2-cli php8.2-common php8.2-curl php8.2-fpm php8.2-gd php8.2-gmp php8.2-imagick php8.2-intl php8.2-mbstring php8.2-mysql
  php8.2-opcache php8.2-readline php8.2-xml php8.2-xmlrpc php8.2-zip
Suggested packages:
  php-pear
The following NEW packages will be installed:
  libapache2-mod-php8.2 libxmlrpc-epi0 libzip4 php php-bcmath php-cli php-common php-curl php-fpm php-gd php-gmp php-imagick php-intl php-json php-mbstring php-mysql php-xml php-xmlrpc php-zip
  php8.2 php8.2-bcmath php8.2-cli php8.2-common php8.2-curl php8.2-fpm php8.2-gd php8.2-gmp php8.2-imagick php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-readline php8.2-xml
  php8.2-xmlrpc php8.2-zip
0 upgraded, 36 newly installed, 0 to remove and 131 not upgraded.
Need to get 7,438 kB of archives.
After this operation, 31.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://deb.debian.org/debian bookworm/main amd64 php-common all 2:93 [13.1 kB]
Get:2 http://security.debian.org/debian-security bookworm-security/main amd64 php8.2-common amd64 8.2.18-1~deb12u1 [678 kB]
Get:3 http://deb.debian.org/debian bookworm/main amd64 php8.2-imagick amd64 3.7.0-4 [98.4 kB]
Get:4 http://deb.debian.org/debian bookworm/main amd64 php-imagick amd64 3.7.0-4 [6,476 B]
Get:5 http://deb.debian.org/debian bookworm/main amd64 libxmlrpc-epi0 amd64 0.54.2-1.3+b1 [34.8 kB]
Get:6 http://deb.debian.org/debian bookworm/main amd64 php8.2-xmlrpc amd64 3:1.0.0~rc3-6 [15.4 kB]
Setting up php-xmlrpc (3:1.0.0~rc3-6) ...
Setting up php-gmp (2:8.2+93) ...
Setting up php-fpm (2:8.2+93) ...
Setting up php-cli (2:8.2+93) ...
update-alternatives: using /usr/bin/php.default to provide /usr/bin/php (php) in auto mode
update-alternatives: using /usr/bin/phar.default to provide /usr/bin/phar (phar) in auto mode
update-alternatives: using /usr/bin/phar.phar.default to provide /usr/bin/phar.phar (phar.phar) in auto mode
Setting up php-zip (2:8.2+93) ...
Setting up php-imagick (3.7.0-4) ...
Setting up php (2:8.2+93) ...
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u3) ...
Processing triggers for php8.2-cli (8.2.18-1~deb12u1) ...
Processing triggers for php8.2-fpm (8.2.18-1~deb12u1) ...
NOTICE: Not enabling PHP 8.2 FPM by default.
NOTICE: To enable PHP 8.2 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php8.2-fpm
NOTICE: You are seeing this message because you have apache2 package installed.
Processing triggers for libapache2-mod-php8.2 (8.2.18-1~deb12u1) ...

Step 11 : Check the PHP version by using the below command.

craftcms@linuxhelp:~$ php -v
PHP 8.2.18 (cli) (built: Apr 11 2024 22:07:45) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.18, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.18, Copyright (c), by Zend Technologies

Step 12 : Edit the php.ini file by using the below command.

craftcms@linuxhelp:~$ sudo vim /etc/php/8.2/fpm/php.ini
max_execution_time = 300
memory_limit = 512M
post_max_size = 128M
upload_max_filesize = 128M

Step 13 : Restart the php-fpm by using the below command.

craftcms@linuxhelp:~$ sudo systemctl restart php8.2-fpm

Step 14 : Download and install the composer by using the below command.

craftcms@linuxhelp:~$ sudo curl -sS https://getcomposer.org/installer | php
All settings correct for using Composer
Downloading...

Composer (version 2.7.6) successfully installed to: /home/craftcms/composer.phar
Use it: php composer.phar

Step 15 : Move the Composer file to the users binary location by using the below command.

craftcms@linuxhelp:~$ sudo mv composer.phar /usr/local/bin/composer

Step 16 : Check the Composer version by using the below command.

craftcms@linuxhelp:~$ composer --version
Composer version 2.7.6 2024-05-04 23:03:15
PHP version 8.2.18 (/usr/bin/php8.2)
Run the "diagnose" command to get more detailed diagnostics output.

Step 17 : Install the MariaDB server and client by using the below command.

craftcms@linuxhelp:~$ sudo apt install mariadb-server mariadb-client
[sudo] password for craftcms:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libc-ares2 libgrpc++1.51 libgrpc29 libprotoc32 libre2-9
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libmariadb3 mariadb-backup mariadb-client-core mariadb-common mariadb-plugin-connect mariadb-plugin-cracklib-password-check mariadb-plugin-gssapi-client mariadb-plugin-gssapi-server
  mariadb-plugin-hashicorp-key-management mariadb-plugin-mroonga mariadb-plugin-oqgraph mariadb-plugin-provider-bzip2 mariadb-plugin-provider-lz4 mariadb-plugin-provider-lzma
  mariadb-plugin-provider-lzo mariadb-plugin-provider-snappy mariadb-plugin-rocksdb mariadb-plugin-s3 mariadb-plugin-spider mariadb-server-10.5 mariadb-server-core mariadb-test mariadb-test-data
Suggested packages:
  mailx netcat-openbsd
The following packages will be upgraded:
  libmariadb3 mariadb-backup mariadb-client mariadb-client-core mariadb-common mariadb-plugin-connect mariadb-plugin-cracklib-password-check mariadb-plugin-gssapi-client
  mariadb-plugin-gssapi-server mariadb-plugin-hashicorp-key-management mariadb-plugin-mroonga mariadb-plugin-oqgraph mariadb-plugin-provider-bzip2 mariadb-plugin-provider-lz4
  mariadb-plugin-provider-lzma mariadb-plugin-provider-lzo mariadb-plugin-provider-snappy mariadb-plugin-rocksdb mariadb-plugin-s3 mariadb-plugin-spider mariadb-server mariadb-server-10.5
  mariadb-server-core mariadb-test mariadb-test-data
25 upgraded, 0 newly installed, 0 to remove and 106 not upgraded.
Need to get 0 B/58.3 MB of archives.
After this operation, 1,118 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Reading changelogs... Done
Preconfiguring packages ...
Setting up mariadb-test-data (1:10.11.6-0+deb12u1) ...
Setting up libmariadb3:amd64 (1:10.11.6-0+deb12u1) ...
Setting up mariadb-server-core (1:10.11.6-0+deb12u1) ...
Setting up mariadb-client-core (1:10.11.6-0+deb12u1) ...
Setting up mariadb-backup (1:10.11.6-0+deb12u1) ...
Setting up mariadb-client (1:10.11.6-0+deb12u1) ...
Setting up mariadb-server (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-cracklib-password-check (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-provider-bzip2 (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-provider-lzma (1:10.11.6-0+deb12u1) ...
Setting up mariadb-test (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-mroonga (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-oqgraph (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-hashicorp-key-management (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-gssapi-client (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-connect (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-rocksdb (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-provider-lzo (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-gssapi-server (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-provider-lz4 (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-provider-snappy (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-s3 (1:10.11.6-0+deb12u1) ...
Setting up mariadb-plugin-spider (1:10.11.6-0+deb12u1) ...
Setting up mariadb-server-10.5 (1:10.11.6-0+deb12u1) ...
Processing triggers for man-db (2.11.2-2) ...
Processing triggers for libc-bin (2.36-9+deb12u3) ...

Step 18 : Check Status of MariaDB by using the below command.

craftcms@linuxhelp:~$ sudo systemctl status mariadb
● mariadb.service - MariaDB 10.11.6 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled)
     Active: active (running) since Wed 2024-05-08 13:57:03 IST; 1min 3s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 20618 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
    Process: 20619 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 20621 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_P>
    Process: 20766 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 20768 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
   Main PID: 20698 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 39 (limit: 3408)
     Memory: 238.6M
        CPU: 1.558s
     CGroup: /system.slice/mariadb.service
             └─20698 /usr/sbin/mariadbd

May 08 13:57:03 linuxhelp mariadbd[20698]: 2024-05-08 13:57:03 0 [Note] Server socket created on IP: '127.0.0.1'.
May 08 13:57:03 linuxhelp mariadbd[20698]: 2024-05-08 13:57:03 0 [Note] /usr/sbin/mariadbd: ready for connections.
May 08 13:57:03 linuxhelp mariadbd[20698]: Version: '10.11.6-MariaDB-0+deb12u1'  socket: '/run/mysqld/mysqld.sock'  port: 3306  Debian 12
May 08 13:57:03 linuxhelp systemd[1]: Started mariadb.service - MariaDB 10.11.6 database server.
May 08 13:57:03 linuxhelp /etc/mysql/debian-start[20781]: Checking for insecure root accounts.

Step 19 : Login to the MySQL by using the below command.

craftcms@linuxhelp:~$ sudo mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 60
Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Step 20 : Create Database by using the below command.

MariaDB [(none)]> CREATE DATABASE craftcms;
Query OK, 1 row affected (0.001 sec)

Step 21 : Create User by using the below command.

MariaDB [(none)]> CREATE USER 'craft'@'localhost' IDENTIFIED BY 'Craft@123';
Query OK, 0 rows affected (0.043 sec)

Step 22 : Make Grant Privileges to the user by using the below command.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON craftcms.* TO 'craft'@'localhost' IDENTIFIED BY 'Craft@123';
Query OK, 0 rows affected (0.007 sec)

Step 23 : Refresh the changes by using the below command.

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

Step 24 : Exit from MySQL by using the below command.

MariaDB [(none)]> EXIT
Bye

Step 25 : Create the DocumentRoot Directory by using the below command.

craftcms@linuxhelp:~$ sudo mkdir /var/www/craftcms

Step 26 : Change the Ownership for Document Root by using the below command.

craftcms@linuxhelp:~$ sudo chown -R craftcms:craftcms /var/www/craftcms

Step 27 : Go to the Location by using the below command.

craftcms@linuxhelp:~$ cd /var/www/craftcms

Step 28 : Download and Setup Latest version of Craft CMS with required details by using the below command.

craftcms@linuxhelp:/var/www/craftcms$ composer create-project craftcms/craft .
Creating a "craftcms/craft" project at "./"
Installing craftcms/craft (5.0.1)
  - Downloading craftcms/craft (5.0.1)
  - Installing craftcms/craft (5.0.1): Extracting archive
Created project in /var/www/craftcms/.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 108 installs, 0 updates, 0 removals
  - Locking bacon/bacon-qr-code (2.0.8)
  - Locking brick/math (0.12.1)
  - Locking cebe/markdown (1.2.1)
  - Locking commerceguys/addressing (v2.2.0)
  - Locking composer/semver (3.4.0)
34 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating optimized autoload files
61 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
> @php -r "file_exists('.env') || copy('.env.example.dev', '.env');"
> @php -r "unlink('composer.json');"
> @php -r "rename('composer.json.default', 'composer.json');"
Generating optimized autoload files
Generated optimized autoload files containing 5444 classes
> @php craft setup/welcome

   ______ .______          ___       _______ .___________.
  /      ||   _  \        /   \     |   ____||           |
 |  ,----'|  |_)  |      /  ^  \    |  |__   `---|  |----`
 |  |     |      /      /  /_\  \   |   __|      |  |
 |  `----.|  |\  \----./  _____  \  |  |         |  |
  \______|| _| `._____/__/     \__\ |__|         |__|

     A       N   E   W       I   N   S   T   A   L   L
               ______ .___  ___.      _______.
              /      ||   \/   |     /       |
             |  ,----'|  \  /  |    |   (----`
             |  |     |  |\/|  |     \   \
             |  `----.|  |  |  | .----)   |
              \______||__|  |__| |_______/


Generating an application ID ... done (CraftCMS--fccac351-720a-4d5f-ad45-1c5a3698a6bf)
Generating a security key ... done (3FGM4NzPy8i9Z2U9N65faYCxzD4_vvvh)


Welcome to Craft CMS!

Are you ready to begin the setup? (yes|no) [no]:yes
Are you ready to begin the setup? (yes|no) [no]:yes
Which database driver are you using? (mysql or pgsql) [mysql]
Database server name or IP address: [127.0.0.1]
Database port: [3306]
Database username: [root] craft
Database password:
Database name: craftcms
Database table prefix:
Testing database credentials ... success!
Saving database credentials to your .env file ... done

Install Craft now? (yes|no) [yes]:

Username: [admin] admin
Email: admin@linuxhelp1.com
Password:
Confirm:
Site name: linuxhelp1.com
Site URL: http://linuxhelp1.com
Site language: [en-US]
*** installing Craft
    > create table {{%addresses}} ... done (time: 0.024s)
    > create table {{%announcements}} ... done (time: 0.007s)
    > create table {{%assetindexdata}} ... done (time: 0.004s)
    > add foreign key fk_zygtxdoohkullpbtjtrgdcvpjusyxvaazynu: {{%userpermissions_users}} (userId) references {{%users}} (id) ... done (time: 0.015s)
    > add foreign key fk_uhrnobdqtpddqxdjlmfprekpxobqifiocxwr: {{%userpreferences}} (userId) references {{%users}} (id) ... done (time: 0.011s)
    > add foreign key fk_jwyllnysfakkqebusrosnlqjfargbdkfzgbc: {{%users}} (id) references {{%elements}} (id) ... done (time: 0.024s)
    > add foreign key fk_nsxazsbgbnbovknfsjvfuaiiadmuehvopnby: {{%users}} (photoId) references {{%assets}} (id) ... done (time: 0.033s)
    > add foreign key fk_nsvmbzkvjvbxxornxqdbahwyahzwbvqkjcbz: {{%volumefolders}} (parentId) references {{%volumefolders}} (id) ... done (time: 0.019s)
    > add foreign key fk_dmgfoyxayynpgdhqxubseektsiapwmktchkh: {{%volumefolders}} (volumeId) references {{%volumes}} (id) ... done (time: 0.022s)
    > add foreign key fk_xrrzbdhpzsqfkbpxbsseknwabyyggeyuurzg: {{%volumes}} (fieldLayoutId) references {{%fieldlayouts}} (id) ... done (time: 0.019s)
    > add foreign key fk_hngdbofkysddansluhktswdpttvolxqsmjrq: {{%webauthn}} (userId) references {{%users}} (id) ... done (time: 0.011s)
    > add foreign key fk_ewjxunaduhpvyhxcqugjsdosqmmuwulqqyzr: {{%widgets}} (userId) references {{%users}} (id) ... done (time: 0.476s)
    > populating the info table ... done
    > saving default site data ... done
    > saving the first user ... done
*** installed Craft successfully (time: 4.600s)

Generating project config files from the loaded project config ... done

Step 29 : Change the Ownership for Document Root by using the below command.

craftcms@linuxhelp:/var/www/craftcms$ sudo chown -R www-data:www-data /var/www/craftcms
[sudo] password for craftcms:

Step 30 : Create a New virtual host with required domains by using the below command.

craftcms@linuxhelp:/var/www/craftcms$ sudo vim /etc/nginx/conf.d/craftcms.conf

Step 31 : Restart the Nginx by using the below command.

craftcms@linuxhelp:/var/www/craftcms$ sudo systemctl restart nginx

Step 32 : Make the Host entry by using the below command.

craftcms@linuxhelp:/var/www/craftcms$ sudo vim /etc/hosts

Step 33 : Go to the Browser and Search the Domain as shown in below image. Step 34 : The Welcome Page will be shown as shown in below image. Step 35 : Again Search the Domain with /admin for the Admin Login page as shown in below image. Step 36 : Login to the Admin by using admin credentials as shown in below image. Step 37 : The Admin Dashboard Will be shown as shown in below image.

Conclusion:

We have reached the end of this article. In this guide, we have walked you through the steps required to install Craft CMS on Debian 12. Your feedback is much welcome.

FAQ
Q
Can I customize the design of my website with Craft CMS?
A
Yes, Craft CMS allows for complete customization of website design. It offers flexible templating using the Twig templating engine, which allows developers to create custom layouts and designs tailored to specific needs.
Q
Is Craft CMS easy to use for non-technical users?
A
Yes, Craft CMS is known for its user-friendly interface and intuitive content editing experience, making it accessible to non-technical users. Its clean and organized admin panel allows users to manage content efficiently.
Q
What are the key features of Craft CMS?
A
Craft CMS offers features such as a flexible content modelling system, a powerful templating engine, robust user management, content versioning, asset management, multi-site support, and extensive plugin integration.
Q
Is Craft CMS free?
A
No, Craft CMS is not free. It offers both free and paid versions. The free version, Craft CMS Solo, is designed for personal projects and small websites. The paid version, Craft CMS Pro, offers additional features and is suitable for larger and more complex websites.
Q
What is Craft CMS?
A
Craft CMS is a content management system (CMS) that allows users to create and manage digital content on websites and other digital platforms. It's known for its flexibility, scalability, and user-friendly interface.