DirectAdmin คำสั่งต่ออายุ Domain ที่ Let’s Encrypt SSL หมดอายุ

xvlnw   24 เมษายน 2020   ปิดความเห็น บน DirectAdmin คำสั่งต่ออายุ Domain ที่ Let’s Encrypt SSL หมดอายุ

Command Line สำหรับสั่งให้ DirectAdmin ต่ออายุ Let’s Encrypt SSL ทั้งหมดบนเซิฟเวอร์ (ที่หมดอายุแล้วต่ออายุไม่ได้)

echo "action=rewrite&value=letsencrypt" >> /usr/local/directadmin/data/task.queue && /usr/local/directadmin/dataskq d800

DirectAdmin เปิดใช้งาน SSL, TLS ให้กับ Mail Server

xvlnw   3 มีนาคม 2020   ปิดความเห็น บน DirectAdmin เปิดใช้งาน SSL, TLS ให้กับ Mail Server

ตามค่า Default ของ DirectAdmin (DA) จะไม่ได้ติดตั้ง SSL มาให้ และไม่ได้เปิดใช้งาน SSL SNI มาให้ด้วยครับ

สำหรับคำสั่งต่อไปนี้เป็นการตั้งค่าให้ DA สามารถใช้ SSL แบบแชร์ IP Address ได้ และเปิดใช้งาน SSL Hostname ที่ติดตั้ง SSL แล้ว ให้ใช้งานกับระบบ Mail Server ได้ด้วย ซึ่งจะรองรับการเชื่อมต่อ SMTP แบบ SSL ที่ Port 465 และ TLS ที่ Port 587 ครับ

เปิดใช้งาน SSL SNI

cd /usr/local/directadmin/
./directadmin set enable_ssl_sni 1
service directadmin restart

ใส่ SSL ให้กับ Hostname ก่อน

cd /usr/local/directadmin/scripts
./letsencrypt.sh request_single your.hostname.com 4096

หากต้องการทำ Redirect ไปหน้า DA Login แบบ SSL ให้ตั้งค่าตามนี้

cd /usr/local/directadmin
./directadmin set ssl 1
./directadmin set carootcert /usr/local/directadmin/conf/carootcert.pem
./directadmin set ssl_redirect_host your.hostname.com
service directadmin restart

จากนั้น เปิดใช้งาน SSL สำหรับ Mail Server

cd /usr/local/directadmin/
./directadmin set mail_sni 1
service directadmin restart
cd custombuild
./build update
./build set eximconf yes
./build set eximconf_release 4.5
./build set dovecot_conf yes
./build exim_conf
./build dovecot_conf

DirectAdmin ป้องกัน Spam Email ด้วย SpamAssassin, Easy Spam Fighter และ BlockCracking

xvlnw   1 มีนาคม 2020   ปิดความเห็น บน DirectAdmin ป้องกัน Spam Email ด้วย SpamAssassin, Easy Spam Fighter และ BlockCracking

DirectAdmin คำสั่ง Build สำหรับเปิดใช้งานระบบป้องกัน Spam Email ที่มีอยู่แล้วใน DA แต่ไม่ได้เปิดมาเป็นค่าเริ่มต้นตอนติดตั้งระบบ

# Pre Install SpamAssassin - CentOS
yum -y install perl-ExtUtils-MakeMaker perl-Digest-SHA perl-Net-DNS perl-NetAddr-IP perl-Archive-Tar perl-IO-Zlib perl-Digest-SHA perl-Mail-SPF \
perl-IO-Socket-INET6 perl-IO-Socket-SSL perl-Mail-DKIM perl-DBI perl-Encode-Detect perl-HTML-Parser \
perl-HTML-Tagset perl-Time-HiRes perl-libwww-perl perl-Sys-Syslog perl-DB_File perl-Razor-Agent pyzor

