Hướng dẫn cài đặt Ketnoi24 Self-hosted
Video AlmaLinux 9 install Ketnoi24 (Apache, MySQL, PHP)
https://wiki.almalinux.org/documentation/installation-guide.html#requirements
Video step by step guide to install ketnoi24 on AlmaLinux 9

Almalinux9 install Ketnoi24 (Apache, MySQL, PHP)

SSH Login details:
Username: almalinux
Password : almalinux
(to become root, use sudo su -)

Almalinux IP: 192.168.184.134
Domain (add host window): almalinux.kn24.local
 On window edit file host administrator permission add line:
 192.168.184.134 almalinux.kn24.local

Almalinux MySQL: ketnoi24 / Strong@123456789
- Update Almalinux9
  $ yum update
  $ dnf install zip wget

- disabled selinux 
  $ vi /etc/selinux/config
     SELINUX=disabled

  $ reboot

- Firewalld Open
  $ firewall-cmd --zone=public --add-port=80/tcp --permanent  
  $ firewall-cmd --zone=public --add-port=443/tcp --permanent 
  $ firewall-cmd --zone=public --add-port=22/tcp --permanent 
  $ firewall-cmd --reload 

- Install Apache
  $ dnf install httpd httpd-tools
  $ systemctl enable httpd 
  $ systemctl start httpd
  $ systemctl status httpd


- Install PHP (If you would like to install a different version of PHP from remi repository)
  $ rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
  $ dnf install php
  $ dnf install -y php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-fpm php-iconv php-json php-mbstring php-posix php-sockets php-tokenizer php-ldap

- upgrade or downgrade php version
  $ dnf module list php
  $ dnf module switch-to php:8.3

- Install MySQL (MariaDB, Percona)
  $ dnf install mariadb-server mariadb
  $ systemctl enable mariadb
  $ systemctl start mariadb
  $ systemctl status mariadb

  $ mysql_secure_installation
  
    Set root password? [Y/n] y
    New password:
    Re-enter new password:
    Password updated successfully!
    Reloading privilege tables..
     ... Success!

  $ mysql -uroot -p [enter password]
  $ mysql > CREATE database ketnoi24;
  $ mysql > SHOW DATABASES;
  $ mysql > CREATE USER 'ketnoi24'@'localhost' IDENTIFIED BY 'Strong@123456789';
  $ mysql > GRANT ALL PRIVILEGES ON ketnoi24.* TO 'ketnoi24'@'localhost';
  $ mysql > FLUSH PRIVILEGES;
  $ mysql > EXIT
     

- VirtualHost
  $ vi /etc/httpd/conf.d/ketnoi24.conf
  <Directory "/var/www/html">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
  </Directory>

  <VirtualHost *:80>
     DocumentRoot /var/www/html/ketnoi24
     ServerName almalinux.kn24.local
     ServerAlias www.almalinux.kn24.local

     <Directory "/var/www/html/ketnoi24/">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order Deny,Allow
            Allow from all
            Require all granted
      </Directory>
      RewriteEngine on
      RewriteCond %{HTTP:Connection} Upgrade [NC]
      RewriteRule /mywss ws://almalinux.kn24.local:8090/process_chat/php-socket.php [P,L]
  </VirtualHost>

  $ mkdir -p /var/www/html/ketnoi24
  $ cd /var/www/html/ketnoi24
  $ wget https://ketnoi24.com/download/env/kn24_env.php
  $ vi /var/www/html/ketnoi24/info.php
    <?php phpinfo(); ?>

  $ chown -Rf apache:apache /var/www/html/ketnoi24

- Edit crontab
  $ crontab -e
  MAILTO=""
  */1 * * * * php /var/www/html/ketnoi24/process_event/cron_events.php

- restart service 
  $ systemctl restart httpd && systemctl restart php-fpm  && systemctl restart mysqld  

to browser http://almalinux.kn24.local/info.php -> test run PHP
to browser http://almalinux.kn24.local/kn24_env.php -> for install ketnoi24 solution
VirtualHost for http (vi and save)
Add crontab
Add hosts (vi and save)
Install msmtp
Config domain name
SSL extension configuration
Video AlmaLinux 9 VMware Images install Ketnoi24 (Apache, MySQL, PHP)
Link download: https://www.linuxvmimages.com/images/vmware/
Video step by step guide to install ketnoi24 on AlmaLinux 9

