Archive for the ‘ Server ’ Category

CentOS 6.x 安裝 xrdp (yum)

安裝流程

1. xrdp 是放在 epel 套件庫,所以我們要先安裝 epel:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

2. 安裝 xrdp 及 tigervnc server:

yum install xrdp tigervnc-server

3. 啟動 xrdp

service xrdp start

4. 加到開機自動執行

chkconfig xrdp on

PS. 只要啟動 xrdp 即可,tigervnc server 裝好後就不用理它了。

參考網頁

  1. 安裝 xrdp v0.6.0 (原始檔)
  2. Linux 上的遠端桌面中繼程式: xrdp (v0.4.2)

Linode VPS 遷移機房 (Add/Resize/Clone) 的步驟

我的某個 Linode VPS 不明所以被 GFW 給封鎖了!!無助的我,在不更換 VPS 的前題下,可以嘗試變更 IP 或是遷移機房。

早期 Linode 要做這兩件事都必須提交 Ticket,透過客服人員來處理,但現在的客服人員似乎已經不再幫忙變更 IP 了!!

不過沒關係,只要學會使用 Linode 的「Clone」功能,我們也可以自己來變更 IP 或遷移機房。

Linode 的費用

要執行「Clone」的功能之前,我們要先來了解一下 Linode 的相關費用:

  1. 早期 Linode 帳號的付款方式是採用: 包月 + 預付,一次買一年有 10% 折扣、買兩年有 15% 折扣。如果沒有用滿一個月就刪除 VPS 的話,那剩下的時間仍會歸還等比例的金額至你的帳戶。
  2. 2014 年之後新用戶的付款方式是採用: 計時 + 月結
  3. 最小的計費單位是「小時」,超過一秒鐘都算你一個小時。
  4. 只要一「新增」VPS 就會開始計費,即便你的 VPS 沒有開機。
  5. 啟用「Backups」功能會增加 50% 費用。
  6. 在執行「Clone」的過程中會有兩個 VPS 同時在計費。
  7. 可以將計費方從由「包月」改為「計時」,但沒有將「計時」改為「包月」的功能。

Read more

我愛大自然: 魯肉飯之大數據 - 這是一個圍繞著「大」的故事

以下我要寫的文章,其實不是我愛寫的文章類型,因為這種文章的邏輯不通,而且對科技界一點貢獻也沒有。再者我也不喜歡吃魯肉飯,這篇算是比較沒有營養的文章,大家可以當作笑話看看就好。不過我還是有些「大數據」的觀念想跟大家分享。

Read more

MySQL 資料庫的備份與還原

資料庫匯出/備份

1. 備份單一資料庫:

$ mysqldump -u Username -p --opt DatabaseName > Backup.sql

2. 僅備份特定資料庫下的資料表:

$ mysqldump -u Username -p --opt DatabaseName Table1 Table2... > Backup.sql

3. 僅匯出資料表結構:

$ mysqldump -u Username -p --opt --no-data DatabaseName > Backup.sql

4. 備份全部的資料庫:

$ mysqldump -u Username -p -A --opt > AllBackup.sql

mysql/mysqldump/mysqladmin 與「登入」有關的參數說明:

  • -u Username: 用來存取 mysql 資料表的用戶名稱。此參數可省略,若省略,則表示為目前登入 linux 的用戶名稱。
  • -p: 於執行時再詢問密碼。
  • -pPassword: 用來存取 mysql 資料表的密碼,-p 與 Password 的中間不可有空格。

資料庫匯入/還原

1. 建立資料庫,再從備份檔匯入單一資料庫:

$ mysqladmin -u Username -p create DatabaseName
$ mysql -u Username -p DatabaseName < Backup.sql

2. 從備份檔匯入全部的資料庫 (不需先建立資料庫):

$ mysql -u Username -p < AllBackup.sql

狀況處理:

狀況 1.

匯入資料庫時出現錯誤訊息: Unknown collation: 'utf8mb4_unicode_ci' Unknown collation: 'utf8mb4_unicode_520_ci'

說明:

MySQL 於 v5.5.3 版之後才有「utf8mb4」的編碼格式。原本 utf8 的最大編碼長度為 3bytes,而 utf8mb4 的最大編碼長度為 4bytes,因此它比 utf8 可以儲存更多的字元。但是以常用的文字來講,utf8 已經完全足夠使用了。若不升級 MySQL Server,則只須將匯入的字元編碼格式改為原本的 utf8。

解決方法:

先將備份檔中的 utf8mb4 字串替換成 utf8: (以下的三行指令需依照順序執行)

$ sed -i 's/utf8mb4_unicode_ci/utf8_general_ci/g' Backup.sql
$ sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' Backup.sql
$ sed -i 's/utf8mb4/utf8/g' Backup.sql

全部替換完再進行匯入:

$ mysql -u Username -p DatabaseName < Backup.sql

狀況 2.

