# 2.5 Pembangunan Aplikasi SPBE

# Tips Pengelolaan Aplikasi Server

Berisikan Tips yang sering lupa dalam pengelolaan aplikasi penunjang server

# Buat User Root di Ubuntu

- **Buat Pengguna Baru :**

`sudo adduser kominfox`

- **Tambahkan Pengguna ke Grup Sudo:**

`sudo usermod -aG sudo kominfox`

- **Cek Akses sebagai Root:**

`groups kominfox`

# Ekstensi PHP yang perlu diinstall

**PHP 8.3**

php8.3-mysql  
php8.3-gd  
php8.3-xml  
php8.3-redis  
php8.3-intl  
php8.3-mbstring  
php8.3-curl  
php8.3-phpdbg  
php8.3-fpm  
php8.3-cli  
php8.3-cgi  
libphp8.3-embed  
libapache2-mod-php8.3

# ±800 Koneksi Simultan Pengguna

Konfigurasi ini untuk kasus 700 koneksi pengguna bersamaan pada suatu waktu tertentu. Konfig ini telah diterapkan pada presensi online dan berjalan efektif untuk lebih dari 3500 pengguna.

Alih-alih menggunakan modul mpm\_prefork, admin menggunakan modul mpm\_event yang jauh lebih efektif menangani koneksi non-blok yang lebih efisien.

**1. Nonaktifkan Modul PHP Apache:**

a2dismod php8.2

**2. Nonaktifkan `mpm_prefork` dan Aktifkan `mpm_event`:**

a2dismod mpm\_prefork  
a2enmod mpm\_event  
systemctl restart apache2

**3. Konfigurasi mpm\_event di /etc/apache2/mods-available/mpm\_event.conf**

&lt;IfModule mpm\_event\_module&gt;  
 StartServers 5  
 MinSpareThreads 75  
 MaxSpareThreads 250  
 ThreadsPerChild 25  
 MaxRequestWorkers 800  
 MaxConnectionsPerChild 0  
 ServerLimit 35  
&lt;/IfModule&gt;