Almalinux9 install Ketnoi24 (Apache, MySQL, PHP)

SSH Login details:
Username: almalinux
Password : almalinux
(to become root, use sudo su -)

Almalinux IP: 192.168.184.134
Domain (add host window): almalinux.kn24.local
 On window edit file host administrator permission add line:
 192.168.184.134 almalinux.kn24.local

Almalinux MySQL: ketnoi24 / Strong@123456789
- Update Almalinux9
  $ yum update
  $ dnf install zip wget

- disabled selinux 
  $ vi /etc/selinux/config
     SELINUX=disabled

  $ reboot

- Firewalld Open
  $ firewall-cmd --zone=public --add-port=80/tcp --permanent  
  $ firewall-cmd --zone=public --add-port=443/tcp --permanent 
  $ firewall-cmd --zone=public --add-port=22/tcp --permanent 
  $ firewall-cmd --reload 

- Install Apache
  $ dnf install httpd httpd-tools
  $ systemctl enable httpd 
  $ systemctl start httpd
  $ systemctl status httpd


- Install PHP (If you would like to install a different version of PHP from remi repository)
  $ rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
  $ dnf install php
  $ dnf install -y php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-fpm php-iconv php-json php-mbstring php-posix php-sockets php-tokenizer php-ldap

- upgrade or downgrade php version
  $ dnf module list php
  $ dnf module switch-to php:8.3

- Install MySQL (MariaDB, Percona)
  $ dnf install mariadb-server mariadb
  $ systemctl enable mariadb
  $ systemctl start mariadb
  $ systemctl status mariadb

  $ mysql_secure_installation
  
    Set root password? [Y/n] y
    New password:
    Re-enter new password:
    Password updated successfully!
    Reloading privilege tables..
     ... Success!

  $ mysql -uroot -p [enter password]
  $ mysql > CREATE database ketnoi24;
  $ mysql > SHOW DATABASES;
  $ mysql > CREATE USER 'ketnoi24'@'localhost' IDENTIFIED BY 'Strong@123456789';
  $ mysql > GRANT ALL PRIVILEGES ON ketnoi24.* TO 'ketnoi24'@'localhost';
  $ mysql > FLUSH PRIVILEGES;
  $ mysql > EXIT
     

- VirtualHost
  $ vi /etc/httpd/conf.d/ketnoi24.conf
  <Directory "/var/www/html">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
  </Directory>

  <VirtualHost *:80>
     DocumentRoot /var/www/html/ketnoi24
     ServerName almalinux.kn24.local
     ServerAlias www.almalinux.kn24.local

     <Directory "/var/www/html/ketnoi24/">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order Deny,Allow
            Allow from all
            Require all granted
      </Directory>
      RewriteEngine on
      RewriteCond %{HTTP:Connection} Upgrade [NC]
      RewriteRule /mywss ws://almalinux.kn24.local:8090/process_chat/php-socket.php [P,L]
  </VirtualHost>

  $ mkdir -p /var/www/html/ketnoi24
  $ cd /var/www/html/ketnoi24
  $ wget https://ketnoi24.com/download/env/kn24_env.php
  $ vi /var/www/html/ketnoi24/info.php
    <?php phpinfo(); ?>

  $ chown -Rf apache:apache /var/www/html/ketnoi24

- Edit crontab
  $ crontab -e
  MAILTO=""
  */1 * * * * php /var/www/html/ketnoi24/process_event/cron_events.php

- restart service 
  $ systemctl restart httpd && systemctl restart php-fpm  && systemctl restart mysqld  

to browser http://almalinux.kn24.local/info.php -> test run PHP
to browser http://almalinux.kn24.local/kn24_env.php -> for install ketnoi24 solution
VirtualHost for http (vi and save)
Add crontab
Add hosts (vi and save)
Config SMTP account information
Config domain name
SSL extension configuration
Video CentOS Stream 9 install Ketnoi24 (Apache, MySQL, PHP)
https://www.centos.org/download/
Video step by step guide to install ketnoi24 on CentOS Stream 9

