Cara membuat database server mariadb pada CentOS 7

Server database adalah sebuah server yang dapat menyimpan sebuah basis data yang diperlukan untuk kebutuhan tertentu seperti untuk program, untuk data-data disebuah organisasi/sekolah dan perusahaan. Kita dapat membuat sebuah server database kita sendiri, pada sistem operasi CentOS 7, untuk membuat server database, pada server tersebut kita memerlukan aplikasi yang dapat menyediakan layanan database.

Aplikasi penyedia database yang saya bahas kali ini adalah MariaDB, aplikasi ini terdapat pada repositori SCLo, maka sebelum dapat menginstall MariaDB kita harus menginstall repo SCLo pada server yang akan kita konfigurasi.

Berikut ini adalah topologi server yang akan saya konfigurasi :

Topologi

Node01 DB Server

  1. Install repo centos sclo terlebih dahulu, karena mariadb terdapat pada repo tersebut, jika pada repo centos default versinya masih yang 5.5, Setelah itu baru install mariadb.
  2. [root@node01 ~]# yum -y install centos-release-scl-rh centos-release-scl
    [root@node01 ~]# yum --enablerepo=centos-sclo-rh -y install rh-mariadb102-mariadb-server
  3. Setelah terinstall, berhubung aplikasi yang berasal dari repo sclo diinstall pada direktori /opt kita perlu melakukan load environtment agar mariadb dapat digunakan.
  4. [root@node01 ~]# mysql #belum bisa digunakan
    -bash: mysql: command not found

    #kita aktifkan

    [root@node01 ~]# scl enable rh-mariadb102 bash
    [root@node01 ~]# mysql -V #baru bisa digunakan
    mysql Ver 15.1 Distrib 10.2.8-MariaDB, for Linux (x86_64) using EditLine wrapper

    #Buat agar otomatis terload saat booting

    [root@node01 ~]# vi /etc/profile.d/rh-mariadb102.sh
    #!/bin/bash

    source /opt/rh/rh-mariadb102/enable
    export X_SCLS="`scl enable rh-mariadb102 'echo $X_SCLS'`"

  5. Edit file konfigurasi /etc/opt/rh/rh-mariadb102/my.cnf.d/mariadb-server.cnf untuk menentukan character set.
  6. [root@node01 ~]# vi /etc/opt/rh/rh-mariadb102/my.cnf.d/mariadb-server.cnf
    .......
    [mysqld]
    datadir=/var/opt/rh/rh-mariadb102/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    log-error=/var/opt/rh/rh-mariadb102/log/mariadb/mariadb.log
    pid-file=/run/rh-mariadb102-mariadb/mariadb.pid
    character-set-server=utf8
    .......
  7. Jalankan dan aktifkan service mariadb server.
  8. [root@node01 ~]# systemctl start rh-mariadb102-mariadb
    [root@node01 ~]# systemctl enable rh-mariadb102-mariadb
    Created symlink from /etc/systemd/system/multi-user.target.wants/rh-mariadb102-mariadb.service to /usr/lib/systemd/system/rh-mariadb102-mariadb.service.
  9. Kemudian lakukan konfigurasi awal untuk menentukan root password dan yang lainnya.
  10. [root@node01 ~]# mysql_secure_installation 

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

    In order to log into MariaDB to secure it, we'll need the current
    password for the root user. If you've just installed MariaDB, and
    you haven't set the root password yet, the password will be blank,
    so you should just press enter here.

    Enter current password for root (enter for none): #kosongkan
    OK, successfully used password, moving on...

    Setting the root password ensures that nobody can log into the MariaDB
    root user without the proper authorisation.

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


    By default, a MariaDB installation has an anonymous user, allowing anyone
    to log into MariaDB without having to have a user account created for
    them. This is intended only for testing, and to make the installation
    go a bit smoother. You should remove them before moving into a
    production environment.

    Remove anonymous users? [Y/n] Y
    ... Success!

    Normally, root should only be allowed to connect from 'localhost'. This
    ensures that someone cannot guess at the root password from the network.

    Disallow root login remotely? [Y/n] Y #ingin user root dapat diakses komputer lain atau tidak
    ... Success!

    By default, MariaDB comes with a database named 'test' that anyone can
    access. This is also intended only for testing, and should be removed
    before moving into a production environment.

    Remove test database and access to it? [Y/n] Y
    - Dropping test database...
    ... Success!
    - Removing privileges on test database...
    ... Success!

    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.

    Reload privilege tables now? [Y/n] Y
    ... Success!

    Cleaning up...

    All done! If you've completed all of the above steps, your MariaDB
    installation should now be secure.

    Thanks for using MariaDB!
  11. Setelah itu kita sudah dapat menggunakan server database ini.
  12. [root@node01 ~]# mysql -u root -p
    Enter password:
    Welcome to the MariaDB monitor. Commands end with ; or \g.
    Your MariaDB connection id is 16
    Server version: 10.2.8-MariaDB MariaDB Server

    Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MariaDB [(none)]> select user,host,password from mysql.user;
    +------+-----------+-------------------------------------------+
    | user | host | password |
    +------+-----------+-------------------------------------------+
    | root | localhost | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
    | root | 127.0.0.1 | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
    | root | ::1 | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
    +------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
    MariaDB [(none)]> create database testdb;
    Query OK, 1 row affected (0.00 sec)

    MariaDB [(none)]> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | testdb |
    +--------------------+
    4 rows in set (0.00 sec)

    MariaDB [(none)]>
  13. Agar server dapat diakses dari luar kita perlu membuka firewall mysql.
  14. [root@node01 ~]# firewall-cmd --add-service=mysql --permanent
    success
    [root@node01 ~]# firewall-cmd --reload
    success
  15. Untuk melihat error, log pada mariadb bisa menggunakan perintah dibawah ini.
  16. [root@node01 ~]# tail -f /var/opt/rh/rh-mariadb102/log/mariadb/mariadb.log 
    2018-06-29 8:49:39 140492900100288 [Note] InnoDB: Waiting for purge to start
    2018-06-29 8:49:39 140492900100288 [Note] InnoDB: 5.7.19 started; log sequence number 1620266
    2018-06-29 8:49:39 140491962164992 [Note] InnoDB: Loading buffer pool(s) from /var/opt/rh/rh-mariadb102/lib/mysql/ib_buffer_pool
    2018-06-29 8:49:39 140491962164992 [Note] InnoDB: Buffer pool(s) load completed at 180629 8:49:39
    2018-06-29 8:49:39 140492900100288 [Note] Plugin 'FEEDBACK' is disabled.
    2018-06-29 8:49:40 140492900100288 [Note] Server socket created on IP: '::'.
    2018-06-29 8:49:40 140492900100288 [Note] Reading of all Master_info entries succeded
    2018-06-29 8:49:40 140492900100288 [Note] Added new Master_info '' to hash table
    2018-06-29 8:49:40 140492900100288 [Note] /opt/rh/rh-mariadb102/root/usr/libexec/mysqld: ready for connections.
    Version: '10.2.8-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server