**4. Konfigurasi PHP-FPM [www.conf](https://www.conf) pada /etc/php/8.2/fpm/pool.d/www.conf**

catatan : ini adalah koneksi untuk website. jika membebani cpu server mesti dikurangi. terutama pada **pm.max\_requests dan pm.max\_children**

\[www\]  
user = www-data  
group = www-data  
listen = /run/php/php8.3-fpm.sock  
listen.owner = www-data  
listen.group = www-data  
listen.mode = 0660

pm = dynamic  
pm.max\_children = 100  
pm.start\_servers = 10  
pm.min\_spare\_servers = 5  
pm.max\_spare\_servers = 20  
pm.process\_idle\_timeout = 10s  
pm.max\_requests = 500

request\_terminate\_timeout = 60s

**5. Restart Apache dan PHP-FPM:**

systemctl restart php8.2-fpm  
systemctl restart apache2

catatan tambahan:

1. jika terjadi permasalahan web tidak bisa dibuka. coba non aktifkan modul mpm\_event dan aktifkan ke mpm\_prefork. setelah normal baru kemudian kembalikan ke mpm\_event.
2. jika ada pid yang belum tercover sehingga mpm\_event penuh, maka lakukan stop apache lalu hapus pid apache pada /var/run/apache/

Permasalahan proses anak terjebak dalam apache

Cek isi proses anak:  
**ps aux | grep apache**

bersihkan proses anak:  
**killall -9 apache2**  
**pkill -9 apache2**

pastikan jumlah proses anak yang berjalan normal, jika masih banyak yang terjebak ulangi terus hingga jumlah normal

# Cara kirim data dari /var/log/apache2/error.log ke Database

Perintah untuk Manual:  
php artisan read:apachelog

Perintah untuk Live:  
php artisan read:apachelog --live

# Monitoring Penggunaan CPU Server

#### *1. Monitoring dilakukan menggunakan webmin. diperoleh penggunakan CPU server berlebihan (96%)*

dari hasil **ps aux | grep php** diketahui adalah:

www-data 912356 99.6 0.1 85792 25116 ? R 05:51 247:50 php /tmp/.sessions/.L3Zhci93d3cvaHRtbC9wcmVzZW5zaS1hcGkvLmdpdC9pbmZvZXJyb3JfNDA0LWhhbmRsZXI=  
www-data 912364 99.6 0.1 85792 25032 ? R 05:51 247:49 php /tmp/.sessions/.L3Zhci93d3cvaHRtbC9wcmVzZW5zaS1hcGkvLmdpdC9pbmZvZXJyb3JfNDA0LWhhbmRsZXI=  
www-data 912372 99.6 0.1 85792 25124 ? R 05:51 247:48 php /tmp/.sessions/.L3Zhci93d3cvaHRtbC9wcmVzZW5zaS1hcGkvLmdpdC9pbmZvZXJyb3JfNDA0LWhhbmRsZXI=  
www-data 912378 99.8 0.1 85792 25044 ? R 05:53 246:47 php /tmp/.sessions/.L3Zhci93d3cvaHRtbC9wcmVzZW5zaS1hcGkvdmVuZG9yL2ZydWl0Y2FrZS9waHAtY29ycy9zcmMvRXhjZXB0aW9uc2Vycm9yXzQwNC1oYW5kbGVy  
www-data 912386 99.8 0.1 85792 25048 ? R 05:53 246:46 php /tmp/.sessions/.L3Zhci93d3cvaHRtbC9wcmVzZW5zaS1hcGkvdmVuZG9yL2ZydWl0Y2FrZS9waHAtY29ycy9zcmMvRXhjZXB0aW9uc2Vycm9yXzQwNC1oYW5kbGVy  
www-data 912395 99.8 0.1 85792 25144 ? R 06:03 236:04 php /tmp/.sessions/.L3Zhci93d3cvaHRtbC9wcmVzZW5zaS1hcGkvdmVuZG9yL3JhbXNleS91dWlkL3NyYy9HZW5lcmF0b3JlcnJvcl80MDQtaGFuZGxlcg==  
www-data 912403 99.8 0.1 85792 25340 ? R 06:03 236:04 php /tmp/.sessions/.L3Zhci93d3cvaHRtbC9wcmVzZW5zaS1hcGkvdmVuZG9yL3JhbXNleS91dWlkL3NyYy9HZW5lcmF0b3JlcnJvcl80MDQtaGFuZGxlcg==

setelah dilakukan pengecekan pada salah satu file tmp sessions tersebut

**sudo cat /tmp/.sessions/.L3Zhci93d3cvaHRtbC9wcmVzZW5zaS1hcGkvdmVuZG9yL2ZydWl0Y2FrZS9waHAtY29ycy9zcmMvRXhjZXB0aW9uc2Vycm9yXzQwNC1oYW5kbGVy**

melakukan akses terhadap file error\_404.php dimana file tersebut adalah backdoor yang ditanamkan untuk menyisipkan coding lain pada website.

lalu kill sesuai PID nya

sudo kill -9 912356  
sudo kill -9 912364  
sudo kill -9 912372  
sudo kill -9 912378  
sudo kill -9 912386  
sudo kill -9 912395  
sudo kill -9 912403

Hasilnya CPU server normal kembali

#### *2. Pemeriksaan Terhadap File Mencurigakan*

Kata kunci: **error\_404.php**, **.htaccess**, **html**  
cari file tersebut pada lokasi yang **folder public**, **vendor** dan **system** dimana seharusnya file tersebut tidak seharusnya berada di lokasi tersebut.

cek rutin **tail -f /var/log/apache2/error.log**  
untuk memantau aktivitas ip yang mengakses server mencurigakan.  
lakukan blok ip tersebut jika fail2ban tidak mendeteksinya, dengan cara:

1\. Blok IP dengan IPTABLES

untuk tambah ip yang diblok  
**sudo iptables -A INPUT -s 36.70.12.0/24 -j DROP**

untuk menghapus ip yang diblok  
**sudo iptables -D INPUT -s 36.70.12.0/24 -j DROP** untuk menghapus ip yang diblok dalam daftar  
contoh:  
5 DROP all -- 192.168.1.100 0.0.0.0/0  
7 DROP all -- 203.0.113.45 0.0.0.0/0  
**sudo iptables -D INPUT 7**  
**sudo iptables -D INPUT 5**

untuk melihat ip yang sudah diblok  
**sudo iptables -L INPUT -n**  
**sudo iptables -L -n  
sudo iptables -L INPUT -n --line-numbers | grep DROP**   
2\. Blok IP dengan UFW

untuk tambah ip yang diblok  
**ufw deny from 36.70.12.0/24**

untuk menghapus ip yang diblok  
**ufw status numbered**  
**ufw delete &lt;number&gt;**

untuk melihat ip yang sudah diblok  
**ufw status**

#### *3. Pemeriksaan Terhadap Log Apache*

**tail -f /var/log/apache2/error.log** ditemukan koneksi seperti gambar berikut:

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/86WEzJcJvFP6gdNQ-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/86WEzJcJvFP6gdNQ-image.png)  
dari log diatas akses yang tidak normal adalah:  
\[Tue Jun 18 16:42:30.675064 2024\] \[authz\_core:error\] \[pid 2187:tid 140011890530048\] \[client 49.229.89.23:54361\] AH01630: client denied by server configuration: /var/www/html/presensi/.https:, referer: [https://presensi.baritotimurkab.go.id/login](https://presensi.baritotimurkab.go.id/login)

Jaringan ip 49.229.89.23 wajib diblok:  
**ufw deny from 349.229.0.0/16**

sedangkan, log lain seperti:

\[Tue Jun 18 17:35:58.026576 2024\] \[proxy\_fcgi:error\] \[pid 2263:tid 140011865351936\] (104)Connection reset by peer: \[client 36.75.65.115:19429\] AH01075: Error dispatching request to : (reading response body)  
adalah log koneksi normal dimana pengguna sedang mengakses page aplikasi ATEI.

#### *4. Batasi Akses ke bin/sh*

Batas ke bin/sh agar pengguna lain selain root tidak bisa mengaksesnya (kemungkinkan pengguna exploit):  
**<span class="hljs-built_in">chmod</span> 700 /bin/sh**

dan menambah rule pada .htaccess pada root web, untuk mencegah metode traversal directoy:  
**\# Prevent directory traversal attacks**  
 **RewriteCond %{REQUEST\_URI} \\.\\. \[NC\]**  
 **RewriteRule ^ - \[F\]**

#### *5. Buat rule untuk serve-cgi-bin.conf*

serve-cgi-bin.conf terletak pada /etec/apache2/conf-available. Tambahkan aturan berikut:

<div id="bkmrk-scriptalias-%2Fcgi-bin"><div>ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/</div><div>&lt;Directory "/usr/lib/cgi-bin"&gt;</div><div> AllowOverride None</div><div> Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch</div><div> Require all granted</div><div> </div><div> **\# Menambahkan aturan untuk mencegah serangan traversal direktori**</div><div> **RewriteEngine On**</div><div> **RewriteCond %{REQUEST\_URI} \\.\\. \[NC\]**</div><div> **RewriteRule ^ - \[F\]**</div><div>&lt;/Directory&gt;</div></div>

# Cek error log Apache2

**1. Cek error log apache**

tail -f /var/log/apache2/error.log

**2. Kosongkan error log apache**

truncate -s 0 /var/log/apache2/error.log

# Fix Severity: 8192 Message: Creation of dynamic property CI_URI::$config is deprecated CodeIgniter

adalah masalah yang sering terjadi jika aplikasi menggunakan CI yang sudah tidak kompetible dengan versi PHP terbaru. Cara mengataasinya dengan dengan cara menambahkan code:

#### \[\\AllowDynamicProperties\]

1\. Folder /system/core/

pada file **URI.php -&gt;** di atas class CI\_URL {

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/6mtHPA5lg2YmLQZO-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/6mtHPA5lg2YmLQZO-image.png)

**Router.php -&gt;** di atas class CI\_Router {

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/KhsNX6wMCm5vum4t-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/KhsNX6wMCm5vum4t-image.png)

**Loader.php** -&gt; di atas class CI\_Loader {

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/YfxY4tkO51yYLOU2-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/YfxY4tkO51yYLOU2-image.png)

**Controller.php** -&gt; di atas class CI\_Loader {

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/NYW328xY0OncUNIz-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/NYW328xY0OncUNIz-image.png)

2\. Folder /system/database

pada file **DB\_driver.php** -&gt; di atas abstract class CI\_DB\_driver {

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/pHpmV2LdzSoudwVD-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/pHpmV2LdzSoudwVD-image.png)

#### \[\\ReturnTypeWillChange\]

Folder /system/libraries/Session/drivers/

pada file **Session\_files\_driver.php**

**-**&gt; di atas public function open($save\_path, $name)

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/RfDpoi5qOWfx8sWv-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/RfDpoi5qOWfx8sWv-image.png)