CentOS Stream 9 install Ketnoi24 (Apache, MySQL, PHP)

SSH Login details:
Username: centos
Password : centos
(to become root, use sudo su -)

CentOS IP: 192.168.184.130
Domain (add host window): centos.kn24.local
 On window edit file host administrator permission add line:
 192.168.184.130 centos.kn24.local

CentOS MySQL: ketnoi24 / Strong@123456789
- Update CentOS 9
  $ yum update
  $ dnf install zip wget

- disabled selinux 
  $ vi /etc/selinux/config
     SELINUX=disabled

  $ reboot

- Firewalld Open
  $ firewall-cmd --zone=public --add-port=80/tcp --permanent  
  $ firewall-cmd --zone=public --add-port=443/tcp --permanent 
  $ firewall-cmd --zone=public --add-port=22/tcp --permanent 
  $ firewall-cmd --reload 

- Install Apache
  $ dnf install httpd httpd-tools
  $ systemctl enable httpd 
  $ systemctl start httpd
  $ systemctl status httpd


- Install PHP (If you would like to install a different version of PHP from remi repository)
  $ rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
  $ dnf install php
  $ dnf install -y php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-fpm php-iconv php-json php-mbstring php-posix php-sockets php-tokenizer php-ldap

- upgrade or downgrade php version
  $ dnf module list php
  $ dnf module switch-to php:8.3

- Install MySQL (MariaDB, Percona)
  $ dnf install mariadb-server mariadb
  $ systemctl enable mariadb
  $ systemctl start mariadb
  $ systemctl status mariadb

  $ mysql_secure_installation
  
    Set root password? [Y/n] y
    New password:
    Re-enter new password:
    Password updated successfully!
    Reloading privilege tables..
     ... Success!

  $ mysql -uroot -p [enter password]
  $ mysql > CREATE database ketnoi24;
  $ mysql > SHOW DATABASES;
  $ mysql > CREATE USER 'ketnoi24'@'localhost' IDENTIFIED BY 'Strong@123456789';
  $ mysql > GRANT ALL PRIVILEGES ON ketnoi24.* TO 'ketnoi24'@'localhost';
  $ mysql > FLUSH PRIVILEGES;
  $ mysql > EXIT
     

- VirtualHost
  $ vi /etc/httpd/conf.d/ketnoi24.conf
  <Directory "/var/www/html">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
  </Directory>

  <VirtualHost *:80>
     DocumentRoot /var/www/html/ketnoi24
     ServerName centos.kn24.local
     ServerAlias www.centos.kn24.local

     <Directory "/var/www/html/ketnoi24/">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order Deny,Allow
            Allow from all
            Require all granted
      </Directory>
      RewriteEngine on
      RewriteCond %{HTTP:Connection} Upgrade [NC]
      RewriteRule /mywss ws://centos.kn24.local:8090/process_chat/php-socket.php [P,L]
  </VirtualHost>

  $ mkdir -p /var/www/html/ketnoi24
  $ cd /var/www/html/ketnoi24
  $ wget https://ketnoi24.com/download/env/kn24_env.php
  $ vi /var/www/html/ketnoi24/info.php
    <?php phpinfo(); ?>

  $ chown -Rf apache:apache /var/www/html/ketnoi24

- Edit crontab
  $ crontab -e
  MAILTO=""
  */1 * * * * php /var/www/html/ketnoi24/process_event/cron_events.php

- restart service 
  $ systemctl restart httpd && systemctl restart php-fpm  && systemctl restart mysqld  

to browser http://centos.kn24.local/info.php -> test run PHP
to browser http://centos.kn24.local/kn24_env.php -> for install ketnoi24 solution
VirtualHost for http (vi and save)
Add crontab
Add hosts on Server CentOS (vi and save)
Install msmtp
Config domain name
SSL extension configuration
Video CentOS Stream 9 VMware Images install Ketnoi24 (Apache, MySQL, PHP)
Link download: https://www.linuxvmimages.com/images/vmware/
Video step by step guide to install ketnoi24 on CentOS Stream 9

CentOS Stream 9 install Ketnoi24 (Apache, MySQL, PHP)

SSH Login details:
Username: centos
Password : centos
(to become root, use sudo su -)

