十分钟把 WordPress 迁移到新 Debian 服务器

开始迁移前

开始迁移前,要备份网站文件及 MySQL 数据库。假设你的网站文件位于 /var/www/wordpress,数据库名是 wordpress。执行下面的命令,归档网站文件:

 # tar czf ~/www.tgz wordpress -C /var/www

现在,你就把网站文件保存到了 /root/www.tgz。你现在可以尝试解压(确保没有输错)然后下载到本地。然后,我们备份 MySQL 数据库:

 # mysqldump wordpress > ~/wordpress.sql

你可以简单浏览一下文件,都是一些 SQL 语句。然后,下载之。

在新服务器上安装相关服务

安装 PHP

 # apt install -y php-{fpm,dom,curl,dom,mysql,gd,imagick,mbstring,intl,zip}

安装后,php-fpm 应该已经默认启动,如果没有运行:

 # systemctl start php7.4-fpm

安装 Mariadb

 # apt install -y mariadb-server mariadb-client 

然后,你应该修改一些安全选项(输入按照下面来就行):

 #  mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

安装 Caddy

Caddy 是一个非常友好的 Web 服务端,安装前需要新增 apt 源:

 # apt install -y debian-keyring debian-archive-keyring apt-transport-https
 # curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
 # curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list

然后,你就可以用 apt 安装 Caddy:

 # apt update && apt install -y caddy

配置你的服务器

配置 MySQL (Mariadb)

首先,使用 mysql 命令,创建新用户和新数据库(留意命令中的变量):

# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5340 to server version: 3.23.54

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wordpressusername"@"localhost" IDENTIFIED BY "PLACE_YOUR_PASSWORD_HERE";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec) 

mysql> EXIT
Bye

然后导入先前备份的数据库:

 # mysql wordpress < /path/to/wordpress.sql

配置 Caddy

先确保对应的域名指向了你的服务器 IP,然后在 /etc/caddy/Caddyfile 中写以下内容:

your.domain.tld {
	root * /var/www/wordpress

	file_server
	php_fastcgi unix//run/php/php-fpm.sock
}

然后重载 Caddy:

 # systemctl restart caddy

配置 WordPress

首先,将你的网站文件备份解包到 /var/www/wordpress

 # tar xzvf /path/to/www.tgz -C /var/www

然后重设目录权限:

 # chown -R www-data:www-data /var/www/wordpress

如果你修改了数据库参数,则修改对应 WordPress 配置文件。

至此,你应该完成了 WordPress 的迁移!

阿里轻量应用服务器重装全新 Debian 系统

阿里云、腾讯云、不管啥云默认安装的系统都非常糟糕。一般都标配有一个「XX盾」之类的后门,这个的性质和「华为电脑管家」是一样的。另外,默认安装的系统还预装了一大堆不必要的包。

所以,让我们从官方镜像安装一个全新的系统!服务商一般都提供主机 VNC,所以我们可以像访问正常电脑一样安装系统。但这里面有些小困难,这些服务商基本都不支持挂载自己的 ISO 并修改启动顺序(justhost.asia 和 buvum.net 可以做到)。所以我们需要从网络启动(netboot)。

继续阅读“阿里轻量应用服务器重装全新 Debian 系统”

记解除 TP-LINK 路由器 IPv6 防火墙

来龙去脉

大概在九月份我尝试从外网使用 IPv6 连接到我的 PC,发现连接不了。从未知狐那里得知这是因为国产路由器都内置了 IPv6 防火墙并且无法关闭

我的路由器是 TP-XDR3010 易展版,使用以来还没有发现问题。之所以购买 TP-LINK 的产品我主要是考虑到它功能的丰富。记得在小学二/三年级时就从亲戚家拿到了 TP-LINK 的老路由器,记得后台界面一大堆选项()。

不幸的是,我手里的这台 TP-LINK 路由器确实不能关闭防火墙。但是,恩山已经有报道拿到了解除防火墙的固件。那时正好有一个新版本,升级了以后就不能再刷前面提到的固件。我升级了 🙁 但这至少证明 TP-LINK 的确有心满足 IPv6 防火墙的需求。

继续阅读“记解除 TP-LINK 路由器 IPv6 防火墙”

像 UNIX 时代一样架设 SMTP 服务器

最近需要架设一台 SMTP 服务器用来发件,我起初觉得这不简单。但当你像 UNIX 时代一样架设 SMTP 服务器,它是非常简单的。今天,我就把这篇教程当成我几个小时折腾的总结。