Sampai disini saja postingan saya kali ini,
Sekian terima kasih.

Cara membuat database server mariadb pada CentOS 7

Server database adalah sebuah server yang dapat menyimpan sebuah basis data yang diperlukan untuk kebutuhan tertentu seperti untuk program, untuk data-data disebuah organisasi/sekolah dan perusahaan. Kita dapat membuat sebuah server database kita sendiri, pada sistem operasi CentOS 7, untuk membuat server database, pada server tersebut kita memerlukan aplikasi yang dapat menyediakan layanan database.

Aplikasi penyedia database yang saya bahas kali ini adalah MariaDB, aplikasi ini terdapat pada repositori SCLo, maka sebelum dapat menginstall MariaDB kita harus menginstall repo SCLo pada server yang akan kita konfigurasi.

Berikut ini adalah topologi server yang akan saya konfigurasi :

Topologi

Node01 DB Server

  1. Install repo centos sclo terlebih dahulu, karena mariadb terdapat pada repo tersebut, jika pada repo centos default versinya masih yang 5.5, Setelah itu baru install mariadb.
  2. [root@node01 ~]# yum -y install centos-release-scl-rh centos-release-scl
    [root@node01 ~]# yum --enablerepo=centos-sclo-rh -y install rh-mariadb102-mariadb-server
  3. Setelah terinstall, berhubung aplikasi yang berasal dari repo sclo diinstall pada direktori /opt kita perlu melakukan load environtment agar mariadb dapat digunakan.
  4. [root@node01 ~]# mysql #belum bisa digunakan
    -bash: mysql: command not found

    #kita aktifkan

    [root@node01 ~]# scl enable rh-mariadb102 bash
    [root@node01 ~]# mysql -V #baru bisa digunakan
    mysql Ver 15.1 Distrib 10.2.8-MariaDB, for Linux (x86_64) using EditLine wrapper

    #Buat agar otomatis terload saat booting

    [root@node01 ~]# vi /etc/profile.d/rh-mariadb102.sh
    #!/bin/bash

    source /opt/rh/rh-mariadb102/enable
    export X_SCLS="`scl enable rh-mariadb102 'echo $X_SCLS'`"

  5. Edit file konfigurasi /etc/opt/rh/rh-mariadb102/my.cnf.d/mariadb-server.cnf untuk menentukan character set.
  6. [root@node01 ~]# vi /etc/opt/rh/rh-mariadb102/my.cnf.d/mariadb-server.cnf
    .......
    [mysqld]
    datadir=/var/opt/rh/rh-mariadb102/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    log-error=/var/opt/rh/rh-mariadb102/log/mariadb/mariadb.log
    pid-file=/run/rh-mariadb102-mariadb/mariadb.pid
    character-set-server=utf8
    .......
  7. Jalankan dan aktifkan service mariadb server.
  8. [root@node01 ~]# systemctl start rh-mariadb102-mariadb
    [root@node01 ~]# systemctl enable rh-mariadb102-mariadb
    Created symlink from /etc/systemd/system/multi-user.target.wants/rh-mariadb102-mariadb.service to /usr/lib/systemd/system/rh-mariadb102-mariadb.service.
  9. Kemudian lakukan konfigurasi awal untuk menentukan root password dan yang lainnya.
  10. [root@node01 ~]# mysql_secure_installation 

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

    In order to log into MariaDB to secure it, we'll need the current
    password for the root user. If you've just installed MariaDB, and
    you haven't set the root password yet, the password will be blank,
    so you should just press enter here.

    Enter current password for root (enter for none): #kosongkan
    OK, successfully used password, moving on...

    Setting the root password ensures that nobody can log into the MariaDB
    root user without the proper authorisation.

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


    By default, a MariaDB installation has an anonymous user, allowing anyone
    to log into MariaDB without having to have a user account created for
    them. This is intended only for testing, and to make the installation
    go a bit smoother. You should remove them before moving into a
    production environment.

    Remove anonymous users? [Y/n] Y
    ... Success!

    Normally, root should only be allowed to connect from 'localhost'. This
    ensures that someone cannot guess at the root password from the network.

    Disallow root login remotely? [Y/n] Y #ingin user root dapat diakses komputer lain atau tidak
    ... Success!

    By default, MariaDB comes with a database named 'test' that anyone can
    access. This is also intended only for testing, and should be removed
    before moving into a production environment.

    Remove test database and access to it? [Y/n] Y
    - Dropping test database...
    ... Success!
    - Removing privileges on test database...
    ... Success!

    Reloading the privilege tables will ensure that all changes made so far
    will take effect immediately.

    Reload privilege tables now? [Y/n] Y
    ... Success!

    Cleaning up...

    All done! If you've completed all of the above steps, your MariaDB
    installation should now be secure.

    Thanks for using MariaDB!
  11. Setelah itu kita sudah dapat menggunakan server database ini.
  12. [root@node01 ~]# mysql -u root -p
    Enter password:
    Welcome to the MariaDB monitor. Commands end with ; or \g.
    Your MariaDB connection id is 16
    Server version: 10.2.8-MariaDB MariaDB Server

    Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MariaDB [(none)]> select user,host,password from mysql.user;
    +------+-----------+-------------------------------------------+
    | user | host | password |
    +------+-----------+-------------------------------------------+
    | root | localhost | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
    | root | 127.0.0.1 | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
    | root | ::1 | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
    +------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
    MariaDB [(none)]> create database testdb;
    Query OK, 1 row affected (0.00 sec)

    MariaDB [(none)]> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | testdb |
    +--------------------+
    4 rows in set (0.00 sec)

    MariaDB [(none)]>
  13. Agar server dapat diakses dari luar kita perlu membuka firewall mysql.
  14. [root@node01 ~]# firewall-cmd --add-service=mysql --permanent
    success
    [root@node01 ~]# firewall-cmd --reload
    success
  15. Untuk melihat error, log pada mariadb bisa menggunakan perintah dibawah ini.
  16. [root@node01 ~]# tail -f /var/opt/rh/rh-mariadb102/log/mariadb/mariadb.log 
    2018-06-29 8:49:39 140492900100288 [Note] InnoDB: Waiting for purge to start
    2018-06-29 8:49:39 140492900100288 [Note] InnoDB: 5.7.19 started; log sequence number 1620266
    2018-06-29 8:49:39 140491962164992 [Note] InnoDB: Loading buffer pool(s) from /var/opt/rh/rh-mariadb102/lib/mysql/ib_buffer_pool
    2018-06-29 8:49:39 140491962164992 [Note] InnoDB: Buffer pool(s) load completed at 180629 8:49:39
    2018-06-29 8:49:39 140492900100288 [Note] Plugin 'FEEDBACK' is disabled.
    2018-06-29 8:49:40 140492900100288 [Note] Server socket created on IP: '::'.
    2018-06-29 8:49:40 140492900100288 [Note] Reading of all Master_info entries succeded
    2018-06-29 8:49:40 140492900100288 [Note] Added new Master_info '' to hash table
    2018-06-29 8:49:40 140492900100288 [Note] /opt/rh/rh-mariadb102/root/usr/libexec/mysqld: ready for connections.
    Version: '10.2.8-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server