CentOS IP: 192.168.184.130
Domain (add host window): centos.kn24.local
 On window edit file host administrator permission add line:
 192.168.184.130 centos.kn24.local

CentOS MySQL: ketnoi24 / Strong@123456789
- Update CentOS 9
  $ yum update
  $ dnf install zip wget

- disabled selinux 
  $ vi /etc/selinux/config
     SELINUX=disabled

  $ reboot

- Firewalld Open
  $ firewall-cmd --zone=public --add-port=80/tcp --permanent  
  $ firewall-cmd --zone=public --add-port=443/tcp --permanent 
  $ firewall-cmd --zone=public --add-port=22/tcp --permanent 
  $ firewall-cmd --reload 

- Install Apache
  $ dnf install httpd httpd-tools
  $ systemctl enable httpd 
  $ systemctl start httpd
  $ systemctl status httpd


- Install PHP (If you would like to install a different version of PHP from remi repository)
  $ rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
  $ dnf install php
  $ dnf install -y php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-fpm php-iconv php-json php-mbstring php-posix php-sockets php-tokenizer php-ldap

- upgrade or downgrade php version
  $ dnf module list php
  $ dnf module switch-to php:8.3

- Install MySQL (MariaDB, Percona)
  $ dnf install mariadb-server mariadb
  $ systemctl enable mariadb
  $ systemctl start mariadb
  $ systemctl status mariadb

  $ mysql_secure_installation
  
    Set root password? [Y/n] y
    New password:
    Re-enter new password:
    Password updated successfully!
    Reloading privilege tables..
     ... Success!

  $ mysql -uroot -p [enter password]
  $ mysql > CREATE database ketnoi24;
  $ mysql > SHOW DATABASES;
  $ mysql > CREATE USER 'ketnoi24'@'localhost' IDENTIFIED BY 'Strong@123456789';
  $ mysql > GRANT ALL PRIVILEGES ON ketnoi24.* TO 'ketnoi24'@'localhost';
  $ mysql > FLUSH PRIVILEGES;
  $ mysql > EXIT
     

- VirtualHost
  $ vi /etc/httpd/conf.d/ketnoi24.conf
  <Directory "/var/www/html">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
  </Directory>

  <VirtualHost *:80>
     DocumentRoot /var/www/html/ketnoi24
     ServerName centos.kn24.local
     ServerAlias www.centos.kn24.local

     <Directory "/var/www/html/ketnoi24/">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order Deny,Allow
            Allow from all
            Require all granted
      </Directory>
      RewriteEngine on
      RewriteCond %{HTTP:Connection} Upgrade [NC]
      RewriteRule /mywss ws://centos.kn24.local:8090/process_chat/php-socket.php [P,L]
  </VirtualHost>

  $ mkdir -p /var/www/html/ketnoi24
  $ cd /var/www/html/ketnoi24
  $ wget https://ketnoi24.com/download/env/kn24_env.php
  $ vi /var/www/html/ketnoi24/info.php
    <?php phpinfo(); ?>

  $ chown -Rf apache:apache /var/www/html/ketnoi24

- Edit crontab
  $ crontab -e
  MAILTO=""
  */1 * * * * php /var/www/html/ketnoi24/process_event/cron_events.php

- restart service 
  $ systemctl restart httpd && systemctl restart php-fpm  && systemctl restart mysqld  

to browser http://centos.kn24.local/info.php -> test run PHP
to browser http://centos.kn24.local/kn24_env.php -> for install ketnoi24 solution
VirtualHost for http (vi and save)
Add crontab
Add hosts on Server CentOS (vi and save)
Install msmtp
Config domain name
SSL extension configuration
Video Ubuntu24 install Ketnoi24 (Apache, MySQL, PHP)
Install Ubuntu Server: https://ubuntu.com/tutorials/install-ubuntu-server#1-overview
Video step by step guide to install ketnoi24 on ubuntu server 24

Ubuntu24 install Ketnoi24 (Apache, MySQL, PHP)

SSH Login detail:
Username: ubuntu
Password : ubuntu
(to become root, use sudo su -)

Ubuntu IP: 192.168.184.133
Domain (add host window): ubuntu.kn24.local
 On window edit file host administrator permission add line:
 192.168.184.133 ubuntu.kn24.local

