How to Install Craft CMS with LEMP Stack on AlmaLinux 8
Craft CMS is a flexible, extensible content management system for building bespoke digital experiences. Powerful content modeling that doesn’t make assumptions about how your project should be structured. In this article, we are going to learn how to install Craft CMS on AlmaLinux 8. So, let’s get started.
Checkout the Craft CMS Project Here.
Try this wiki on our VPS. Starting at just $5/month with 24x7 In-house customer support.
Pre-requisites
-
A system with AlmaLinux 8 installed and running.
-
root
access to the system. -
Composer installed and running, for this, you can refer to one of our guides on installing the Composer on AlmaLinux 8.
-
LEMP Stack installed and running, for this, you can refer to one of our guides on installing the LEMP Stack (Nginx, MariaDB, and PHP).
- Let's Encrypt installed, for this, you can refer to one of our guides on installing the Let's Encrypt with LEMP Stack on AlmaLinux 8.
Once you're all set, we'll proceed with Craft CMS installation and configuration.
Create Database
Let us begin with creating a Database and a user. We will then grant the required privileges to the user so it can interact with the Database.
mysql -u root
CREATE DATABASE crowncloud;
CREATE USER 'crowncloud'@'localhost' IDENTIFIED BY 'YOUR-PASSWORD-HERE';
GRANT ALL PRIVILEGES ON crowncloud.* TO 'crowncloud'@'localhost';
FLUSH PRIVILEGES;
quit
The above commands will give complete access to the user
crowncloud
. ReplaceYOUR-PASSWORD-HERE
with a safe and secure password.
Configuring Nginx Reverse Proxy
Let's configure nginx.conf
with the following command:
nano /etc/nginx/nginx.conf
Replace the nginx.conf
file with the below configuration.
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
}
Now, type in Ctrl+O
and type Ctrl+X
to save and exit the file.
Create a new Nginx configuration file dev.conf
for the domain with the following command:
vi /etc/nginx/conf.d/dev.conf
Add the following codes:
Replace
dev.domainhere.info
withYour Domain Name
and Change SSL Path according to your SSL Path.And also replace the root path,
/var/www/html/craft
with the actual path where your website's data are stored.
server {
listen 80;
server_name dev.domainhere.info;
root /var/www/html/craft;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
listen 443 http2 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/dev.domainhere.info/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/dev.domainhere.info/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Now, press the Esc
key, and type in :wq!
and press the Enter
key to save and exit the file.
For SELinux enabled systems, Run the below command
setsebool -P httpd_can_network_connect 1
Now, restart & check the Nginx with the following commands:
systemctl restart nginx
systemctl status nginx
Enable http and https ( 80/443 )
To enable http and https connection through the firewall, follow the commands:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
Install Craft CMS
Download Craft CMS from the official website : Click here.
Let's install Craft CMS using below command:
cd /var/www/html
mkdir craft
cd craft
wget https://craftcms.com/latest-v3.zip
unzip latest-v3.zip
rm latest-v3.zip
Edit .env file with your SQL Database configuration and then run the below command
php craft setup
Setting up File Permissions
Let's make the folders readable.
chmod -R 755 /var/www/html/craft
chown -R nginx:nginx /var/www/html/craft
chcon -R -t httpd_sys_content_rw_t /var/www/html/craft
Now, restart & check Nginx with the following commands:
systemctl restart nginx
systemctl status nginx
Configuring Craft CMS
Now open the IP address from your browser, this will redirect you to the Craft CMS.
https://dev.domainhere.info
Replace the
dev.domainhere.info
with the actual IP or domain configured on the server.
Input the Database details which was configured earlier. Follow the below steps:
Now you have successfully installed Craft CMS with LEMP Stack on AlmaLinux 8.
CrownCloud - Get a SSD powered KVM VPS at $4.5/month!
Use the code WELCOME
for 10% off!
1 GB RAM / 25 GB SSD / 1 CPU Core / 1 TB Bandwidth per month
Available Locations: LAX | MIA | ATL | FRA | AMS