PDDIKTI adalah Kumpulan Data penyelenggaraan pendidikan tinggi seluruh perguruan tinggi yang terintegrasi secara nasional oleh masing-masing PT, antara lain melalui aplikasi Feeder PDDIKTI . Aplikasi Feeder PDDIKTI dibangun di atas aplikasi server Apache, PHP dan Postgresql.
Daftar Isi
Aktivasi Modul Apache pada Aplikasi Feeder PDDIKTI
Sebagaimana aplikasi berbasis Apache-PHP, aplikasi Feeder PDDIKTI dapat menggunakan modul-modul yang telah ada dan dapat berjalan pada server lainnya, seperti HTTPS, HTTP/2, Fast-CGI dan sebagainya.
— Aktivasi Modul Apache Pada Aplikasi Feeder PDDIKTI Berbasis Windows
Implementasi HTTPS dan HTTP/2
Inspirasi:
https://pdsi.unisayogya.ac.id/mengaktifkan-ssl-https-pada-web-berbasis-apache-dan-open-ssl/2/#feederpddikti
https://pdsi.unisayogya.ac.id/move-on-mpm-prefork-ke-mpm-event-sebuah-catatan/
Kebutuhan:
Wildcard SSL Institusi
Peringatan:
Path dan IP di tutorial di bawah ini mungkin berbeda dengan yang ada di tempat Anda.
- Unduh SSL Institusi
- Buka cmd (command prompt) sebagai Administrator
- Jalankan
copy "C:\Program Files\PDDIKTI\webserver\modules\mod_ssl.so" "C:\Program Files\PDDIKTI\webserver\mod_ssl.so"
di cmd - Jalankan pada cmd perintah berikut
mkdir c:/ssl
explorer c:/ssl - Salin SSL Institusi ke dalam folder c:/ssl
- Jalankan
notepad C:\Program Files\PDDIKTI/webserver/conf/httpd.conf
di cmd- Hilangkan Komentar
LoadModule ssl_module mod_ssl.so
LoadModule http2_module modules/mod_http2.so - Di dalam <IfModule ssl_module> ubah menjadi
Include conf/extra/httpd-ssl.conf
, catatlah DocumentRoot yang tercantum di situ - Komentari
#Include conf/extra/httpd-vhosts.conf
- Tambahkan baris untuk memaksa ke HTTPS
RewriteEngine On
# IP Publik
RewriteCond %{HTTP_HOST} ^123\.456\.789\.1$ [OR]
#Atau IP Lokal
RewriteCond %{HTTP_HOST} ^192\.168\.1\.1$ [OR]
#semua ke HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$
https://feeder.domain.ac.id [L,R=301]
#untuk error kode 400 (Bad Request)
ErrorDocument 400 "<meta http-equiv = 'refresh' content = '0; url = https://feeder.domain.ac.id' />"
- Hilangkan Komentar
- Jalankan
notepad C:\Program Files\PDDIKTI/webserver/conf/httpd-ssl.conf
di cmd, kemudian sesuaikan pengaturan di dalamnya misalnya seperti di bawah ini:Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtinSSLSessionCacheTimeout 300
<VirtualHost *:443>
Protocols h2 h2c http/1.1
#sama dengan yang ada di httpd.conf
DocumentRoot "C:/Program Files/PDDIKTI/dataweb"
RewriteEngine On
# IP Publik
RewriteCond %{HTTP_HOST} ^123\.456\.789\.1$ [OR]
#Atau IP Lokal
RewriteCond %{HTTP_HOST} ^192\.168\.1\.1$ [OR]
#semua ke HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://feeder.domain.ac.id [L,R=301]
SSLEngine on
SSLCertificateFile "c:/ssl/domain.crt"
SSLCertificateKeyFile "c:/ssl/private.key"
SSLCertificateChainFile "c:/ssl/intermediate.ca-bundle"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
#Log mati, hidupkan dengan menghilangkan tanda pagar (#)#CustomLog "C:\Program Files\PDDIKTI\webserver\logsssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
Implementasi Fast-CGI
Inspirasi:
https://pdsi.unisayogya.ac.id/move-on-mpm-prefork-ke-mpm-event-sebuah-catatan/3/#windows-mod-fcgid
- Unduh mod_fcgid di laman https://www.apachelounge.com/download/
- Buka cmd (command prompt) sebagai Administrator
- Jalankan
mklink /j C:\phpfeeder "C:\Program Files\PDDIKTI\php"
di cmd. - Jalankan
explorer C:\Program Files\PDDIKTI\webserver\modules
di cmd. Ekstrakmod_fcgid.so
ke dalam folder tersebut. - Jalankan
notepad C:\Program Files\PDDIKTI\webserver\conf\extra\httpd-fcgid.conf
di cmd. Pengaturan di bawah ini adalah pengaturan untuk sisa RAM 1 Gb, gantiFcgidMaxProcesses
dengan rumus7% * sisaRAMdalamGb * 150
atau21 * (sisaRAMdalamGb / 2)
atau10,5 * sisaRAMdalamGb
. Pembulatan ke bawah. Salin pengaturan di bawah ini:
<IfModule env_module>
SetEnv PGSQL_HOME "C:/Progra~1/PDDIKTI/pgsql/bin"
SetEnv OPENSSL_CONF "C:/Progra~1/PDDIKTI/webserver/conf/openssl.cnf"
SetEnv PHP_PEAR_SYSCONF_DIR "C:/phpfeeder"
SetEnv PHPRC "C:/phpfeeder"
SetEnv TMP "C:/Progra~1/PDDIKTI/tmp"
</IfModule>
LoadModule fcgid_module modules/mod_fcgid.so
<IfModule fcgid_module>
FcgidInitialEnv PATH "C:/phpfeeder;C:/Progra~1/PDDIKTI/webserver/bin"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:/Progra~1/PDDIKTI/tmp"
FcgidInitialEnv TMP "C:/Progra~1/PDDIKTI/tmp"
FcgidInitialEnv windir "C:/windows"
#set FcgidIPCDir to avoid conflict with another server
FcgidIPCDir "C:/Progra~1/PDDIKTI/pipe"
FcgidIdleTimeout 1800
FcgidProcessLifeTime 1800
FcgidBusyTimeout 1800
FcgidIOTimeout 1800
FcgidConnectTimeout 20
FcgidMaxRequestsPerProcess 1000
FcgidMaxProcesses 10
FcgidOutputBufferSize 0
#FcgidMaxRequestLen (bytes) equal to upload_max_filesize (Mbytes) on php.ini; 1000000 byte=1 Mbyte
FcgidMaxRequestLen 800000000
# Location php.ini:
FcgidInitialEnv PHPRC "C:/phpfeeder"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1000
<Files ~ "\.php$">
Options Indexes FollowSymLinks ExecCGI
AddHandler fcgid-script .php
FcgidWrapper "C:/phpfeeder/php-cgi.exe" .php
</Files>
</IfModule>
<IfModule mime_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
</IfModule>
<IfModule mime_module>
AddType text/html .php .phps
</IfModule>
ScriptAlias /php-cgi/ "C:/phpfeeder/"
<Directory "C:/phpfeeder">
AllowOverride None
Options None
Require all denied
<Files "php-cgi.exe">
Require all granted
</Files>
</Directory>
<Directory "C:/Program Files/PDDIKTI/webserver/cgi-bin">
<FilesMatch "\.php$">
SetHandler cgi-script
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler None
</FilesMatch>
</Directory>
<FilesMatch "\.php$">
SetHandler application/x-httpd-php-cgi
</FilesMatch>
<IfModule actions_module>
Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
</IfModule>
Penting: Feeder PDDIKTI menggunakan mekanisme tanpa buffer, sehingga FcgidOutputBufferSize harus bernilai 0
- Jalankan perintah di cmd:
C:
cd C:\Program Files\PDDIKTI
mkdir tmp
mkdir pipe - Jalankan
notepad C:\Program Files\PDDIKTI\webserver\conf\httpd.conf
di cmd.- Tambahkan pengaturan di berikut ini
LoadModule fcgid_module modules/mod_fcgid.so
#FCGID Module
Include "conf/extra/httpd-fcgid.conf"
- Komentari pengaturan berikut
#PHPIniDir "C:/Program Files/PDDIKTI/php"
#LoadFile "C:/Program Files/PDDIKTI/php/php5ts.dll"
#LoadFile "C:/Program Files/PDDIKTI/php/libpq.dll"
#LoadModule php5_module "C:/Program Files/PDDIKTI/php/php5apache2_4.dll"
#AddHandler application/x-httpd-php .php
- Tambahkan pengaturan di berikut ini
- Jalankan
notepad C:\Program Files\PDDIKTI\php\php.ini
di cmd. Ubah pengaturan berikut iniextension_dir="C:/Program Files/PDDIKTI/php/ext"
menjadiextension_dir="C:\phpfeeder\ext"
- Jalankan perintah di bawah ini di cmd untuk memberi depensi pada php_curl.dll
copy "C:\Program Files\PDDIKTI\webserver\bin\libssh2.dll" C:\phpfeeder
copy C:\Windows\SysWOW64\EdgeManager.dll C:\Windows\System32\edgegdi.dll - Untuk memberi depensi pada php_pdo_oci.dll:
- Unduh library Instant Client Oracle Basic di https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
- Jalankan perintah di cmd:
powershell
C:
cd \
mkdir instantclientoracle
[System.Environment]::SetEnvironmentVariable('PATH',$Env:PATH+';C:\instantclientoracle') - Ekstrak Instant Client Oracle Basic di
C:\instantclientoracle
- Unduh dan pasang Microsoft Visual C++ dengan alamat https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0
- Restart Service PDDIKTIWebSrv
Trouble Shoot
Peringatan! Salin atau unduh module atau library dari sumber resmi
- Jalankan
notepad C:\Program Files\PDDIKTI\webserver\logs\error.log
di cmd. Jika terlalu banyak, maka dapat di hapus terlebih dahulu, kemudian Restart Service PDDIKTIWebSrv. Jika ada pesan unable to load library, maka sebenarnya bukan library itu yang gagal di-load, tetapi ada depensi yang tidak ada atau kurang tepat letaknya. - Buka Event Viewer. Buka Log Error pada proses Apache atau PHP-CGI
- Jalankan Process Monitor untuk melihat lebih dalam permasalahannya (https://pdsi.unisayogya.ac.id/mengaktifkan-ssl-https-pada-web-berbasis-apache-dan-open-ssl/3/#erroraktivasisslwindows). Filter pada php-cgi.exe
Demikian, semoga bermanfaat. [bst]
Sumber: