Tutorial Install Apache/httpd 2.4 di Centos 6

Install Apache/httpd 2.4 di Centos 6.7 64 Bit

Cara Install Apache/httpd 2.4 menggunakan Centos 6.7 64 Bit

Pada dasarnya di centos 6.X jika kita install httpd maka secara default akan menginstall httpd versi 2.2.X, kecuali jika kita install di centos 7.X
maka secara default akan menginstall httpd versi 2.4.6.
Informasinya untuk httpd versi 2.4 lebih baik secara perfomance dibanding httpd versi 2.2.X dan untuk informasi lebih lanjut bisa merujuk ke link ini
untuk features nya https://httpd.apache.org/docs/2.4/new_features_2_4.html

Baik kita langsung saja untuk memulai tutorialnya dan berikut saya informasikan kondisi VPS yang ditest untuk membuat tutorial ini :
a. VPS dengan OS CentOS 6 64 bit, 1vCore, 512 Ram 10GB SSD
b. Menggunakan webserver apache 2.4 dengan database server MariaDB 10.1
c. Dengan menggunakan module MPM Event. Sedikit info ini ada 3 jenis modulenya prefork, worker dan event, namun di sini kita mencoba menggunakan event karena infonya untuk traffic tinggi/pengunjung banyak event lebih di sarankan karena lebih ringan dan juga penggunaan resourcenya lumayan hemat

Baik kita akan memulai dengan menginstall web server, database dan PHP


