How to Install Thelia 2.3 on CentOS 7
Thelia is an open source tool for creating e-business websites and managing online content, written in PHP. Thelia source code is hosted on GitHub. This guide will show you how to install Thelia on a fresh CentOS 7 Vultr instance.
Requirements
- PHP
- Required PHP extensions:
pdo_mysql
,openssl
,intl
,gd
,curl
,dom
safe_mode off
memory_limit
at least 128M, preferably 256M.upload_max_filesize
: 2Mdate.timezone
must be defined- Nginx
- MySQL/MariaDB
Check the CentOS version.
cat /etc/centos-release
# CentOS Linux release 7.4.1708 (Core)
Create a new non-root
user account with sudo
access and switch to it.
useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe
NOTE: Replace johndoe
with your username.
Set up the timezone.
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Ensure that your system is up to date.
sudo yum update -y
Install necessary packages.
sudo yum install -y wget vim unzip bash-completion
Disable SELinux.
sudo setenforce 0
Enable the epel
repository.
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Install PHP
Setup the Webtatic YUM repo.
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Install PHP 7.0, as well as the required PHP extensions.
sudo yum install -y php70w php70w-cli php70w-fpm php70w-common php70w-intl php70w-mbstring php70w-xml php70w-mysql php70w-curl php70w-dom php70w-gd
Check the version.
php --version
Enable and start php-fpm
.
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service
Install MariaDB
Install MariaDB.
sudo vim /etc/yum.repos.d/MariaDB.repo
# Copy/paste this to the /etc/yum.repos.d/MariaDB.repo file
[mariadb]
name = MariaDB
baseurl = https://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
sudo yum install -y MariaDB-server MariaDB-client
Check the version.
mysql --version && mysqld --version
# mysql Ver 15.1 Distrib 10.2.14-MariaDB, for Linux (x86_64) using readline 5.1
# mysqld Ver 10.2.14-MariaDB for Linux on x86_64 (MariaDB Server)
Enable and start MariaDB.
sudo systemctl enable mariadb.service
sudo systemctl start mariadb.service
Run the mysql_secure_installation
script to improve the security of your MariaDB installation.
sudo mysql_secure_installation
Log in to MariaDB as the root user.
mysql -u root -p
# Enter password:
Create a new MySQL database and user, and remember the credentials.
CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Exit MariaDB.
exit
Step 3 - Install Nginx
Install Nginx.
sudo yum install -y nginx
Check the version.
sudo nginx -v
# nginx version: nginx/1.12.2
Enable and start Nginx.
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
Configure Nginx. Run sudo vim /etc/nginx/conf.d/thelia.conf
and populate it with the following.
server {
listen 80;
server_name example.com; # Check this
root /var/www/thelia/web/; # Check this
index index.php;
location / {
try_files $uri $uri/ @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /index.php/$1 last;
}
location ~ ^/(index|index_dev)\.php(/|$) {
fastcgi_pass 127.0.0.1:9000; # Check this
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# ###################################################
# After installation remove /install/ location block.
# and restart Nginx
# ###################################################
location /install/ {
alias /var/www/thelia/web/install/; # Check this
location ~ ^/install/.+\.(jpg|jpeg|gif|css|png|js|pdf|zip)$ {
expires 30d;
access_log off;
log_not_found off;
}
location ~ ^/install/(.+\.php)$ {
alias /var/www/thelia/web/install/$1; # Check this
fastcgi_pass 127.0.0.1:9000; # Check this
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
# ###################################################
}
Test the configuration.
sudo nginx -t
Reload Nginx.
sudo systemctl reload nginx.service
Install Thelia
Navigate to the /var/www
directory.
cd /var/www
Download the latest release of Thelia and unzip it.
sudo wget https://thelia.net/download/thelia.zip
sudo unzip thelia.zip
sudo rm thelia.zip
sudo mv thelia_2.3.4/ thelia
Go to the Thelia directory.
cd /var/www/thelia
Change ownership of the /var/www/thelia
directory to nginx
.
sudo chown -R nginx:nginx /var/www/thelia
Run sudo vim /etc/php-fpm.d/www.conf
and set the user and group to nginx
. Initially, it will be set to apache
.
sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx
Run sudo vim /etc/php.ini
and set post_max_size
to 20M.
post_max_size = 20M
Restart php-fpm
.
sudo systemctl restart php-fpm.service
Create the /var/lib/php/session
directory and change its ownership to user nginx
.
sudo mkdir -p /var/lib/php/session
sudo chown -R nginx:nginx /var/lib/php/session
In your favorite browser, navigate to http://example.com/install
and follow the Thelia installation wizard. To access the Thelia administration interface, append /admin
to your URL.
After installing Thelia, remove the web/install
directory.
sudo rm -rf /var/www/thelia/web/install