Cara install Tengine – Jadi, beberapa waktu lalu saya menemukan sebuah website yang menggunakan teknologi tengine untuk web servernya. Akhirnya saya kepo soal tengine dan sekaligus mencoba-coba installasi tengine. Setelah mengalami beberapa kesulitan seperti installasi ssl yang cukup ribet, akhirnya saya berhasil melakukan Installasi Tengine, PHP, MySQL, WordPress di Ubuntu 20.04 yang akan saya share pada artikel kali ini.
Sebelum masuk ke tutorial Cara Install Tengine, PHP, MySQL, WordPress di Ubuntu 20.04. Saya akan membahas sedikit tentang tengine.
Apa itu Tengine?
Tengine adalah server web yang dibuat oleh Taobao, situs web e-commerce terbesar di Asia. Ini didasarkan pada server HTTP Nginx dan memiliki banyak fitur lanjutan. Tengine telah terbukti sangat stabil dan efisien di beberapa dari 100 situs web teratas di dunia, termasuk taobao.com dan tmall.com.
Tengine telah menjadi proyek open source sejak Desember 2011. Proyek ini secara aktif dikembangkan oleh tim Tengine, yang anggota intinya berasal dari Taobao, Sogou dan perusahaan Internet lainnya. Tengine adalah upaya komunitas dan setiap orang didorong untuk terlibat. Baca juga: Cara Install Nginx di Debian
Jadi, tengine adalah sebuah https akselerator yang menggunakan source dari nginx. yang dikembangkan lebih lanjut oleh tim taobao. Karena tengine menggunakan kode sumber dari nginx, seperti yang kita tahu bahwa nginx merupakan software opensource, demikian pula dengan tengine. Tengine dapat kita gunakan secara gratis.
Pada artikel cara install tengine ini, saya menggunakan VPS dari digital ocean dengan distro Ubuntu 20.04 LTS.
Required Library
Sebelum melakukan installasi tengine, ada beberapa library yang diperlukan diantaranya:
- OpenSSL library version between 1.0.2–1.1.0
- Zlib library version between 1.1.3–1.2.11
- PCRE library version between 4.4–8.40
- GCCÂ Compiler
- jemalloc
- libatomic-ops
Untuk menginstall library-library tersebut, jalankan perintah dibawah ini:
apt install build-essential zlib1g-dev libpcre3 libpcre3-dev libssl-dev libjemalloc-dev libatomic-ops-dev make
Cara Install Tengine, PHP, MySQL & WordPress
Install Tengine
Download tengine dari repository github
git clone https://github.com/alibaba/tengine
Compile Tengine, Jalankan satu persatu perintah dibawah ini:
mkdir /usr/local/nginx
mkdir /var/tmp/nginx
cd tengine
./configure --prefix=/usr/local/nginx \
--pid-path=/var/run/tengine.pid \
--error-log-path=/var/log/nginx/error.log \
--user=www-data \
--group=www-data \
--with-poll_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_sub_module \
--add-module=./modules/ngx_http_concat_module \
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-client-body-temp-path=/var/tmp/nginx/client \
--with-ipv6 \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--add-module=./modules/ngx_http_sysguard_module
make && make install
Sekarang Tengine sudah terinstall. Tinggal atur user dan hak akses direktori nya saja.
useradd -s /sbin/nologin www-data
cd /usr/local/nginx
memberi akses ke directory html, secara default html directory tengine berada di /usr/local/nginx/html anda bisa mengubahnya sesuai keinginan
chown www-data:www-data -R /usr/local/nginx/html
chown www-data:www-data -R /usr/local/nginx/logs
chown www-data:www-data -R /var/tmp/nginx
chmod 700 -R /usr/local/nginx/html
chmod 700 -R /var/tmp/nginx
chmod 777 -R /usr/local/nginx/logs
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
Tes konfigurasi tengine lalu jalankan service nya.
nginx -t
Untuk menjalankan tengine cukup jalankan perintah seperti berikut ini.
nginx
Sekarang coba buka browser anda dan akses ip atau domain vps anda. Jika muncul seperti tampilan dibawah ini, itu artinya anda telah berhasil melakukan installasi tengine di server ubuntu.
Install PHP-FPM
Install PHP7.4
apt-get install php7.4-common php7.4-readline php7.4-fpm php7.4-cli php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-opcache php7.4-json php7.4-xml -y
Mengubah pengaturan default PHP
sed -i "s/memory_limit = .*/memory_limit = 256M/" /etc/php/7.4/fpm/php.ini
sed -i "s/upload_max_filesize = .*/upload_max_filesize = 128M/" /etc/php/7.4/fpm/php.ini
sed -i "s/zlib.output_compression = .*/zlib.output_compression = on/" /etc/php/7.4/fpm/php.ini
sed -i "s/max_execution_time = .*/max_execution_time = 18000/" /etc/php/7.4/fpm/php.ini
sed -i "s/;cgi.fix_pathinfo=1/;cgi.fix_pathinfo=0/" /etc/php/7.4/fpm/php.ini
sed -i "s@listen = /run/php/php7.4-fpm.sock@listen = 127.0.0.1:9000@g" /etc/php/7.4/fpm/pool.d/www.conf
Apply configuration
/etc/init.d/php7.4-fpm restart
Install MariaDB
Install MariaBD Server & Client
apt-get install mariadb-server mariadb-client -y
Pada langkah ini anda hanya disuruh mengikuti instruksi yang diberikan.
mysql_secure_installation
Logs
Enter current password for root (enter for none):
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:
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] n
... skipping.
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] n
... skipping.
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!
Mengatur Server Block Tengine
Meskipun tengine memiliki source yang sama dengan nginx, tapi ada perbedaan dalam pengaturan server block tengine. Kalau di nginx, kita bisa mengatur virtual host per file. Namun kalau di tengine kita hanya mengatur virtual host di dalam 1 file yaitu di nginx.conf
Berikut ini adalah gambaran dari pengaturan virtualhost tengine
stream {
server {
listen 443 ssl;
server_name www.domain1.com;
......
}
server {
listen 443 ssl;
server_name www.domain2.com;
......
}
#Default server, first server block will be used
#if not such default server is provied.
server {
listen 443 ssl default;
....
}
}
Jadi, jika anda mempunyai lebih dari 1 domain, anda hanya perlu menambahkan server block berikutnya, namun masih dalam http block. Karena kita akan mengubah konfigurasi tengine, kita backup dulu nginx.conf file nya.
cp /usr/local/nginx/conf/nginx.conf /root/
Lalu, kosongkan konfigurasi yang lama,
cat /dev/null > /usr/local/nginx/conf/nginx.conf
Secara default, sebenarnya konfigurasi tengine hanya seperti dibawah ini.
user www-data;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Namun, jika ingin menggunakan wordpress maka ada beberapa perubahan didalam konfigurasinya. Saya tidak bisa jelaskan baris per-baris. Cukup perhatikan saja tanda komen (#) yang saya berikan.
user www-data;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
root /usr/local/nginx/html/; #lokasi file website anda
server_name dev.tutorialpedia.net; #nama domain anda
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
#konfigurasi PHP
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_cache_valid 200 60m;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Sebelum apply configuration sebaiknya test dulu konfignya dengan cara.
nginx -t
Jika output yang dihasilkan test is succesful Lalu restart tengine
nginx -s reload
Install WordPress
Installasi wordpress hampir sama pada umumnya. masuk ke folder direktori html tengine dan Download WordPress
cd /usr/local/nginx/html && wget https://wordpress.org/latest.tar.gz
Ekstrak wordpress dan letakkan di root direktori
tar -x --xform s/wordpress// -f /usr/local/nginx/html/latest.tar.gz -C /usr/local/nginx/html/
beri hak akses tengine ke folder
chown -R www-data:www-data /usr/local/nginx/html/
chmod -R 755 /usr/local/nginx/html/
hapus file yang tidak perlu yang berada di root direktori
rm /usr/local/nginx/html/index.html
Sebelum melakukan installasi wordpress, kita diwajibkan membuat database terlebih dahulu. Command dibawah ini akan membuat database dengan nama “tengine”
mysql -uroot -p -e "CREATE DATABASE tengine;"
Jika diminta password, silahkan masukkan password database anda.
Lalu akses domain/ip vps anda. Maka akan muncul tampilan seperti berikut:
Klik Let’s Go
Lalu masukkan kredensial seperti Nama database, user database dan password database.
Jika pada saat klik submit muncul error establishing database connection, meskipun semua informasi yang anda masukkan sudah benar.
Ini dikarenakan, secara default mariadb melarang kita untuk menggunakan root user sebagai user default untuk digunakan sebagai user database. Untuk itu kita harus meng-alter user root tersebut agar bisa digunakan. Namun, cara tersebut kurang aman, jadi ada baiknya kita membuat user baru saja dengan level yang sama dengan user root.
Masuk ke mysql anda.
mysql -uroot -p
Create user. Agar memenuhi kriteria password, silahkan gunakan huruf besar kecil dan karakter unik
CREATE USER 'useranda'@'localhost' IDENTIFIED BY 'password';
beri semua akses ke user
GRANT ALL PRIVILEGES ON *.* TO 'useranda'@'localhost';
Lalu sekarang masukkan kembali user baru yang sudah dibuat. Harusnya berhasil:
Tinggal lanjutkan saja installasi wordpress seperti biasa.
Jika, langkah-langkah yang anda ikuti sesuai, maka seharusnya installasi tengine tidak ada masalah. Untuk mengecek, apakah website kita sudah menggunakan tengine, anda bisa mencoba add on browser bernama wappalyzer.
Lalu, bagaimana dengan installasi SSL di tengine?
Nah, untuk installasi ssl di tengine memang agak sedikit tricky, berhubungan artikel ini sudah terlalu panjang. maka akan saya bahas pada artikel berikutnya.
Stay tune!
Demikian artikel Cara Install Tengine, PHP, MySQL dan WordPress