Ubuntu MySQL: ketnoi24 / Strong@123456789

Install Apache2
$ sudo apt update
$ sudo apt install apache2 -y
$ sudo systemctl start apache2
$ sudo systemctl enable apache2
$ sudo systemctl status apache2

Open firewalld
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 8090/tcp

Install MySQL
$ sudo apt install -y mysql-server
$ sudo systemctl enable mysql
$ sudo systemctl start mysql
$ sudo systemctl status mysql

$ sudo mysql_secure_installation
  VALIDATE PASSWORD: Enter Y
  Password strength policy: Enter 2
  Remove anonymous users: Enter Y
  Disallow root login remotely: Enter Y
  Remove test database: Enter Y
  Reload privileges tables now: Enter Y

$ sudo mysql
$ mysql > alter user 'root'@'localhost' IDENTIFIED BY 'Strong@123456789';
$ mysql > FLUSH PRIVILEGES;
$ mysql > EXIT

$ sudo mysql -u root -p
$ mysql > CREATE database ketnoi24;
$ mysql > SHOW DATABASES;
$ mysql > CREATE USER 'ketnoi24'@'localhost' IDENTIFIED BY 'Strong@123456789';
$ mysql > GRANT ALL PRIVILEGES ON ketnoi24.* TO 'ketnoi24'@'localhost';
$ mysql > FLUSH PRIVILEGES;
$ mysql > EXIT


Install PHP
$ sudo apt install -y php php-fpm php-mysql php-opcache php-cli libapache2-mod-php php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv  php-json php-mbstring php-posix php-sockets php-tokenizer php-ldap

$ php -v
  PHP 8.3.6 (cli) (built: Jun 13 2024 15:23:20) (NTS)

$ sudo systemctl start php8.3-fpm
$ sudo systemctl enable php8.3-fpm
$ sudo systemctl status php8.3-fpm

Configure PHP-FPM
$ sudo a2enconf php8.3-fpm
$ sudo systemctl restart apache2
$ vi /etc/php/8.3/fpm/pool.d/www.conf
  [www]
  user = www-data
  group = www-data
  listen.owner = www-data
  listen.group = www-data

$ sudo systemctl restart php8.3-fpm

Configure Apache with PHP-FPM
$ vi /etc/apache2/sites-available/ketnoi24.conf
  <Directory "/var/www/html">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
  </Directory>

  <VirtualHost *:80>
     DocumentRoot /var/www/html/ketnoi24
     ServerName ubuntu.kn24.local
     ServerAlias www.ubuntu.kn24.local
     ErrorLog /error.log
     CustomLog /access.log combined

     <Directory "/var/www/html/ketnoi24/">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order Deny,Allow
            Allow from all
            Require all granted
      </Directory>
      RewriteEngine on
      RewriteCond %{HTTP:Connection} Upgrade [NC]
      RewriteRule /mywss ws://ubuntu.kn24.local:8090/process_chat/php-socket.php [P,L]
  </VirtualHost>

you should enable mod_rewrite with this command
$ sudo a2enmod rewrite

$ sudo a2ensite ketnoi24.conf
$ sudo apache2ctl configtest
  Syntax OK

$ mkdir -p /var/www/html/ketnoi24
$ cd /var/www/html/ketnoi24
$ wget https://ketnoi24.com/download/env/kn24_env.php
$ vi /var/www/html/ketnoi24/info.php
  <?php
  phpinfo
();
  
?>
$ chown -Rf www-data:www-data /var/www/html/ketnoi24
$ sudo systemctl restart apache2

to browser http://ubuntu.kn24.local/info.php -> test run PHP
to browser http://ubuntu.kn24.local/kn24_env.php -> for install ketnoi24 solution
Add crontab
Install msmtp
Restart service
Firewalld open port
Config domain name
SSL extension configuration
Video Ubuntu VMware Images install Ketnoi24 (Apache, MySQL, PHP)
Link download: https://www.linuxvmimages.com/images/vmware/
Video step by step guide to install ketnoi24 on ubuntu server 24

Ubuntu24 install Ketnoi24 (Apache, MySQL, PHP)

