Wednesday, August 28, 2019

How To install Multiple Nextcloud Sites on a Single Host On Ubuntu 18.04

Video Tutorial - https://youtu.be/oUbqcwguxF4

Nextcloud is a free (Open Source) Dropbox-like software, a fork of the ownCloud project. Nextcloud is written in PHP and JavaScript, it supports many database systems such as MySQL/MariaDB, PostgreSQL, Oracle Database, and SQLite.
Offcial Website: https://nextcloud.com/
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Os:Ubuntu 18.04 LTS Bionic Beaver 64Bit   |IP address- 192.168.1.50  | Hostname :www.yourdomain.com
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
lsb_release -cd ; hostname ; hostname -I ; whoami ; getconf LONG_BIT ; apt install -y build-essential software-properties-common curl gdebi net-tools wget curl sqlite3 dirmngr nano lsb-release apt-transport-https leafpad git sudo unzip socat bash-completion checkinstall imagemagick openssl

MariaDB Repositories & Php PPA:
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 ; add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.biznetgio.com/mariadb/repo/10.4/ubuntu bionic main' && add-apt-repository ppa:ondrej/php -y

apt-get update ; apt install -y apache2 mariadb-server mariadb-client php7.2 libapache2-mod-php7.2 php7.2-cli php7.2-fpm php7.2-cgi php7.2-bcmath php7.2-curl php7.2-gd php7.2-intl php7.2-json php7.2-mbstring php7.2-mysql php7.2-opcache php7.2-sqlite3 php7.2-xml php7.2-zip php7.2-snmp php7.2-json php7.2-imap php7.2-common php7.2-tidy php7.2-pgsql php7.2-ldap php7.2-soap php7.2-snmp php7.2-xsl  php7.2-recode php-imagick php-pear php-memcache php-apcu

a2enmod dir env headers mime rewrite setenvif ; sed -i "s/;date.timezone.*/date.timezone = Asia\/\Kolkata/" /etc/php/*/apache2/php.ini ; echo ServerName 127.0.0.1 >> /etc/apache2/apache2.conf ; systemctl start apache2 mariadb ; systemctl enable apache2 mariadb ; mysql_secure_installation

mysql -u root -p
create database db;
create database nextdb;
grant all on nextdb.* to 'nextdbuser'@'localhost' identified by 'dbpass';
grant all on db.* to 'dbuser'@'localhost' identified by 'dbpass';
flush privileges;
quit

mkdir -p /var/www/example.com/ ; mkdir -p /var/www/test.com/
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

leafpad /etc/apache2/sites-available/example.com.conf &>/dev/null
<VirtualHost *:80>
     ServerAdmin admin@example.com
     DocumentRoot /var/www/example.com/nextcloud
     ServerName www.example.com
     <Directory /var/www/example.com/nextcloud/>
          Options FollowSymlinks
          AllowOverride All
          Require all granted
     </Directory>
     ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
     CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf
leafpad /etc/apache2/sites-available/test.com.conf &>/dev/null
<VirtualHost *:80>
      ServerAdmin admin@test.com
     DocumentRoot /var/www/test.com/nextcloud
     ServerName www.test.com
     <Directory /var/www/test.com/nextcloud/>
          Options FollowSymlinks
          AllowOverride All
          Require all granted
     </Directory>
     ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
     CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>

cd /tmp/ && wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
cp -r nextcloud/   /var/www/example.com/
mv /tmp/nextcloud/ /var/www/test.com/
chown www-data:www-data -R /var/www/ ; chmod -R 777 /var/www/

a2ensite example.com.conf test.com.conf ; a2dissite 000-default.conf  ; apache2ctl configtest
echo "192.168.1.50 www.example.com" >> /etc/hosts ; echo "192.168.1.50 www.test.com" >> /etc/hosts
systemctl restart apache2

http://www.example.com    | http://www.test.com

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1 comment:

  1. So what do I have to do if I want to add another instance?

    ReplyDelete