Jump to content

NextCloud 12.0 installation with MariaDB and PHP

Recommended Posts


NextCloud puts your data at your fingertips, under your control. You store your photos, calendar, contacts, and documents on a server of your choosing be it at home, a rented server or at one of our providers. Your existing data can stay at that FTP drive at work, Dropbox or a NAS you have at home, while you get at it through NextCloud.

A trusted solution giving you access to all the data you care about in one convenient place!

The tutorial was prepared with our "CentOS 7" template and is meant to work on our self-managed virtual private servers.

0. Preliminary requirements:
"CentOS 7" template installed on the server;
Dependencies required for installation steps:

yum install -y epel-release yum-utils unzip curl wget bash-completion policycoreutils-python mlocate bzip2 nano
Fully updates server software (yum update);

1. MariaDB installation

yum install -y mariadb mariadb-server

Enable MariaDB to automatically start after server reboot:

systemctl enable mariadb.service

Start MariaDB:

systemctl start mariadbNow run the post-installation security script:

When the script asks you to enter MariaDB root password, press enter because you have not set the root password yet. Then enter "Y" to set the root password for the MariaDB server. And proceed with pressing Enter to answer all the remaining questions.

2. Apache and PHP 7 installation
Apache installation:

yum install -y httpd
Start Apache:
systemctl enable httpd.service
systemctl start httpd.service

This installation will be of only the necessary PHP modules. For more complete install, other PHP modules might be required too.  At the moment, proceed with the following installation:

yum install -y centos-release-scl
yum install -y rh-php72 rh-php72-php rh-php72-php-gd rh-php72-php-mbstring \
rh-php72-php-intl rh-php72-php-pecl-apcu rh-php72-php-mysqlnd rh-php72-php-pecl-redis \
rh-php72-php-opcache rh-php72-php-imagick

Create the required symlinks:

ln -s /opt/rh/httpd24/root/etc/httpd/conf.d/rh-php72-php.conf /etc/httpd/conf.d/
ln -s /opt/rh/httpd24/root/etc/httpd/conf.modules.d/15-rh-php72-php.conf /etc/httpd/conf.modules.d/
ln -s /opt/rh/httpd24/root/etc/httpd/modules/librh-php72-php7.so /etc/httpd/modules/
ln -s /opt/rh/rh-php72/root/bin/php /usr/bin/php

Restart Apache to load the new version of PHP:

systemctl restart httpd

3. Creating a MariaDB database and user
Login to your MariaDB:

mysql -u root -p

Create a database:


Create user:

CREATE USER nextclouduser@localhost IDENTIFIED BY 'your-password';

Grant privileges for user and exit:

GRANT ALL PRIVILEGES ON nextcloud.* to nextclouduser@localhost IDENTIFIED BY 'your-password';



4. Enable Binary Logging in MariaDB

Open MySQL my.cnf configuration file for edit:
nano /etc/my.cnf

Add the following three lines in the [mysqld] section:


Restart MariaDB:

systemctl restart mariadb

5. Download NextCloud files:
Download latest NextCloud package:

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.3.zip

The latest release can be found at: https://nextcloud.com/install/#instructions-server

Extract it:

unzip nextcloud-18.0.3.zip

Move files to your Apache directory:

mv nextcloud/* nextcloud/.* /var/www/html/

6. Setting strong directory permissions
Create "permissions.sh" file:

nano permissions.sh

Insert the content:


printf "Creating possible missing Directories\n"
mkdir -p $ncpath/data
mkdir -p $ncpath/assets
mkdir -p $ncpath/updater

printf "chmod Files and Directories\n"
find ${ncpath}/ -type f -print0 | xargs -0 chmod 0640
find ${ncpath}/ -type d -print0 | xargs -0 chmod 0750

printf "chown Directories\n"
chown -R ${rootuser}:${htgroup} ${ncpath}/
chown -R ${htuser}:${htgroup} ${ncpath}/apps/
chown -R ${htuser}:${htgroup} ${ncpath}/assets/
chown -R ${htuser}:${htgroup} ${ncpath}/config/
chown -R ${htuser}:${htgroup} ${ncpath}/data/
chown -R ${htuser}:${htgroup} ${ncpath}/themes/
chown -R ${htuser}:${htgroup} ${ncpath}/updater/

chmod +x ${ncpath}/occ

printf "chmod/chown .htaccess\n"
if [ -f ${ncpath}/.htaccess ]
chmod 0644 ${ncpath}/.htaccess
chown ${rootuser}:${htgroup} ${ncpath}/.htaccess
if [ -f ${ncpath}/data/.htaccess ]
chmod 0644 ${ncpath}/data/.htaccess
chown ${rootuser}:${htgroup} ${ncpath}/data/.htaccess

Run the file:

bash permissions.sh

7. NextCloud installation
Open your server hostname or IP address in the browser and finish the installation.


More information about NextCloud project can be found at: https://nextcloud.com/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...