以 mysqldump 匯出資料庫時出現錯誤訊息: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'test' when using LOCK TABLES

說明:

這錯誤訊息已說明了用來執行 mysqldump 的帳號沒有「LOCK TABLES」權限! 通常用 root 帳號匯出資料庫不會發生這個問題,因為我們會給 root 所有的權限。然而我們在設定其它帳號時可能會忘了給它設定「LOCK TABLES」權限,而執行 mysqldump 至少需要「SELECT」與「LOCK TABLES」權限才行,最好再加上「SHOW VIEW」、「EVENT」與「TRIGGER」。

解決方法:

重新授予用戶權限:

grant SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER on *.* to 'backup'@'localhost' identified by '{Password}';
flush privileges;

狀況 3.

從 cpanel 下載的 MySQL 檔案格式為 *.gz,可以用 gunzip 解壓縮:

$ gunzip Backup.sql.gz

注意: 使用 gunzip 解壓縮後,原本的 *.gz 會被刪除!!若要保留舊檔,須改用下列指令:

 $ gunzip -c Backup.sql.gz > Backup.sql

資料庫離線備份/還原

MySQL 的資料庫放在 /var/lib/mysql 下,以資料庫的名稱做為目錄的名稱。直接將 /var/lib/mysql 下的資料庫目錄用 tar 指令個別壓縮起來即可做為備份。要還原再把檔案解壓縮回去。

要以這種方式執行備份與還原都必須先停止 MySQL 的服務:

$ service mysqld stop

參考網頁

處理 DNS 的 CNAME 造成收件者錯誤的問題

第一次遇到客戶因為自己 Server 的 DNS 問題,造成我方要寄信給客戶時,收件者的 EMail Address 會於 SMTP Server 端被自動變更 (寄給 user@example.com 會變成寄給 user@other.example.com),以致於客戶收不到 EMail 的問題!! (客戶可能以為是我方的問題)

我自己測試的結果是與 DNS 的 CNAME 有關:

C:\>nslookup -type=cname example.com
  Server:  dns.hinet.net
  Address: 168.95.1.1
  example.com canonical name = other.example.com

同時我在網路上找到一篇微軟的 KB 文件,已經寫得很清楚了,我就直接把內容放上來。

Read more

修復 Linux 開機出現檔案系統有不一致性 (UNEXPECTED INCONSISTENCY) 的錯誤問題

Linux 無法正常開機,出現錯誤訊息:

Checking filesystems

/dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
         (i.e., without -a or -p options)
                                                  [FAILED]

*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance
(or type Control-D to continue):

錯誤訊息指出 /dev/sda1 分割區有不一致性的問題!!

Read more

Linux 電子郵件防毒: ClamAV + Sendmail

本文要介紹的 Linux 的 E-Mail 防毒主要由兩個套件組成: clamav 與 clamav-milter。

其中「clamav」是防毒軟體、「clamav-milter」是 clamav 用來與 sendmail 整合的掃毒程式。

Read more

如何檢測 logrotate 的錯誤

logrotate 的主要功能是將舊的 log 檔改檔名,並建立一個新的檔案來讓 syslog 存放新的 log。

錯誤狀況

我的 Linux 系統都有持續在寫入 log,但是單一的 log 檔檔案過大,表示已經有幾個月沒有執行 logrotate 了! 因此研判 syslog 的功能是正常的,可能是 logrotate 的運作出了問題。

Read more

CentOS 6.x 安裝 nslookup 的步驟 (與 yum 如何查詢套件)

Linode VPS 佈署的 CentOS 6.x 已經沒有 nslookup 這個工具程式了!!

以下將藉由安裝 nslookup 的同時,順便也復習一下 yum 的查詢套件功能...

Read more

使用 .htaccess 簡單防護 WordPress 的管理程式

本站曾用過 Limit Login Attempts 這個 WordPress 的外掛程式,用以防止被暴力破解登入密碼。當有人一直以錯誤的密碼進行登入時,就會對其 IP 進行幾個小時的封鎖,然後 mail 通知你又有什麼 IP 被封鎖了,效果其實也還不錯。

不過其實只要用「.htaccess 的權限認證方式」,就可以針對 wordpress 的 wp-login.php 這個單一檔案做防護,也可以達到很好的效果。

.htaccess 認證

首先找一個安全的地方放置 .htusers 這個檔案。所謂的「安全」,是指至少不要在網頁可以被下載到的路徑.htusers 的設定方式請參考本站另一篇文章:

密碼請不要用跟 WordPress 原本的登入密碼一樣。

編輯 wordpress 目錄下的 .htaccess,在檔案最後如入:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile "/path/to/.htusers"
<Files wp-login.php>
require valid-user
</Files>

如果你想進一步針對整個 wp-admin 目錄做防護,則進到 wordpress 下的 wp-admin 目錄,新增或編輯 .htaccess,一樣在檔案最後如入:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile "/path/to/.htusers"
require valid-user

參考網頁

return top