**-**&gt; di atas public function read($session\_id)

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/Xq1q2g1jatWXoaeU-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/Xq1q2g1jatWXoaeU-image.png)

**-**&gt; di atas public function write($session\_id, $session\_data)

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/XWdGt4lmitjexHDP-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/XWdGt4lmitjexHDP-image.png)

**-**&gt; di atas public function close()

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/OSshGUS4Jk6WkAPN-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/OSshGUS4Jk6WkAPN-image.png)

**-**&gt; di atas public function destroy($session\_id)

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/OlnDWhDfZ9g6a6xf-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/OlnDWhDfZ9g6a6xf-image.png)

**-**&gt; di atas public function gc($maxlifetime)

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/scaled-1680-/nwF29ZSyHtZDhdlV-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-06/nwF29ZSyHtZDhdlV-image.png)

Terima kasih pada sumber referensi : [Raja Coding ](https://www.youtube.com/@rajacoding)

[https://www.youtube.com/watch?v=rM1C-88cYVc](https://www.youtube.com/watch?v=rM1C-88cYVc)

# Cara mengembalikan tema wordpress kembali semula karena tema yang baru diaktifkan error

Cara mengembalikan tema wordpress kembali semula karena tema yang baru diaktifkan error sedangkan tidak bisa login ke halaman admin wordpress (dalam kondisi blank):

1. Masuk ke dalam database wordpress
2. Buka Tabel **wp\_options**
3. Cari template dan stylesheet pada Kolom **option\_name**
4. Ubah/isi dengan tema sebelumnya yang normal misal: **twentysixteen**
5. Simpan perubahan

# Perintah CLI untuk ekspor database

Untuk melakukan ekspor data dari MySQL dapat menggunakan perintah `mysqldump`. Perintah ini memungkinkan Anda untuk membuat salinan dari struktur database, tabel, atau data tertentu ke dalam file SQL. Berikut adalah contoh penggunaannya:

<div class="dark bg-gray-950 rounded-md" id="bkmrk-mysqldump--u-usernam"><div class="p-4 overflow-y-auto">`mysqldump -u username -<span class="hljs-selector-tag">p</span> database_name > nama_file_dump<span class="hljs-selector-class">.sql</span>`</div><div class="p-4 overflow-y-auto">  
</div></div>- `-u username`: Nama user MySQL yang memiliki hak akses untuk database yang akan diekspor.
- `-p`: Opsi password.
- `database_name`: Nama database yang ingin Anda ekspor.
- `nama_file_dump.sql`: Nama file untuk menyimpan dump data.

Contoh:

<div class="dark bg-gray-950 rounded-md" id="bkmrk-mysqldump--u-root--p"><div class="p-4 overflow-y-auto">`mysqldump -u root -<span class="hljs-selector-tag">p</span> dbdiskominfo > dbdiskominfo<span class="hljs-selector-class">.sql</span>`</div></div>

# Perintah CLI untuk import database

Untuk melakukan impor data dari MySQL dapat menggunakan perintah `mysql`. Terlebih dahulu pastikan file dump mysql sudah tersedia. Berikut adalah contoh penggunaannya:

<div class="dark bg-gray-950 rounded-md" id="bkmrk-mysqldump--u-usernam"><div class="p-4 overflow-y-auto">`mysql -u username -<span class="hljs-selector-tag">p</span> database_name < nama_file_dump<span class="hljs-selector-class">.sql</span>`</div><div class="p-4 overflow-y-auto">  
</div></div>- `-u username`: Nama user MySQL yang memiliki hak akses ke database yang akan diimpor.
- `-p`: Opsi permintaan password.
- `database_name`: Nama database di mana Anda ingin mengimpor dump SQL.
- `nama_dump_file.sql`: Nama file dump SQL yang berisi struktur dan data yang ingin Anda impor. Lokasinya harus disesuaikan dengan lokasi file tersebut di sistem file Anda.

Contoh:

<div class="dark bg-gray-950 rounded-md" id="bkmrk-mysqldump--u-root--p"><div class="p-4 overflow-y-auto">`mysql -u root -<span class="hljs-selector-tag">p</span> dbdiskominfo < dbdiskominfo_dump<span class="hljs-selector-class">.sql</span>`</div></div>

# Perintah untuk transfer file dan folder antar server

Perintah ini menggunakan CLI linux yang diketik pada Terminal atau Putty. Sebelum itu pastikan akses SSH sudah tersedia.

Anda dapat menggunakan perintah scp atau secure copy seperti contoh berikut:

`scp -r username@hostname:/path/to/directory /path/to/destination`

- `-r`: Mengindikasikan bahwa `scp` harus meng-kopi direktori secara rekursif, termasuk semua file dan sub-direktori di dalamnya.
- `username`: Nama user pada server tujuan.
- `hostname`: Nama atau alamat IP server tujuan.
- `/path/to/directory`: Lokasi direktori di server tujuan yang ingin Anda download.
- `/path/to/destination`: Lokasi direktori di mana Anda ingin menyimpan direktori yang didownload di server lokal.

Contoh:

`scp -r root@36.67.22.18:/var/www/html/diskominfo_1 /var/www/html/diskominfo_2`

- `root`: Nama user pada server tujuan.
- `36.67.22.18`: Alamat IP server tujuan.
- `/var/www/html/diskominfo_1`: Lokasi folder yang ingin didownload pada di server tujuan yaitu folder **diskominfo\_1**.
- `/var/www/html/diskominfo_2`: Lokasi penempatan folder yang akan diupload pada server lokal yaitu folder **diskominfo\_2**.

jika menggunakan port 2022 maka:

`scp -r -P 2022 root@36.67.22.22:/var/www/html/diskominfo_1 /var/www/html/diskominfo_2`

# Query Menampilan Unit Kerja yang Pegawainya Cuti

<span style="font-size: 9.0pt; line-height: 107%; font-family: 'Lucida Console'; color: #444444; background: #F8F8F8;">Untuk menampilkan Unit Kerja yang Pegawainya cuti kategori 7</span>

<span style="font-size: 9.0pt; line-height: 107%; font-family: 'Lucida Console'; color: #444444; background: #F8F8F8;">`SELECT<span style="mso-spacerun: yes;"> </span>tbl_unit.nm_unit<span style="mso-spacerun: yes;">  </span>FROM<span style="mso-spacerun: yes;"> </span>tbl_unit<span style="mso-spacerun: yes;">  </span>JOIN<span style="mso-spacerun: yes;"> </span>users ON tbl_unit.id = users.id_unit<span style="mso-spacerun: yes;">  </span>JOIN<span style="mso-spacerun: yes;"> </span>tbl_absen ON users.id = tbl_absen.id_user<span style="mso-spacerun: yes;"> </span>WHERE<span style="mso-spacerun: yes;"> </span>tbl_absen.id_ket_in = '7' AND tbl_absen.tgl_in BETWEEN '2024-04-01' AND '2024-04-30';`</span>

<span style="font-size: 9.0pt; line-height: 107%; font-family: 'Lucida Console'; color: #444444; background: #F8F8F8;">`SELECT      users.name, tbl_unit.nm_unit  FROM      tbl_unit  JOIN      users ON tbl_unit.id = users.id_unit  JOIN      tbl_absen ON users.id = tbl_absen.id_user  WHERE      tbl_absen.id_ket_in = '7' AND tbl_absen.tgl_in BETWEEN '2024-04-01' AND '2024-04-30';`</span>

<span style="font-size: 9.0pt; line-height: 107%; font-family: 'Lucida Console'; color: #444444; background: #F8F8F8;">Cek Pegawai Status Cuti</span>

<span style="font-size: 9.0pt; line-height: 107%; font-family: 'Lucida Console'; color: #444444; background: #F8F8F8;">SELECT   
 users.name,   
 tbl\_unit.nm\_unit,   
 tbl\_absen.tgl\_in  
FROM   
 tbl\_absen  
JOIN   
 users ON tbl\_absen.id\_user = users.id  
JOIN   
 tbl\_unit ON users.id\_unit = tbl\_unit.id  
WHERE   
 tbl\_absen.id\_user = '475'   
 AND tbl\_absen.id\_ket\_in = '1'  
 AND tbl\_absen.tgl\_in BETWEEN '2024-06-03' AND '2024-06-30';</span>

# Query untuk menampilkan hasil database mysql

Contoh untuk menampilkan data tertentu. Dalam hal ini ingin menampilkan Daftar nama pegawai pada unit kerja Inspektorat yang absen dari tanggal 1 Maret 2024 sampai tanggal sekarang.

`SELECT     users.name,    users.nip,    tbl_absen.tgl_in,    tbl_absen.jam_in,    tbl_absen.tgl_out,    tbl_absen.jam_out,    tbl_unit.nm_unitFROM     usersJOIN     tbl_unit ON users.id_unit = tbl_unit.idJOIN     tbl_absen ON users.id = tbl_absen.id_userWHERE     tbl_absen.tgl_in BETWEEN '2024-03-01' AND CURDATE()     AND tbl_unit.nm_unit = 'INSPEKTORAT';`

Sedangkan untuk mengekspor ke file .csv

`SELECT     users.name,    users.nip,    tbl_absen.tgl_in,    tbl_absen.jam_in,    tbl_absen.tgl_out,    tbl_absen.jam_out,    tbl_unit.nm_unitINTO OUTFILE '/tmp/hasil.csv'FIELDS TERMINATED BY ','ENCLOSED BY '"'LINES TERMINATED BY '\n'FROM     usersJOIN     tbl_unit ON users.id_unit = tbl_unit.idJOIN     tbl_absen ON users.id = tbl_absen.id_userWHERE     tbl_absen.tgl_in BETWEEN '2024-03-01' AND CURDATE()     AND tbl_unit.nm_unit = 'INSPEKTORAT';`

# Cara merubah events pada perubahan qrcode presensi per 1 jam:

mysql&gt; set global event\_scheduler = ON;

mysql&gt; ALTER EVENT db\_presensi.qr\_refresh

ON SCHEDULE EVERY 1 HOUR

STARTS '2024-03-03 00:00:00';

karna `<strong><span style="font-size: 10.5pt; line-height: 107%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; color: #0d0d0d; border: solid #E3E3E3 1.0pt; mso-border-alt: solid #E3E3E3 .25pt; padding: 0mm; background: white;">STARTS</span></strong>`<span style="font-family: 'Segoe UI',sans-serif; color: #0d0d0d; background: white;"> bersifat opsional bisa juga langsung dengan:</span>

mysql&gt; ALTER EVENT db\_presensi.qr\_refresh

ON SCHEDULE EVERY 1 HOUR;

untuk perubahan per 30 menit:

mysql&gt;ALTER EVENT db\_presensi.qr\_refresh

ON SCHEDULE EVERY 30 MINUTE

STARTS '2024-03-03 00:00:00';

# Gagal Update Data Umum pada OpenDK Kecamatan

<span style="color: rgb(224, 62, 45);">**Gagal!!**</span>

<span style="color: rgb(224, 62, 45);">**Update Data Umum gagal!**</span>

  
Peringatan ini muncul pada saat simpan data umum aplikasi opendk kecamatan. Padahal semua inputan data sudah terisi, koordinat lokasi kantor juga sudah terisi.

Solusinya adalah:

Buat Kolom lat dan lng pada Tabel das\_data\_umum, dengan tipe data DOUBLE

# Query Hapus isi data tabel dalam database menggunakan Terminal

1. Masuk ke MySQL melalui terminal  
    `mysql -u root -p`  
      
    [![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-12/scaled-1680-/YUh2dwlwUXPJxJVG-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-12/YUh2dwlwUXPJxJVG-image.png)
2. Pilih database yang ingin digunakan  
    `USE db_presensi_25;`  
      
    [![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-12/scaled-1680-/t3iBRkshUTf4zLsH-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-12/t3iBRkshUTf4zLsH-image.png)
3. Hapus isi data dari tabel  
    `<span class="hljs-keyword">DELETE</span> <span class="hljs-keyword">FROM</span> tpp;`  
      
    [![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-12/scaled-1680-/FGH84GvAog3pBZ4s-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2024-12/FGH84GvAog3pBZ4s-image.png)

# Wordpress

Tips Pemanfaatan Wordpres sebagai website Perangkat Daerah

# Cara Mengaktifkan FTP pada Wordpress

Sebagai informasi Wordpress yang digunakan sebagai website OPD adalah wordpress yang diinstall pada server Webmin Kabupaten. Sehingga konfigurasi FTP pada server perlu diperhatikan.

Sebelum cara ini diberlakukan, admin OPD diberikan hak akses untuk Webmin dan diberikan akses modul File Manager. Sehingga Admin OPD dapat mengupload file yang diperlukan baik untuk update wordpress, tema dan plugin.

Berikut tahapan cara agar FTP wordpress otomatis dapat melakukan update wordpress, tambah tema dan plugin.

1\. Buka file wp-config.php pada root website OPD.

*sudo nano /var/www/html/wordpress/wp-config.php*

2\. Tambahkan baris berikut **sebelum baris `/* That's all, stop editing! */`**:

*define('FS\_METHOD', 'direct');*

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-10/scaled-1680-/njkRXbovE5vbfjfv-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-10/njkRXbovE5vbfjfv-image.png)

3\. Berikan Permission Folder pada folder wp-content

*sudo chown -R www-data:www-data /var/www/html/wordpress/wp-content*

Pastikan folder chmod 755 dan file chmod 644

4\. Install FTP server

*sudo apt install vsftpd -y*

5\. Buka file vsftpd.conf

*sudo nano /etc/vsftpd.conf*

6\. Konfigurasi berikut pada vsftpd.conf

*write\_enable=YES*  
*local\_umask=022*  
*chroot\_local\_user=YES*

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-10/scaled-1680-/nre3490RyZT28cCd-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-10/nre3490RyZT28cCd-image.png)

7\. Lalu Restart FTP Server

*sudo systemctl restart vsftpd*

8\. Jangan lupa berikan rule NAT pada Mikrotik untuk membukan port 21 agar dapat diakses dari luar

*dst-nat chain=dstnat*   
*in-interface=etherWAN*   
*protocol=tcp*   
*dst-port=21*   
*action=dst-nat*   
*to-addresses=&lt;IP\_LAN\_SERVER&gt;*   
*to-ports=21*

9\. Jangan lupa juga berikan buka firewall untuk port 21

*ufw allow 21*

# Cara Update Wordpress secara Manual

Berikut tahapan update Wordpress secara manual:

1\. Backup File Wordpress dan database.

2\. Download File Wordpress terbaru di [https://id.wordpress.org/download/](https://id.wordpress.org/download/)

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/scaled-1680-/C8IJn5HMgFdWAw1R-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/C8IJn5HMgFdWAw1R-image.png)

3\. Upload File Zip Wordpress terbaru pada root direktori Web

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/scaled-1680-/xRENezIgFXRyYe9t-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/xRENezIgFXRyYe9t-image.png)

4\. Rename Folder Wordpress lama (contoh bpkad.old).

5\. Extract pada root direktori.

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/scaled-1680-/qn0NYyKQtZj2zpI8-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/qn0NYyKQtZj2zpI8-image.png)

6\. Rename Folder Wordpress hasil Extract tadi sesuai nama Folder Wordpress lama (bpkad).

7\. Masuk ke Folder bpkd. lalu Hapus Folder wp-content.

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/scaled-1680-/2opjRcXpK1536uG3-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/2opjRcXpK1536uG3-image.png)

8\. Copy Folder wp-content, File .htaccess dan File wp-config.php.

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/scaled-1680-/c8ytECHqU7knuOOw-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/c8ytECHqU7knuOOw-image.png)

9\. Paste pada Folder bpkad.

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/scaled-1680-/NYLA84QfakjBQSZC-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/NYLA84QfakjBQSZC-image.png)

10\. Login admin web wordpress. Update database. Lanjutkan untuk pembaruan database.

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/scaled-1680-/V58j6VzjmYR8CyDh-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/V58j6VzjmYR8CyDh-image.png)

[![image.png](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/scaled-1680-/N1LWmd9i8LqE1qaM-image.png)](https://dokumen.baritotimurkab.go.id/uploads/images/gallery/2025-12/N1LWmd9i8LqE1qaM-image.png)

11\. Selesai