SSH Login detail:
Username: ubuntu
Password : ubuntu
(to become root, use sudo su -)

Ubuntu IP: 192.168.184.133
Domain (add host window): ubuntu.kn24.local
 On window edit file host administrator permission add line:
 192.168.184.133 ubuntu.kn24.local

Ubuntu MySQL: ketnoi24 / Strong@123456789

Install Apache2
$ sudo apt update
$ sudo apt install apache2 -y
$ sudo systemctl start apache2
$ sudo systemctl enable apache2
$ sudo systemctl status apache2

Open firewalld
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw allow 8090/tcp

Install MySQL
$ sudo apt install -y mysql-server
$ sudo systemctl enable mysql
$ sudo systemctl start mysql
$ sudo systemctl status mysql

$ sudo mysql_secure_installation
  VALIDATE PASSWORD: Enter Y
  Password strength policy: Enter 2
  Remove anonymous users: Enter Y
  Disallow root login remotely: Enter Y
  Remove test database: Enter Y
  Reload privileges tables now: Enter Y

$ sudo mysql
$ mysql > alter user 'root'@'localhost' IDENTIFIED BY 'Strong@123456789';
$ mysql > FLUSH PRIVILEGES;
$ mysql > EXIT

$ sudo mysql -u root -p
$ mysql > CREATE database ketnoi24;
$ mysql > SHOW DATABASES;
$ mysql > CREATE USER 'ketnoi24'@'localhost' IDENTIFIED BY 'Strong@123456789';
$ mysql > GRANT ALL PRIVILEGES ON ketnoi24.* TO 'ketnoi24'@'localhost';
$ mysql > FLUSH PRIVILEGES;
$ mysql > EXIT


Install PHP
$ sudo apt install -y php php-fpm php-mysql php-opcache php-cli libapache2-mod-php php-mysqlnd php-dom php-simplexml php-xml php-xmlreader php-curl php-exif php-ftp php-gd php-iconv  php-json php-mbstring php-posix php-sockets php-tokenizer php-ldap

$ php -v
  PHP 8.3.6 (cli) (built: Jun 13 2024 15:23:20) (NTS)

$ sudo systemctl start php8.3-fpm
$ sudo systemctl enable php8.3-fpm
$ sudo systemctl status php8.3-fpm

Configure PHP-FPM
$ sudo a2enconf php8.3-fpm
$ sudo systemctl restart apache2
$ vi /etc/php/8.3/fpm/pool.d/www.conf
  [www]
  user = www-data
  group = www-data
  listen.owner = www-data
  listen.group = www-data

$ sudo systemctl restart php8.3-fpm

Configure Apache with PHP-FPM
$ vi /etc/apache2/sites-available/ketnoi24.conf
  <Directory "/var/www/html">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
  </Directory>

  <VirtualHost *:80>
     DocumentRoot /var/www/html/ketnoi24
     ServerName ubuntu.kn24.local
     ServerAlias www.ubuntu.kn24.local
     ErrorLog /error.log
     CustomLog /access.log combined

     <Directory "/var/www/html/ketnoi24/">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order Deny,Allow
            Allow from all
            Require all granted
      </Directory>
      RewriteEngine on
      RewriteCond %{HTTP:Connection} Upgrade [NC]
      RewriteRule /mywss ws://ubuntu.kn24.local:8090/process_chat/php-socket.php [P,L]
  </VirtualHost>

you should enable mod_rewrite with this command
$ sudo a2enmod rewrite

$ sudo a2ensite ketnoi24.conf
$ sudo apache2ctl configtest
  Syntax OK

$ mkdir -p /var/www/html/ketnoi24
$ cd /var/www/html/ketnoi24
$ wget https://ketnoi24.com/download/env/kn24_env.php
$ vi /var/www/html/ketnoi24/info.php
  <?php
  phpinfo
();
  
?>
$ chown -Rf www-data:www-data /var/www/html/ketnoi24
$ sudo systemctl restart apache2

to browser http://ubuntu.kn24.local/info.php -> test run PHP
to browser http://ubuntu.kn24.local/kn24_env.php -> for install ketnoi24 solution
Account SSH
Add crontab
Config SMTP account information
Firewalld open port
Config domain name
SSL extension configuration
Đóng