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 的话,那剩下的时间仍会归还等比例的金额至你的帐户。如果将方案降级也会归还差额。(2019/04/01 起,已强制转为计时 + 月结)
  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