#Build Anti-Spam
cd /usr/local/directadmin/custombuild
./build update
./build set eximconf yes
./build set eximconf_release 4.5
./build set blockcracking yes
./build set easy_spam_fighter yes
./build set spamd spamassassin
./build set exim yes
./build exim
./build set dovecot_conf yes
./build dovecot_conf
./build spamassassin
./build update
./build exim_conf

DirectAdmin เปิดระบบ One-Click เข้าสู่ระบบ phpMyAdmin

xvlnw   22 กุมภาพันธ์ 2020   ปิดความเห็น บน DirectAdmin เปิดระบบ One-Click เข้าสู่ระบบ phpMyAdmin

เปิดใช้งาน One-Click เพื่อเข้าสู่ระบบจัดการฐานข้อมูล MySQL ด้วย phpMyAdmin โดยไม่ต้องกรอกรหัสผ่านฐานข้อมูล โดยสามารถเข้าใช้งานได้ผ่านทาง DirectAdmin

cd /usr/local/directadmin/
./directadmin set one_click_pma_login 1
service directadmin restart
cd custombuild
./build update
./build phpmyadmin

หากต้องการปิดการเข้าใช้งาน phpMyAdmin โดยการกรอกรหัสผ่าน สามารถปิดได้ด้วย Build นี้

cd /usr/local/directadmin/custombuild
./build update
./build set phpmyadmin_public no
./build phpmyadmin

DirectAdmin เปิดระบบ One-Click Login Webmail

xvlnw   22 กุมภาพันธ์ 2020   ปิดความเห็น บน DirectAdmin เปิดระบบ One-Click Login Webmail

เปิดใช้งานระบบ One-Click เพื่อ Auto login เข้าสู่ Webmail ผ่านทาง DirectAdmin โดยไม่ต้องกรอกรหัสผ่านที่หน้า Webmail เช่น Roundcube เป็นต้น

cd /usr/local/directadmin/
./directadmin set one_click_webmail_login 1
service directadmin restart
cd custombuild
./build update
./build dovecot
./build dovecot_conf
./build exim
./build exim_conf
./build roundcube

หลังจาก Build แล้ว สามารถเข้าสู่ระบบได้จากเมนู Email Accounts

ปิด Windows .NET Optimize ทำให้ CPU Load สูง

xvlnw   17 ตุลาคม 2019   ปิดความเห็น บน ปิด Windows .NET Optimize ทำให้ CPU Load สูง

คำสั่ง Powershell ปิด Windows .NET Optimize ทำให้ CPU Load สูง

Get-ScheduledTask *ngen* | Disable-ScheduledTask

** อย่าลืมรันด้วยสิทธิ์ Administrator

ESXI Loading ipmi_si_drv โหลดค้าง

xvlnw   15 ตุลาคม 2019   ปิดความเห็น บน ESXI Loading ipmi_si_drv โหลดค้าง

แก้ไขปัญหา โหลดหน้า Esxi Boot ค้างที่ Loading ipmi_si_drv ไม่ยอมเข้าหน้า Console

  1. reboot server
  2. เมื่อเข้าหน้า Esxi boot จะมีเวลานับถอยหลัง ให้กด Shift + O (โอ)
  3. พิมคำสั่งต่อท้ายคำสั่ง boot ด้วย noipmiEnabled และ Enter

วิธีการแก้ไขเมื่อ Boot ครั้งต่อไป ไม่ให้โหลด ipmi_si_drv และเป็นการปิดแบบถาวร

Remote ไปที่ Esxi host ผ่านทาง SSH และใช้คำสั่งด้านล่างนี้

esxcli software vib remove --dry-run --vibname ipmi-ipmi-si-drv
esxcli software vib remove --vibname ipmi-ipmi-si-drv

วิธีแก้ LOADING Redis is loading the dataset in memory

xvlnw   26 พฤศจิกายน 2018   ปิดความเห็น บน วิธีแก้ LOADING Redis is loading the dataset in memory