A. Install httpd 2.4 di centos 6.7 64 bit
Terlebih dahulu kita harus Enable RHSCL Repository
Untuk ngehceck jika sudah ada atau belum (jika kosong berarti belum ada dan harus diinstall) :
[root@dummy ~]# yum repolist all | grep rhscl
[root@dummy ~]# yum install centos-release-scl
[root@dummy ~]# yum install -y yum-utils
[root@dummy ~]# yum clean all
[root@dummy ~]# yum repolist enabled
[root@dummy ~]# yum-config-manager --enable rhel-server-rhscl-6-rpms
[root@dummy ~]# yum install -y -q httpd24-httpd
[root@dummy ~]# service httpd24-httpd start
Sampai di step ini anda telah berhasil install httpd 2.4 di centos 6.7
Selanjutnya kita enable module event MPM dengan menghilangkan tanda pagar (#) untuk baris LoadModule mpm_event_module modules/mod_mpm_event.so di file /opt/rh/httpd24/root/etc/httpd/conf.modules.d/00-mpm.conf
Dan sisahnya pastikan diberi tanda pagar (#)
[root@dummy ~]# nano /opt/rh/httpd24/root/etc/httpd/conf.modules.d/00-mpm.conf
Setelah itu simpan dan save, lalu restart service httpd 2.4 nya
[root@dummy ~]# service httpd24-httpd restart
Kemudian silahkan check untuk memastikan apakah sudah menjalankan module MPM event
[root@dummy ~]# grep resuming /var/log/httpd24/error_log | tail -1
[Sun Jun 05 12:03:29.967596 2016] [mpm_event:notice] [pid 1350:tid 140708213446624] AH00489: Apache/2.4.12 (Red Hat) configured -- resuming normal operations
[root@dummy ~]#
Dari tampilan logs tersebut bisa kita lihat bahwasanya “mpm_event” telah aktif
Dan atau dengan cara lain untuk memastikannya yaitu sebagai berikut :
[root@dummy ~]# scl enable httpd24 'httpd -V'
Server version: Apache/2.4.12 (Red Hat)
Server built: Oct 5 2015 20:51:46
Server's Module Magic Number: 20120211:41
Server loaded: APR 1.5.1, APR-UTIL 1.5.4
Compiled using: APR 1.5.1, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/opt/rh/httpd24/root/etc/httpd"
-D SUEXEC_BIN="/opt/rh/httpd24/root/usr/sbin/suexec"
-D DEFAULT_PIDLOG="/opt/rh/httpd24/root/var/run/httpd/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
[root@dummy ~]#

B. Install MariaDB, PHP module
1. Install dan enable Remi Repository
Terlebih dahulu kita install dan enable Remi Repositorynya
[root@dummy ~]# yum update && yum install epel-release
[root@dummy ~]# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Edit file /etc/yum.repos.d/remi.repo dan di bagian [remi] rubah enabled=0 menjadi enabled=1
Kemudian jika anda ingin menginstall versi php55 silahkan rubah enabled=0 menjadi enabled=1 di [remi-php55] atau
anda ingin menginstall versi php56 silahkan rubah enabled=0 menjadi enabled=1 di [remi-php56] .
[root@dummy ~]# nano /etc/yum.repos.d/remi.repo
Kemudian save,

2. Installing MariaDB/MySQL dan php
Untuk dapat menginstall MariaDB silahkan enable terlebih dahulu MariaDB repository dengan cara edit file /etc/yum.repos.d/mariadb.repo kemudian isikan baris berikut ini :
[root@dummy ~]# nano /etc/yum.repos.d/mariadb.repo
====================================================================
# MariaDB 10.1 CentOS repository list
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
====================================================================
[root@dummy ~]# yum --enablerepo=remi install mysql mysql-server php php-common php-mysql
[root@dummy ~]# yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-imap php-magickwand php-mbstring php-mcrypt php-mssql php-shout php-tidy php-pecl-apc
[root@dummy ~]# service httpd24-httpd restart
[root@dummy ~]# service mysql start
[root@dummy ~]# chkconfig mysql on
[root@dummy ~]# /usr/bin/mysql_secure_installation

C.Create VHOST
Pada tutorial sebelumnya yaitu Tutorial Manage VPS Non Panel kita pernah membuat VHOST namun menggunakan httpd versi 2.2.X, nah pada tutorial ini kita menggunakan httpd 2.4, pada dasarnya secara teknis sama namun ada sedikit yang membedakannya, untuk lebih pastinya kita langsung saja mencobanya :
Pertama kita rename dulu nama files berikut ini :
[root@dummy ~]# mv /opt/rh/httpd24/root/etc/httpd/conf.d/welcome.conf /opt/rh/httpd24/root/etc/httpd/conf.d/welcome.confOLD
[root@dummy ~]# mv /opt/rh/httpd24/root/etc/httpd/conf.d/autoindex.conf /opt/rh/httpd24/root/etc/httpd/conf.d/autoindex.confOLD
Kemudian kita buat file vhost.conf di folder /opt/rh/httpd24/root/etc/httpd/conf.d/ seperti berikut ini :
[root@dummy ~]# nano /opt/rh/httpd24/root/etc/httpd/conf.d/vhost.conf
Kemudian isikan baris berikut :
=====================================================================
<VirtualHost 111.112.113.114:80>
ServerAdmin webmaster@namadomainsaya.com
DocumentRoot "/home/namadomainsaya/public_html"
ServerName www.namadomainsaya.com
ServerAlias namadomainsaya.com
ErrorLog /home/namadomainsaya/public_html/error.log
<Directory /home/namadomainsaya/public_html>
Require all granted
AllowOverride All
Options FollowSymLinks
</Directory>
</VirtualHost>
=====================================================================
Kemudian simpan.
Selanjutnya kita edit file /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf
[root@dummy ~]# nano /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf
Dan lakukan penyesuaian/editan sebagai berikut ini :
=====================================================================
Rubah :
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
Menjadi :
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
Kemudian pastikan listen portnya sudah 80
Listen 80
Include conf.modules.d/*.conf
Kemudian Tambahkan Baris berikut ini:
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>

<IfModule proxy_module>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/namadomainsaya/public_html/$1
</IfModule>

<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 25
MaxConnectionsPerChild 1000
</IfModule>
=====================================================================
Selanjutnya kita menambahkan user baru sebut saja dengan nama : namadomainsaya
[root@dummy ~]# useradd namadomainsaya
[root@dummy ~]# passwd namadomainsaya
Changing password for user namadomainsaya.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
[root@dummy ~]# touch /home/namadomainsaya/error.log
[root@dummy ~]# mkdir /home/namadomainsaya/public_html
[root@dummy ~]# chmod 755 /home/namadomainsaya/
[root@dummy ~]# service httpd24-httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@dummy ~]#
[root@dummy ~]# yum install php-fpm
[root@dummy ~]# /etc/init.d/php-fpm restart

Catatan :
1. Default root direktori HTML untuk httpd 2.4 di sini adalah /opt/rh/httpd24/root/var/www/html/
2. Jadi, jika teman-teman ketika buat VHOST dan ingin meletakkan webnya di direktori /opt/rh/httpd24/root/var/www/namadomainsaya.com bisa tidak ada masalah, yang penting ditentukan direktorinya saat buat vhostnya
3. Kenapa di tutorial ini saya letak di /home/nama-user/public_html ? Alasan klisik yaitu saya biasanya tidak menggunakan folder default dan beberapa alasan lainnya,
3. Di tutorial ini rata-rata menggunakan user root, untuk alasan keamanan saya sarankan teman-teman untuk tidak menggunakan use root malah kalo bisa didisabled saja user rootnya, port default SSHnya dirubah dan jangan menggunakan password yang mudah ditebak,
4. Di tutorial ini saya hanya membahas tentang install HTTPD 2.4, install MariaDB 10.1 dan membuat VHOSTnya saja, namun sampai di sini seharusnya sudah bisa digunakan untuk ngehost sebuah atau beberapa website,
5. Jika ada teman-teman yang ingin mengkombinasikannya dengan DNS server, FTP server, kemudian bagaimana cara upload file ke dalam VPSnya dan bagaimana cara add databasenya maka bisa merujuk ke tutorial cara managed VPS non panel sebelumnya, caranya sama saja

Optional Speedup

Enable gzip compression :


Untuk mengenable gzip silahkan edit file ini /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf kemudian tambahkan baris berikut di baris paling bawah :
[root@dummy www]# nano /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf
==================================================
IncludeOptional conf.d/*.conf
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/php
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/x-js
==================================================

Enable Expires Headers

Untuk mengenable expires headers kita cukup bermain di .htaccess saja, edit file .htaccess dan tambahkan baris berikut ini :
==================================================
## Start Expires Headers
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType text/html "access plus 0 seconds"
# Data
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"

# RSS feed
ExpiresByType application/rss+xml "access plus 1 hour"

# Favicon (cannot be renamed)
ExpiresByType image/x-icon "access plus 1 week"

# Media: images, video, audio
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"

# HTC files (css3pie)
ExpiresByType text/x-component "access plus 1 month"
# Webfonts
ExpiresByType font/truetype "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"

<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>

</IfModule>
## End Expires Headers

==================================================

Configure entity tags (ETags)

Untuk ETags kita cukup bermain di .htaccess saja, edit file .htaccess dan tambahkan baris berikut ini :
==================================================
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(\.gz)?$">
Header unset ETag
FileETag None
</FilesMatch>

==================================================

Enable keep-alive

Untuk keep-alive kita cukup bermain di .htaccess saja, edit file .htaccess dan tambahkan baris berikut ini :
==================================================
<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>

==================================================

Dan berikut hasil perbedaan gtmetrix.com antara sebelum di tambahkan
Optional Speedup dan setelah di tambahkan Optional Speedup, namun ini bukan nilai terbaik dan bukan juga standarisasi jadi silahkan sesuaikan dengan kebutuhan dan lakukan experimen untuk mendapatkan hasil terbaik untuk kebutuhan anda, Dan ini hanya hasil semi-defaultnya belum dicoba optimalkan yang lainnya lagi.
Tested Wordpress Default :
Sebelum :

 

Sesudah :


Optional Step

Install Memcached (Caching Server)


Memcached adalah Program open source caching objek memori yang memungkinkan kita untuk meningkatkan dan mempercepat kinerja aplikasi web dinamis dengan caching data dan objek dalam memori. Memcached juga digunakan untuk cache seluruh tabel database dan query untuk meningkatkan kinerja database. Ini adalah sistem caching Opensource dan digunakan oleh banyak situs besar seperti YouTube, Facebook, Twitter, Reddit, Drupal, Zynga dll

Untuk pengguna web berbasis WordPress agar Memcached berfungsi dengan baik silahkan mengaktifkan/menggunakan plugin "Memcached Object Cache" setelah mengaktifkan Memcached di sisi server.
Baik berikut step by step install dan menjalankannya:
Pertama install dan enable reponya terlebih dahulu kemudian install paket memcachednya :
[root@dummy ~]# wget https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@dummy ~]# rpm -Uvh epel-release-6-8.noarch.rpm
[root@dummy ~]# yum install memcached
Setelah selesai install kemudian edit file /etc/sysconfig/memcached dan sesuaikan dengan baris berikut ini :
[root@dummy ~]# nano /etc/sysconfig/memcached
=====================================================
#Tentukan berjalan di port berapa
PORT="11211"
#memcached daemon
USER="memcached"
#Setting jumlah maksimal koneksi bersamaan
MAXCONN="1024"
#Tentukan besar Memory sisa untuk chachenya, nilai ini sesuaikan dengan kapasitas RAM yang anda gunakan, di sini saya menggunakan RAM 512MB contoh, jika 4GB RAM mungkin bisa sekitar 2048M
CACHESIZE="256"
#Isi dengan IP Server
OPTIONS="127.0.0.1"
=====================================================
Kemudian simpan, setelah itu enable dan jalankan service memcachednya:
[root@dummy ~]# chkconfig --levels 235 memcached on
[root@dummy ~]# /etc/init.d/memcached start
Starting memcached: [ OK ]
[root@dummy ~]# /etc/init.d/memcached restart
Stopping memcached: [ OK ]
Starting memcached: [ OK ]
[root@dummy ~]#
Untuk memeriksa statistik dari server bisa menggunakan memcached-tool.
[root@dummy ~]# memcached-tool 127.0.0.1 stats
#127.0.0.1:11211 Field Value
accepting_conns 1
auth_cmds 0
auth_errors 0
bytes 0
bytes_read 7
bytes_written 0
cas_badval 0
cas_hits 0
cas_misses 0
cmd_flush 0
cmd_get 0
cmd_set 0
cmd_touch 0
conn_yields 0
connection_structures 11
crawler_items_checked 0
And more....
Selanjutnya install Memcached PHP extension agar dapat bekerja dengan baik bersama Memcached daemon :
[root@dummy ~]# yum install php-pecl-memcache perl-Cache-Memcached python-memcached
Setelah itu restart service httpd Restart Service
[root@dummy ~]# service httpd24-httpd restart
[root@dummy ~]# /etc/init.d/php-fpm restart

 

Copyright Albenet Hosting Sunday 25-Jun-2017 All rights reserved.