基础知识

首先,UNIX 时代是啥样的?UNIX 时代计算机还十分昂贵,所以大家共享同一台计算机。不同的用户使用终端登入同一台计算机。用户们一般都结成社区。现在,这样的社区还存在但因为大家人手一台计算机就改用 ssh 连接到同一台主机了。这样的社区叫做 tilde 其中 tilde.club 算比较有名的。

所以,起初电子邮件还只是在一台主机中传输。像这样:

$ mail bob
Subject: Hello World

Hello, how are you doing?
EOT

然后 Bob 的终端就会提醒他有新的邮件,使用 mail 命令就可以查看。

现在的电子邮件通过互联网使用 SMTP 协议投递到别的主机。比如 noreply@want.reply.com 中 noreply 就是要投递到的用户,want.reply.com 就是投递到的目标主机。在域名系统还未成熟时,这种投递方式就已经存在。

一封邮件可以由任何人投递,而信封(envelope)也无非就像一个 HTTP 请求一样。以中国的第一封邮件举例(部分地方加上了换行):

Received: from Peking by unika1; Sun, 20 Sep 87 16:55 (MET dst)
Date: Mon, 14 Sep 87 21:07 China Time
From: Mail Administration for China
To: Zorn@germany, Rotert@germany, Wacker@germany, Finken@unika1
CC: lhl@parmesan.wisc.edu, farber@udel.edu, jennings%irlean.bitnet@germany, cic%relay.cs.net@germany, Wang@ze1, RZLI@ze1
Subject: First Electronic Mail from China to Germany
Date: Mon, 14 Sep 87 21:07 China Time

"Ueber die Grosse Mauer erreichen wir alle Ecken der Welt"
"Across the Great Wall we can reach every corner in the world"

Dies ist die erste ELECTRONIC MAIL, die von China aus ueber Rechnerkopplung in die internationalen Wissenschaftsnetze geschickt wird.
This is the first ELECTRONIC MAIL supposed to be sent from China into the international scientific networks via com-puter interconnection between Beijing and Karlsruhe, West Germany (using CSNET/PMDF BS2000 Version).

University of Karlsruhe Institute for Computer Application of
Informatik State Commission of Rechnerabteilung - Machine Industry (IRA) (ICA)

Prof. Dr. Werner Zorn Prof. Wang Yuen Fung
Michael Finken Dr. Li Cheng Chiung
Stephan Paulisch Qui Lei Nan
Michael Rotert Ruan Ren Cheng
Gerhard Wacker Wei Bao Xian
Hans Lackner Zhu Jiang
Zhao Li Hua

可以看到,上面的邮件由 Mail Administration for China 发给德国的 Zorn, Rotert, Wacker 和 unika1 的 Finken。现在的邮件与这封 1987 年的邮件没什么不同,只是邮件头稍微复杂点而已。

电子邮件怎么投递?一封电子邮件的起点是发件人,终点是收件人的收件箱。 中间还要经过服务器的转发,这样的服务器叫做中继(Relay)。一个主机上的内部邮件会被 SMTPd 直接投递到对应用户的收件箱,SMTPd 也可以接收外界的投递然后运送到对应用户的收件箱。SMTPd 还要发件,如果邮件不发往本地用户那么就要充当中继,投递给对方。

继续阅读“像 UNIX 时代一样架设 SMTP 服务器”

记国庆在北京和好友的见面

本来这是国庆时要写的,但那次见面有些遗憾。现在,遗憾没有了也应该写这篇文章了。

初遇好友

我记得是在五月份左右,我和好友 Kiri 在 Loongarch 交流群认识。在聊天的时候我得知他在北京林业大学(保加利亚大学)学习生物科技(我也对生物很感兴趣)。而且,他还是一位自由软件爱好者而且热爱共产主义。

他和其它共产主义热爱者提出了共产公企的概念:

共产公企是立足于中国特色社会主义显示,以中国特色社会主义市场经济的基本经济制度为自身发展基础,坚持“一个中心两个基本点”的根本原则,为实现共同富裕并最终实现共产主义而在现有法律法规框架内成立的一种由具有共产主义觉悟并坚持自我思想教育的劳动者集体持股,以初次分配“按劳分配”、二次分配“按需分配”为分配原则的企业。(摘自《共产公企纲领》,了解更多:644730007)

继续阅读“记国庆在北京和好友的见面”