Categories
Tutorial, Manual, Tips dan Trik

Aktivasi Modul Apache Pada Aplikasi Feeder PDDIKTI Berbasis Windows

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
https://pdsi.unisayogya.ac.id/aktivasi-modul-apache-pada-aplikasi-feeder-pddikti-berbasis-windows/ 2021-09-04 16:04:39

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.

  1. Unduh SSL Institusi
  2. Buka cmd (command prompt) sebagai Administrator
  3. Jalankan copy "C:\Program Files\PDDIKTI\webserver\modules\mod_ssl.so" "C:\Program Files\PDDIKTI\webserver\mod_ssl.so" di cmd
  4. Jalankan pada cmd perintah berikut
    mkdir c:/ssl
    explorer c:/ssl
  5. Salin SSL Institusi ke dalam folder c:/ssl
  6. 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' />"
  7. 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

  1. Unduh mod_fcgid di laman https://www.apachelounge.com/download/
  2. Buka cmd (command prompt) sebagai Administrator
  3. Jalankan mklink /j C:\phpfeeder "C:\Program Files\PDDIKTI\php" di cmd.
  4. Jalankan explorer C:\Program Files\PDDIKTI\webserver\modules di cmd. Ekstrak mod_fcgid.so ke dalam folder tersebut.
  5. 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, ganti FcgidMaxProcesses dengan rumus 7% * sisaRAMdalamGb * 150 atau 21 * (sisaRAMdalamGb / 2) atau 10,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

  1. Jalankan perintah di cmd:
    C:
    cd C:\Program Files\PDDIKTI
    mkdir tmp
    mkdir pipe
  2. 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
  3. Jalankan notepad C:\Program Files\PDDIKTI\php\php.ini di cmd. Ubah pengaturan berikut ini
    extension_dir="C:/Program Files/PDDIKTI/php/ext"
    menjadi
    extension_dir="C:\phpfeeder\ext"
  4. 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
  5. Untuk memberi depensi pada php_pdo_oci.dll:
    1. Unduh library Instant Client Oracle Basic di https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
    2. Jalankan perintah di cmd:
      powershell
      C:
      cd \
      mkdir instantclientoracle
      [System.Environment]::SetEnvironmentVariable('PATH',$Env:PATH+';C:\instantclientoracle')
    3. Ekstrak Instant Client Oracle Basic di C:\instantclientoracle
    4. 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
  6. Restart Service PDDIKTIWebSrv

Trouble Shoot

Peringatan! Salin atau unduh module atau library dari sumber resmi

  1. 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.
  2. Buka Event Viewer. Buka Log Error pada proses Apache atau PHP-CGI
  3. 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
    Menemukan Problem Depensi

Demikian, semoga bermanfaat. [bst]

Sumber:

By basit

Biro Pengembangan Teknologi Dan Sistem Informasi

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.