สำหรับผู้ที่ใช้งาน Redis Server แล้วใช้คำสั่ง redis-cli monitor แล้วขึ้นโชว์ “LOADING Redis is loading the dataset in memory” ให้ทำการแก้ไขดังนี้

redis-cli

127.0.0.1:6379> FLUSHALL

127.0.0.1:6379> exit

PHP เปลี่ยน DB Engine

xvlnw   15 พฤศจิกายน 2018   ปิดความเห็น บน PHP เปลี่ยน DB Engine

สำหรับฐานข้อมูลที่มีตารางเยอะๆ และ Engine ของตารางไม่เหมือนกัน หรือต้องการจะเปลี่ยนกลับไปกลับมา ระหว่าง MyISAM และ InnoDB สามารถทำได้ด้วยการใช้ PHP เข้ามาช่วย โดยคำสั่งนี้

<?php
// connect your database here first
//
$db_host = "localhost";
$db_user = "user";
$db_pass = "pass";
$db_name = "dbname";
mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name);

// Actual code starts here

$sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '{$db_name}'
AND ENGINE = 'InnoDB'";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
$tbl = $row[0];
$sql = "ALTER TABLE `$tbl` ENGINE=MyISAM;";
echo $sql, '<br>';
mysql_query($sql);
}
?>

จากด้านบน จะเป็นการ Query ตาราง InnoDBแล้วแก้ไขเป็น MyISAM หากต้องการทำกลับกัน ให้สลับตำแหน่งของ InnoDB และ MyISAM นะครับ

Update: เวอร์ชั่นที่ต้องการเปลี่ยน DB Engine ทุก Database ครับ

<?php
// connect your database here first
$skip = array('mysql', 'information_schema', 'performance_schema', 'da_roundcube');
//
$db_host = "localhost";
$db_user = "user";
$db_pass = "pass";
//$db_name = "dbname";
mysql_connect($db_host, $db_user, $db_pass);
$Query_DB = mysql_query("SHOW DATABASES");
while($db_single = mysql_fetch_object($Query_DB)){

// Skip for none user _
if(in_array($db_single->Database, $skip) ) continue;

echo "# " . $db_single->Database . "<br>";
mysql_select_db($db_single->Database);

// Actual code starts here

$sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '{$db_single->Database}'
AND ENGINE = 'InnoDB'";

$rs = mysql_query($sql);

while($row = mysql_fetch_array($rs))
{
$tbl = $row[0];
$sql = "ALTER TABLE `$tbl` ENGINE=MyISAM;";
echo $sql, '<br>';
mysql_query($sql);
}

echo "<br><br>";

}
?>

สำหรับ mysqli

<?php
// connect your database here first
$skip = array('mysql', 'information_schema', 'performance_schema', 'da_roundcube');
//
$db_host = "localhost";
$db_user = "db_user";
$db_pass = "db_pass";
//$db_name = "dbname";
$db = new mysqli($db_host, $db_user, $db_pass);

// Check connection
if ($db -> connect_errno) {
echo "Failed to connect to MySQL: " . $db -> connect_error;
exit();
}

$Query_DB = $db->query("SHOW DATABASES");
while($db_single = $Query_DB->fetch_object()){

// Skip for none user _
if(in_array($db_single->Database, $skip) ) continue;

echo "# " . $db_single->Database . "<br>";
$db->select_db($db_single->Database);

// Actual code starts here

$sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '{$db_single->Database}'
AND ENGINE = 'InnoDB'";

$rs = $db->query($sql);

while($row = $rs->fetch_array())
{
$tbl = $row[0];
$sql = "ALTER TABLE `$tbl` ENGINE=MyISAM;";
echo $sql, '<br>';
$db->query($sql);
}

echo "<br><br>";

}
?>

ในส่วนของตัวแปร $skip ก็ใส่ DB ที่ไม่ต้องการเปลี่ยน เช่น DB ของระบบ เป็นต้นครับ