Sampai disini saja postingan saya kali ini,
Sekian terima kasih.

Konfigurasi proxy load balance Nginx pada CentOS 7

Sebelumnya saya sudah membahas reverse proxy pada Nginx yang memungkinkan kita membuat server Frontend dan Backend di posting ini, pada kali ini konfigurasi tidak jauh berbeda dengan reverse proxy hanya saja ditambahkan Load Balance pada server backend.

Berikut ini adalah topologi server yang akan saya konfigurasi :

Topologi

Berdasarkan topologi diatas, jika kita mengakses server controller maka akan diteruskan pada server backend #1 kemudian jika mengakses untuk yang kedua kalinya akan diteruskan ke backend #2.

Frontend Server

  1. Pastikan server sudah terinstall nginx sebelumnya dan sudah dapat beroperasi. Jika belum install terlebih dahulu web server nginx pada server tersebut, bisa dilihat pada posting saya yang ini.
  2. Lalu buka file konfigurasi /etc/nginx/nginx.conf untuk menambahkan konfigurasi nginx.
  3. [root@m1-dz ~]# vi /etc/nginx/nginx.conf
    http {
    #tambahkan ini pada bagian http {}
    upstream belakang {
    server node01.network.dz;
    #daftar server backend
    server node02.network.dz;
    }


    server {
    listen 80;
    #listen [::]:80 default_server;
    server_name www.network.dz;
    root /usr/share/nginx/html;
    #Tambahkan ini di bagian server {}
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    proxy_pass http://belakang;
    }


  4. Lakukan pengecekan sintaks konfigurasi.
  5. [root@m1-dz ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
  6. Restart service nginx untuk memperbarui konfigurasi.
  7. [root@m1-dz ~]# systemctl restart nginx

Backend Server Node01 & Node02

Pada kedua server ini hanya web server biasa tanpa konfigurasi khusus, bisa menggunakan apache untuk backend nya.

Testing Client

Setelah konfigurasi selesai dilakukan kita lakukan pengetesan pada client.

  1. Akses ke1
  2. Akses ke2

Cukup sampai disini postingan saya kali ini,
Sekian Terima Kasih.

Referensi

Server World

Konfigurasi proxy load balance Nginx pada CentOS 7

Sebelumnya saya sudah membahas reverse proxy pada Nginx yang memungkinkan kita membuat server Frontend dan Backend di posting ini, pada kali ini konfigurasi tidak jauh berbeda dengan reverse proxy hanya saja ditambahkan Load Balance pada server backend.

Berikut ini adalah topologi server yang akan saya konfigurasi :

Topologi

Berdasarkan topologi diatas, jika kita mengakses server controller maka akan diteruskan pada server backend #1 kemudian jika mengakses untuk yang kedua kalinya akan diteruskan ke backend #2.

Frontend Server

  1. Pastikan server sudah terinstall nginx sebelumnya dan sudah dapat beroperasi. Jika belum install terlebih dahulu web server nginx pada server tersebut, bisa dilihat pada posting saya yang ini.
  2. Lalu buka file konfigurasi /etc/nginx/nginx.conf untuk menambahkan konfigurasi nginx.
  3. [root@m1-dz ~]# vi /etc/nginx/nginx.conf
    http {
    #tambahkan ini pada bagian http {}
    upstream belakang {
    server node01.network.dz;
    #daftar server backend
    server node02.network.dz;
    }


    server {
    listen 80;
    #listen [::]:80 default_server;
    server_name www.network.dz;
    root /usr/share/nginx/html;
    #Tambahkan ini di bagian server {}
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    proxy_pass http://belakang;
    }


  4. Lakukan pengecekan sintaks konfigurasi.
  5. [root@m1-dz ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
  6. Restart service nginx untuk memperbarui konfigurasi.
  7. [root@m1-dz ~]# systemctl restart nginx

Backend Server Node01 & Node02

Pada kedua server ini hanya web server biasa tanpa konfigurasi khusus, bisa menggunakan apache untuk backend nya.

Testing Client

Setelah konfigurasi selesai dilakukan kita lakukan pengetesan pada client.

  1. Akses ke1
  2. Akses ke2

Cukup sampai disini postingan saya kali ini,
Sekian Terima Kasih.

Referensi

Server World

Konfigurasi HTTPS pada Nginx CentOS 7

Secara default sebuah web server HTTP seperti Nginx tidak memiliki mekanisme keamanan dalam mengirimkan data dari server ke client, hal ini menjadi masalah ketika aplikasi web yang ada didalam web server tersebut mengirimkan data-data yang sensitif seperti username dan password, untuk mengatasinya web server perlu mengaktifkan TLS/SSL sehingga protokol yang digunakan menjadi HTTPS.

Protokol HTTPS menggunakan TLS/SSL untuk mengamankan setiap data yang akan dikirimkan, sehingga ketika data dikirimkan lewat jaringan tidak ada yang melihat isi dari data tersebut kecuali si pengirim dan penerima, HTTPS berjalan pada port 443, dan memerlukan sebuah sertifikat digital yang ditandatangani sebuah CA untuk beroperasi.

Kali ini saya akan membahas cara mengkonfigurasi Nginx agar dapat menjalankan HTTPS.

Topologi

Web Server

  1. Pertama pastikan nginx sudah dapat beroperasi sebelumnya, jika belum bisa lihat disini.
  2. Kedua buatlah sebuah sertifikat digital self-signed atau dari CA, saya sudah pernah membahas cara membuat CA pada posting yang ini.
  3. Buka kembali file konfigurasi nginx pada /etc/nginx/nginx.conf, tapi jika ingin menerapkannya pada virtual host maka sesuaikan file konfigurasinya, contohnya pada vi /etc/nginx/conf.d/vhost.conf.
  4. [root@m1-dz ~]# vi /etc/nginx/nginx.conf
    server {
    listen 443 ssl;
    #listen [::]:80 default_server;
    server_name www.network.dz;
    root /usr/share/nginx/html;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;
    ssl_certificate /etc/pki/tls/certs/web-cert.crt; #lokasi sertifikat
    ssl_certificate_key /etc/pki/tls/private/web-key.key; #private key

  5. Restart service nginx untuk memperbarui konfigurasi.
  6. [root@m1-dz ~]# systemctl restart nginx
  7. Testing client lewat firefox.
  8. Penting ! , jika pada google chrome maka akan tentap mendapatkan error meskipun sudah mengimport CA, ini dikarenakan bug pada Google chrome versi yang baru baru ini.

Sekian, sampai disini saja postingan saya kali ini

Terima Kasih

Referensi

  1. Server World

Konfigurasi HTTPS pada Nginx CentOS 7

Secara default sebuah web server HTTP seperti Nginx tidak memiliki mekanisme keamanan dalam mengirimkan data dari server ke client, hal ini menjadi masalah ketika aplikasi web yang ada didalam web server tersebut mengirimkan data-data yang sensitif seperti username dan password, untuk mengatasinya web server perlu mengaktifkan TLS/SSL sehingga protokol yang digunakan menjadi HTTPS.

Protokol HTTPS menggunakan TLS/SSL untuk mengamankan setiap data yang akan dikirimkan, sehingga ketika data dikirimkan lewat jaringan tidak ada yang melihat isi dari data tersebut kecuali si pengirim dan penerima, HTTPS berjalan pada port 443, dan memerlukan sebuah sertifikat digital yang ditandatangani sebuah CA untuk beroperasi.

Kali ini saya akan membahas cara mengkonfigurasi Nginx agar dapat menjalankan HTTPS.

Topologi

Web Server

  1. Pertama pastikan nginx sudah dapat beroperasi sebelumnya, jika belum bisa lihat disini.
  2. Kedua buatlah sebuah sertifikat digital self-signed atau dari CA, saya sudah pernah membahas cara membuat CA pada posting yang ini.
  3. Buka kembali file konfigurasi nginx pada /etc/nginx/nginx.conf, tapi jika ingin menerapkannya pada virtual host maka sesuaikan file konfigurasinya, contohnya pada vi /etc/nginx/conf.d/vhost.conf.
  4. [root@m1-dz ~]# vi /etc/nginx/nginx.conf
    server {
    listen 443 ssl;
    #listen [::]:80 default_server;
    server_name www.network.dz;
    root /usr/share/nginx/html;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE+RSAGCM:ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:!aNULL!eNull:!EXPORT:!DES:!3DES:!MD5:!DSS;
    ssl_certificate /etc/pki/tls/certs/web-cert.crt; #lokasi sertifikat
    ssl_certificate_key /etc/pki/tls/private/web-key.key; #private key

  5. Restart service nginx untuk memperbarui konfigurasi.
  6. [root@m1-dz ~]# systemctl restart nginx
  7. Testing client lewat firefox.
  8. Penting ! , jika pada google chrome maka akan tentap mendapatkan error meskipun sudah mengimport CA, ini dikarenakan bug pada Google chrome versi yang baru baru ini.

Sekian, sampai disini saja postingan saya kali ini

Terima Kasih

Referensi

  1. Server World

Konfigurasi Virtual Host nginx pada CentOS 7

Virtual Hosting adalah salah satu metode pada web server yang memungkinkan dalam satu server terdapat konten web site yang berbeda beda, cara membedakannya dengan alamat domain atau sub domain yang diakses, sehingga bisa dikatakan dalam satu server memiliki lebih dari satu domain atau sub domain.

Kegunaan dari Virtual Hosting ini kita dapat meletakan sejumlah aplikasi web based dalam satu server yang sama, misalnya untuk www berisi halaman default dari web server dan untuk webmail berisi halaman webmail untuk mengakses mail server.

Topologi

Kali ini saya akan membahas konfigurasi virtual hosting pada nginx berdasarkan topologi dibawah ini :

Pada topologi diatas, web server memiliki 3 subdomain yang berbeda, nantinya masing-masing subdomain memiliki isi yang berbeda beda menggunakan virtual host.

Web Server

  1. Pastikan server dan nginx sudah dapat berjalan dan dikonfigurasi sebelumnya.
  2. Jika belum dapat dilihat pada postingan saya yang ini, Jika sudah kita buat file konfigurasi vhost pada direktori /etc/nginx/conf.d/.
  3. [root@m1-dz ~]# vi /etc/nginx/conf.d/vhost.conf
    server {
    listen 80;
    server_name admin.network.dz; #subdomain yang diinginkan

    location / {
    root /usr/share/nginx/admin; #lokasi file html
    index index.html;
    }
    }


    server {
    listen 80;
    server_name webmail.network.dz;

    location / {
    root /usr/share/nginx/webmail;
    index index.html;
    }
    }


  4. Lakukan pengecekan sintaks, pastikan tidak ada yang error.
  5. [root@m1-dz ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
  6. Buat file html pada masing-masing root direcotry situs web.
  7. [root@m1-dz ~]# mkdir /usr/share/nginx/admin /usr/share/nginx/webmail
    [root@m1-dz ~]# vi /usr/share/nginx/admin/index.html
    <h1>Admin website</h1>
    <h2>admin.network.dz</h2>

    [root@m1-dz ~]# vi /usr/share/nginx/webmail/index.html
    <h1>Webmail website</h1>
    <h2>webmail.network.dz</h2>
  8. Restart aplikasi nginx untuk memperbarui konfigurasi.
  9. [root@m1-dz ~]# systemctl restart nginx
  10. Testing akses  domain-domain tersebut lewat client.

Jika tidak ada masalah sampai disini, maka konfigurasi yang dilakukan telah selesai.

Sekian terima kasih.

Referensi

  • Server World
  • Konfigurasi Virtual Host nginx pada CentOS 7

    Virtual Hosting adalah salah satu metode pada web server yang memungkinkan dalam satu server terdapat konten web site yang berbeda beda, cara membedakannya dengan alamat domain atau sub domain yang diakses, sehingga bisa dikatakan dalam satu server memiliki lebih dari satu domain atau sub domain.

    Kegunaan dari Virtual Hosting ini kita dapat meletakan sejumlah aplikasi web based dalam satu server yang sama, misalnya untuk www berisi halaman default dari web server dan untuk webmail berisi halaman webmail untuk mengakses mail server.

    Topologi

    Kali ini saya akan membahas konfigurasi virtual hosting pada nginx berdasarkan topologi dibawah ini :

    Pada topologi diatas, web server memiliki 3 subdomain yang berbeda, nantinya masing-masing subdomain memiliki isi yang berbeda beda menggunakan virtual host.

    Web Server

    1. Pastikan server dan nginx sudah dapat berjalan dan dikonfigurasi sebelumnya.
    2. Jika belum dapat dilihat pada postingan saya yang ini, Jika sudah kita buat file konfigurasi vhost pada direktori /etc/nginx/conf.d/.
    3. [root@m1-dz ~]# vi /etc/nginx/conf.d/vhost.conf
      server {
      listen 80;
      server_name admin.network.dz; #subdomain yang diinginkan

      location / {
      root /usr/share/nginx/admin; #lokasi file html
      index index.html;
      }
      }


      server {
      listen 80;
      server_name webmail.network.dz;

      location / {
      root /usr/share/nginx/webmail;
      index index.html;
      }
      }


    4. Lakukan pengecekan sintaks, pastikan tidak ada yang error.
    5. [root@m1-dz ~]# nginx -t
      nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
      nginx: configuration file /etc/nginx/nginx.conf test is successful
    6. Buat file html pada masing-masing root direcotry situs web.
    7. [root@m1-dz ~]# mkdir /usr/share/nginx/admin /usr/share/nginx/webmail
      [root@m1-dz ~]# vi /usr/share/nginx/admin/index.html
      <h1>Admin website</h1>
      <h2>admin.network.dz</h2>

      [root@m1-dz ~]# vi /usr/share/nginx/webmail/index.html
      <h1>Webmail website</h1>
      <h2>webmail.network.dz</h2>
    8. Restart aplikasi nginx untuk memperbarui konfigurasi.
    9. [root@m1-dz ~]# systemctl restart nginx
    10. Testing akses  domain-domain tersebut lewat client.

    Jika tidak ada masalah sampai disini, maka konfigurasi yang dilakukan telah selesai.

    Sekian terima kasih.

    Referensi

  • Server World
  • Konfigurasi DNS Master Slave pada CentOS 7

    Kali ini saya akan mebahas materi kelanjutan dari DNS Server yang sudah saya posting sebelumnya, Pada umumnya dalam jaringan atau server terdapat istilah redudant yang artinya ada penggati jika yang utama mengalami kegagalan. Dalam DNS Server istilahnya adalah Master Slave, server utama yang menyimpan database asli adalah Master, sedangkan server yang hanya menyalin saja dari yang asli disebut dengan Slave.

    Sekarang saya akan menunjukan cara membuat Slave DNS Server, konfigurasi merupakan kelanjutan dari posting saya sebelumnya. Berikut ini adalah topologinya :

    Saya akan menambahkan satu zone forward baru dan satu zone reverse baru yaitu server.net dan 10.0.0.64/26, yang menjadi server Utama adalah dlp1 konfigurasi seperti pada posting sebelumnya, dan dlp2 yang merupakan replika dari dlp1.

    Konfigurasi Server Master

    Di server master kita akan melakukan konfigurasi IP Address server slave yang boleh menyalin database dari server master ini, melanjutkan konfigurasi sebelumnya dan juga menambahkan zone forward, reverse baru.

    1. Edit file konfigurasi bind /etc/named.conf
    2. [root@dlp1 ~]# nano /etc/named.conf
      • Pada bagian allow-transfer tambahkan IP Address server DNS Slave agar diizinkan melakukan transfer penyalinan. Jika tidak ada allow-transfer maka tambahkan saja.
      • options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { none; };
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query { any; };
        allow-transfer { localhost; 10.0.0.66; };
      • Kemudian pada bagian paling bawah kita tambahkan zone forward dan reverse baru.
      • zone "jaringan.org" IN { //Forward Zone
        type master; //Master atau server DNS utama
        file "/var/named/db.jaringan"; //File database zone
        };


        zone "server.net" IN {
        type master;
        file "/var/named/db.server";
        };


        zone "0.18.172.in-addr.arpa" IN { //Reverse Zone
        type master;
        file "/var/named/db.18";
        };


        zone "0.0.10.in-addr.arpa" IN {
        type master;
        file "/var/named/db.64";
        };


        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
      • Simpan file tersebut.
    3. Setelah konfigurasi bind named selesai, sekarang kita buat file database untuk zone yang baru.
      • Seperti biasa salin saja file database contoh yang sudah ada.
      • [root@dlp1 ~]# cd /var/named/
        [root@dlp1 named]# cp named.empty db.server
        [root@dlp1 named]# cp named.empty db.64
      • Edit file untuk zone forwardnya, kemudian isi dengan database record DNS sesuai dengan topologi.
      • [root@dlp1 named]# nano db.server
        $TTL 3H
        @ IN SOA jaringan.org. root.jaringan.org. (
        0 ; serial
        1D ; refresh
        1H ; retry
        1W ; expire
        3H ) ; minimum
        @ IN NS dlp1.jaringan.org.
        @ IN A 10.0.0.66
        dlp2 IN A 10.0.0.66
        node03 IN A 10.0.0.67
        node04 IN A 10.0.0.68
        www IN CNAME node03.server.net.
        web IN CNAME node03.server.net.
        mail IN CNAME node03.server.net.
        ftp IN CNAME node04.server.net.
        smb IN CNAME node04.server.net.
        IN MX 0 dlp2.server.net.
      • Sekarang kita edit file reverse.
      • [root@dlp1 named]# nano db.64
        $TTL 3H
        @ IN SOA jaringan.org. root.jaringan.org. (
        0 ; serial
        1D ; refresh
        1H ; retry
        1W ; expire
        3H ) ; minimum
        @ IN NS dlp1.jaringan.org.
        66 IN PTR server.net.
        66 IN PTR dlp2.server.net.
        67 IN PTR node03.server.net.
        68 IN PTR node04.server.net.
    4. Seperti biasa cek sintaks konfigurasi dari kesalahan penulisan.
    5. [root@dlp1 named]# named-checkconf -z
      zone jaringan.org/IN: loaded serial 0
      zone server.net/IN: loaded serial 0
      zone 0.18.172.in-addr.arpa/IN: loaded serial 0
      zone 64.0.0.10.in-addr.arpa/IN: loaded serial 0
      zone localhost.localdomain/IN: loaded serial 0
      zone localhost/IN: loaded serial 0
      zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
      zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
      zone 0.in-addr.arpa/IN: loaded serial 0
    6. Atur permission file database tersebut agar dapat dibaca oleh bind named.
    7. [root@dlp1 named]# chown named:named db.server 
      [root@dlp1 named]# chown named:named db.64
    8. Restart service named untuk memperbarui konfigurasi.
    9. [root@dlp1 named]# systemctl restart named

    Konfigurasi Server Slave

    Setelah konfigurasi server master selesai dan dapat bekerja dengan baik, sekarang kita akan mengkonfigurasi server slave dlp2 (diposisi kanan pada gambar topologi) agar server ini melakukan replika atau meniru database domain/zone pada server dns master.

    1. Langkah pertama pastinya yaitu menginstall aplikasi bind atau named pada server ini.
    2. [root@dlp2 ~]# yum -y install bind bind-utils
    3. Edit file konfigurasi bind named /etc/named.conf untuk mengatur beberapa parameter.
      • Menetukan listen address, dan siapa saja yang boleh mengakses DNS Server ini.
      • options {
        listen-on port 53 { any; }; //Menerima req DNS dari mana saja
        listen-on-v6 port 53 { none; }; //Mematikan IPv6
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query { any; }; //Siapa saja boleh mengakses
      • Kemudian masukan zone forward dan reverse seperti yang ada di server master, tetapi tipenya Slave dan beserta IP Address dari server master yang memiliki databasenya. Letakan skrip ini dibagian bawah.
      • zone "jaringan.org" IN {
        type slave;
        masters {172.18.0.10;};
        };

        zone "server.net" IN {
        type slave;
        masters {172.18.0.10;};
        };

        zone "0.18.172.in-addr.arpa" {
        type slave;
        masters {172.18.0.10;};
        };

        zone "0.0.10.in-addr.arpa" {
        type slave;
        masters {172.18.0.10;};
        };


        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
    4. Buka akses firewall untuk dns pada server ini.
    5. [root@dlp2 ~]# firewall-cmd --add-service=dns --permanent
      success
      [root@dlp2 ~]# firewall-cmd --reload
      success
    6. Restart bind named untuk menyalin database domain dari server master.
    7. [root@dlp2 ~]# systemctl restart named
      [root@dlp2 ~]# systemctl enable named
      Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

      Note : untuk mengetahui jika terjadi sebuah error kita tinggal lihat saya pesan log server, caranya ketikan perintah tail -f /var/log/messages

    Setelah selesai mengkonfigurasi semuanya, sekarang kita lakukan testing pada server slave apakah sudah menyalin seluruh database dari server master.

    [root@dlp2 ~]# nslookup server.net //Testing A Record
    Server: 10.0.0.66
    Address: 10.0.0.66#53

    Name: server.net
    Address: 10.0.0.66

    [root@dlp2 ~]# nslookup www.server.net //Testing CNAME alias
    Server: 10.0.0.66
    Address: 10.0.0.66#53

    www.server.net canonical name = node03.server.net.
    Name: node03.server.net
    Address: 10.0.0.67

    [root@dlp2 ~]# nslookup 10.0.0.68 //Testing Reverse
    Server: 10.0.0.66
    Address: 10.0.0.66#53

    68.0.0.10.in-addr.arpa name = node04.server.net.

    Jika tidak ada pesan error tandanya semuanya sudah berhasil dan sudah dapat digunakan. Sekian terima kasih mohon maaf jika ada kesalahan.

    Konfigurasi DNS Master Slave pada CentOS 7

    Kali ini saya akan mebahas materi kelanjutan dari DNS Server yang sudah saya posting sebelumnya, Pada umumnya dalam jaringan atau server terdapat istilah redudant yang artinya ada penggati jika yang utama mengalami kegagalan. Dalam DNS Server istilahnya adalah Master Slave, server utama yang menyimpan database asli adalah Master, sedangkan server yang hanya menyalin saja dari yang asli disebut dengan Slave.

    Sekarang saya akan menunjukan cara membuat Slave DNS Server, konfigurasi merupakan kelanjutan dari posting saya sebelumnya. Berikut ini adalah topologinya :

    Saya akan menambahkan satu zone forward baru dan satu zone reverse baru yaitu server.net dan 10.0.0.64/26, yang menjadi server Utama adalah dlp1 konfigurasi seperti pada posting sebelumnya, dan dlp2 yang merupakan replika dari dlp1.

    Konfigurasi Server Master

    Di server master kita akan melakukan konfigurasi IP Address server slave yang boleh menyalin database dari server master ini, melanjutkan konfigurasi sebelumnya dan juga menambahkan zone forward, reverse baru.

    1. Edit file konfigurasi bind /etc/named.conf
    2. [root@dlp1 ~]# nano /etc/named.conf
      • Pada bagian allow-transfer tambahkan IP Address server DNS Slave agar diizinkan melakukan transfer penyalinan. Jika tidak ada allow-transfer maka tambahkan saja.
      • options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { none; };
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query { any; };
        allow-transfer { localhost; 10.0.0.66; };
      • Kemudian pada bagian paling bawah kita tambahkan zone forward dan reverse baru.
      • zone "jaringan.org" IN { //Forward Zone
        type master; //Master atau server DNS utama
        file "/var/named/db.jaringan"; //File database zone
        };


        zone "server.net" IN {
        type master;
        file "/var/named/db.server";
        };


        zone "0.18.172.in-addr.arpa" IN { //Reverse Zone
        type master;
        file "/var/named/db.18";
        };


        zone "0.0.10.in-addr.arpa" IN {
        type master;
        file "/var/named/db.64";
        };


        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
      • Simpan file tersebut.
    3. Setelah konfigurasi bind named selesai, sekarang kita buat file database untuk zone yang baru.
      • Seperti biasa salin saja file database contoh yang sudah ada.
      • [root@dlp1 ~]# cd /var/named/
        [root@dlp1 named]# cp named.empty db.server
        [root@dlp1 named]# cp named.empty db.64
      • Edit file untuk zone forwardnya, kemudian isi dengan database record DNS sesuai dengan topologi.
      • [root@dlp1 named]# nano db.server
        $TTL 3H
        @ IN SOA jaringan.org. root.jaringan.org. (
        0 ; serial
        1D ; refresh
        1H ; retry
        1W ; expire
        3H ) ; minimum
        @ IN NS dlp1.jaringan.org.
        @ IN A 10.0.0.66
        dlp2 IN A 10.0.0.66
        node03 IN A 10.0.0.67
        node04 IN A 10.0.0.68
        www IN CNAME node03.server.net.
        web IN CNAME node03.server.net.
        mail IN CNAME node03.server.net.
        ftp IN CNAME node04.server.net.
        smb IN CNAME node04.server.net.
        IN MX 0 dlp2.server.net.
      • Sekarang kita edit file reverse.
      • [root@dlp1 named]# nano db.64
        $TTL 3H
        @ IN SOA jaringan.org. root.jaringan.org. (
        0 ; serial
        1D ; refresh
        1H ; retry
        1W ; expire
        3H ) ; minimum
        @ IN NS dlp1.jaringan.org.
        66 IN PTR server.net.
        66 IN PTR dlp2.server.net.
        67 IN PTR node03.server.net.
        68 IN PTR node04.server.net.
    4. Seperti biasa cek sintaks konfigurasi dari kesalahan penulisan.
    5. [root@dlp1 named]# named-checkconf -z
      zone jaringan.org/IN: loaded serial 0
      zone server.net/IN: loaded serial 0
      zone 0.18.172.in-addr.arpa/IN: loaded serial 0
      zone 64.0.0.10.in-addr.arpa/IN: loaded serial 0
      zone localhost.localdomain/IN: loaded serial 0
      zone localhost/IN: loaded serial 0
      zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
      zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
      zone 0.in-addr.arpa/IN: loaded serial 0
    6. Atur permission file database tersebut agar dapat dibaca oleh bind named.
    7. [root@dlp1 named]# chown named:named db.server 
      [root@dlp1 named]# chown named:named db.64
    8. Restart service named untuk memperbarui konfigurasi.
    9. [root@dlp1 named]# systemctl restart named

    Konfigurasi Server Slave

    Setelah konfigurasi server master selesai dan dapat bekerja dengan baik, sekarang kita akan mengkonfigurasi server slave dlp2 (diposisi kanan pada gambar topologi) agar server ini melakukan replika atau meniru database domain/zone pada server dns master.

    1. Langkah pertama pastinya yaitu menginstall aplikasi bind atau named pada server ini.
    2. [root@dlp2 ~]# yum -y install bind bind-utils
    3. Edit file konfigurasi bind named /etc/named.conf untuk mengatur beberapa parameter.
      • Menetukan listen address, dan siapa saja yang boleh mengakses DNS Server ini.
      • options {
        listen-on port 53 { any; }; //Menerima req DNS dari mana saja
        listen-on-v6 port 53 { none; }; //Mematikan IPv6
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query { any; }; //Siapa saja boleh mengakses
      • Kemudian masukan zone forward dan reverse seperti yang ada di server master, tetapi tipenya Slave dan beserta IP Address dari server master yang memiliki databasenya. Letakan skrip ini dibagian bawah.
      • zone "jaringan.org" IN {
        type slave;
        masters {172.18.0.10;};
        };

        zone "server.net" IN {
        type slave;
        masters {172.18.0.10;};
        };

        zone "0.18.172.in-addr.arpa" {
        type slave;
        masters {172.18.0.10;};
        };

        zone "0.0.10.in-addr.arpa" {
        type slave;
        masters {172.18.0.10;};
        };


        include "/etc/named.rfc1912.zones";
        include "/etc/named.root.key";
    4. Buka akses firewall untuk dns pada server ini.
    5. [root@dlp2 ~]# firewall-cmd --add-service=dns --permanent
      success
      [root@dlp2 ~]# firewall-cmd --reload
      success
    6. Restart bind named untuk menyalin database domain dari server master.
    7. [root@dlp2 ~]# systemctl restart named
      [root@dlp2 ~]# systemctl enable named
      Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

      Note : untuk mengetahui jika terjadi sebuah error kita tinggal lihat saya pesan log server, caranya ketikan perintah tail -f /var/log/messages

    Setelah selesai mengkonfigurasi semuanya, sekarang kita lakukan testing pada server slave apakah sudah menyalin seluruh database dari server master.

    [root@dlp2 ~]# nslookup server.net //Testing A Record
    Server: 10.0.0.66
    Address: 10.0.0.66#53

    Name: server.net
    Address: 10.0.0.66

    [root@dlp2 ~]# nslookup www.server.net //Testing CNAME alias
    Server: 10.0.0.66
    Address: 10.0.0.66#53

    www.server.net canonical name = node03.server.net.
    Name: node03.server.net
    Address: 10.0.0.67

    [root@dlp2 ~]# nslookup 10.0.0.68 //Testing Reverse
    Server: 10.0.0.66
    Address: 10.0.0.66#53

    68.0.0.10.in-addr.arpa name = node04.server.net.

    Jika tidak ada pesan error tandanya semuanya sudah berhasil dan sudah dapat digunakan. Sekian terima kasih mohon maaf jika ada kesalahan.