debian 12 官方提供的云镜像默认使用 netplant 来管理网络,配置静态 ip 时,不需要编辑 /etc/network/interfaces
文件。只需修改 /etc/netplan
下的配置文件即可。
修改完成后,使用命令:
sudo netplant apply
使新配置生效。使用
ip addr show
查看 ip 地址是否与配置的一致。
一个简单的wordpress博客站
debian 12 官方提供的云镜像默认使用 netplant 来管理网络,配置静态 ip 时,不需要编辑 /etc/network/interfaces
文件。只需修改 /etc/netplan
下的配置文件即可。
修改完成后,使用命令:
sudo netplant apply
使新配置生效。使用
ip addr show
查看 ip 地址是否与配置的一致。
wp-fail2ban 是 wordpress 上一款与 fail2ban 集成的,提高 wordpress 站点安全性的插件。
在 插件>安装新插件 中搜索“wp-fail2ban”,安装如上图所示插件并启用。
安装完成后,ssh 连接到你博客的 vps 上。
参考插件的 配置文档 ,以使用 systemd 的 debian12 为例。
确保你的 vps 上已经安装了 fail2ban。如果没有安装,可以参考我的这篇博文进行安装和配置。
复制你的 网站根目录/wp-content/plugins/wp-fail2ban/filters.d/
下的所有文件到 /etc/fail2ban/filters.d/
目录下。
sudo cp 网站根目录/wp-content/plugins/wp-fail2ban/filters.d/*.conf /etc/fail2ban/filter.d/
修改你网站根目录下的 wp-config.php 文件,在末尾添加以下内容:
// Make sure we're not using the short ("wp") tag
define('WP_FAIL2BAN_SYSLOG_SHORT_TAG', false);
// Don't include the HTTP host in the tag
define('WP_FAIL2BAN_SYSLOG_TAG_HOST', false);
/* That's all, stop editing! Happy blogging. */
随后,保存退出。切换目录到 /etc/fail2ban/jail.d
。在该目录下新建一个名为 wordpress.conf
的配置文件,并添加以下内容:
[wordpress-hard]
enabled = true
filter = wordpress-hard
backend = systemd
journalmatch = SYSLOG_IDENTIFIER=wordpress
maxretry = 1
port = http,https
[wordpress-soft]
enabled = true
filter = wordpress-soft
backend = systemd
journalmatch = SYSLOG_IDENTIFIER=wordpress
maxretry = 3
port = http,https
完成后,保存退出并重新加载 fail2ban 服务。
sudo systemctl reload fail2ban
使用命令
systemctl status fail2ban
查看 fail2ban 是否正常运行。使用命令
sudo fail2ban-client status
查看新配置是否已添加。成功添加后输出如下图:
至此,wp-fail2ban 已经开始保护你的 wordpress 网站了。
fail2ban是一个服务器免受暴力攻击的入侵防御软件,基于auth 日志文件工作,更新防火墙规则,用于在指定的时间内拒绝特定的 IP 地址,从而有效保护服务器免受暴力攻击。
debian12 上使用以下命令安装:
sudo apt install fail2ban -y
安装完成后,fail2ban会自动运行。
如果遇到fail2ban安装完成后,使用命令
systemctl status fail2ban
查看fail2ban运行状态时显示失败,请参考我的这篇文章解决
切换到目录 /etc/fail2ban
,复制 jail.conf
一份为 jail.local
或新建一份 jail.local
的配置文件,不要修改默认的 jail.conf
配置文件。
以下是我的配置,以供参考:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 1d
findtime = 10m
maxretry = 5
[sshd]
enable = true
port=22
bandtime=1d
findtime=10m
maxretry=5
backend=systemd
具体配置可在网络上搜索参考,完成后,使用命令:
systemctl restart fail2ban
重启 fail2ban 服务。
使用
sudo fail2ban-client status
来查看服务状态。
在 lx-music 同步服务器的官方文档中,提到了可以使用 ngnix 服务器来代理并使用 ssl 加密。不过笔者的 1h1g vps上使用的是 apache2 服务器,借助 deepseek 的力量,成功参照官方配置 ngnix 服务器的文档,使用 apache2 服务器实现代理并使用 ssl 加密。
debian 12 vps 一个,托管在 cloudflare 的域名一个,vps 已安装 apache2 服务器,若未安装,执行以下命令安装:
sudo apt update && sudo apt install apache2 -y
进入你托管域名的仪表板,点击 dns 记录,点击添加记录,添加一条记录,类型选择 A,名称为 lx-music(可以按你的喜好替换),ipv4填你的 vps ipv4 地址,启用代理,最后保存。添加后如图所示:
完成后,点击 ssl/tls,选择源服务器,若无证书,选择创建证书,保存对应的 key 和 pem,若已有证书,下载保存。
将证书 key 和 pem 上传到 服务器的 /etc/ssl/you_domain(按需替换)目录下。若目录不存在,请先创建。完成后,如下图所示:
最后,添加缓存绕过规则,避免出现问题。
点击缓存,选择 Cache Rules,点击创建规则,如下图所示:
完成后保存,至此,cloudflare 配置部分结束。
使用以下命令启用必须的 apache2 服务器模块
sudo a2enmod proxy proxy_http proxy_wstunnel headers rewrite
在 /etc/apache2/sites-available/ 目录下,新建一个名称为 lx-music.you_domain.conf 的配置文件,名称与 cloudflare 上的 dns 记录保持一致。
*注意⚠️:请将 lx-music.you_domain.conf 替换为你的域名!!!
sudo vim lx-music.you_domain.conf
向该配置文件,添加以下参考以下参考配置:
*注意⚠️:要将对应的域名替换为你的域名!!!同时注意证书文件的路径!!!
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName lx-music.145914.xyz
# SSL 配置
SSLEngine On
SSLCertificateFile /etc/ssl/145914.xyz/145914.xyz.crt
SSLCertificateKeyFile /etc/ssl/145914.xyz/145914.xyz.key
SSLCertificateChainFile /etc/ssl/145914.xyz/145914.xyz.crt
# 反向代理配置
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:9527/
ProxyPassReverse / http://localhost:9527/
# 传递认证头
RequestHeader set Authorization "expr=%{HTTP:Authorization}"
# 设置请求头
RequestHeader set Host "%{HTTP_HOST}e"
RequestHeader set X-Real-IP "%{REMOTE_ADDR}e"
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}e"
RequestHeader set Upgrade "websocket" env=HTTP_UPGRADE
RequestHeader set Connection "upgrade" env=HTTP_UPGRADE
# WebSocket支持(强制升级连接)
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:9527/$1 [P,L]
# 可选:设置超时和日志
ProxyTimeout 300
ErrorLog ${APACHE_LOG_DIR}/lx-music_error.log
CustomLog ${APACHE_LOG_DIR}/lx-music_access.log combined
</VirtualHost>
</IfModule>
完成后,启用域名并重启 apache2 服务器,检查配置文件语法:
*注意⚠️:请将 lx-music.145914.xyz.conf 替换为你的域名!!!
sudo a2ensite lx-music.145914.xyz.conf && sudo systemctl restart apache2 && sudo apache2ctl configtest
检查 apache2 服务器,确保处于活跃状态:
至此,apache2 服务器部分配置完成。
安装运行环境:
sudo apt install nodejs -y
安装完成后,使用
node -v
查看 nodejs 版本号。
安装pm2
sudo npm i -g pm2
至此,完成所需运行环境的安装。
下载 lx music 同步服务器:
截至发文时,lx-music sync 服务器最新版本为 v2.1.2
lx music sync 源码地址:
https://github.com/lyswhut/lx-music-sync-server
使用 wget 下载 最新的 lx-music sync 服务器
wget https://github.com/lyswhut/lx-music-sync-server/archive/refs/tags/v2.1.2.tar.gz
下载完成后,解压到当前目录:
tar -xzvf v2.1.2.tar.gz
解压完成后,进入服务器目录安装依赖:
cd lx-music-sync-server-2.1.2 && npm ci --omit=dev
完成后,编辑 config.js 文件进行配置:
vim config.js
取消所有选项的注释,设置name,password,修改 ‘proxy.enabled’ 为 true,其余选项保持默认。保存退出。
启动服务器:
npm run prd
查看启动日志,若无错误则启动成功
pm2 logs
访问 https://lx-music.you_domain/hello,出现 Hello~::^-^::~v4~ 说明已经可以正常访问 lx music 同步服务器了。
现在,一个有 ssl 加密的 lx music 同步服务器就搭建完成了。
在vps上,开启防火墙可以有效地提高服务器安全性,有效阻止来自黑客的攻击。
UFW 或简单防火墙是一个用户友好的 iptables 前端,也是 Linux 上最好的防火墙之一。您可以轻松地在不同的 Linux 发行版(包括 Debian)上安装此防火墙管理工具。
UFW 通过提供简化的界面和命令,简化了配置 iptables 的复杂过程。该防火墙使您能够定义处理网络流量的规则。这可确保仅允许授权连接,同时阻止潜在的安全风险。
sudo apt update && sudo apt install ufw -y
安装完成后,ufw并不会自动运行,运行:
sudo ufw enable
才能启用ufw防火墙。
使用以下命令,查看ufw防火墙状态:
sudo ufw status
若防火墙处于活动状态,有类似以下输出:
要允许特定端口,可以使用以下命令:
sudo ufw allow 端口号/协议
例如,允许一个2222的ssh端口:
sudo ufw allow 2222/tcp
要禁止特定端口,可以使用以下命令:
sudo deny 端口号/协议
例如,阻止所有 TCP 端口,可以执行:
sudo ufw deny 0.0.0.0/0 tcp
允许或拒绝特定服务,可以使用以下命令:
sudo ufw allow 服务名/协议 #允许
sudo ufw deny 服务名/协议 #拒绝
例如,允许https服务:
sudo ufw allow https
拒绝http服务:
sudo ufw deny http
允许/拒绝特定 IP 地址访问,可以使用以下命令:
sudo ufw allow from IP地址/掩码 #允许
sudo ufw deny from IP地址/掩码 #拒绝
要使设置的ufw规则生效,只需重启ufw即可。
sudo systemctl restart ufw.service
显示 UFW 的状态及其活动规则:
sudo ufw status verbose
查看ufw默认允许的应用列表:
sudo ufw app list
许多常用应用ufw已默认允许。
如果需要重置ufw规则为默认,请执行:
sudo ufw reset
如果需要卸载ufw,请执行:
sudo apt purge ufw gufw -y
在 debian12 上安装完 fail2ban 后运行提示找不到 sshd 日志,原因是 fail2ban 默认 的 ssh 日志读取配置使用 rsyslog,debain12 已经默认使用 systemd 的 journalctl,有两种解决办法。
sudo apt install rsyslog -y
安装完成后 systemctl restart fail2ban
即可。
在 /etc/fail2ban 目录下,新建一个 jail.local 文件 :
sudo vim jail.local
可添加以下参考配置内容
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 1d
findtime = 10m
maxretry = 5
[sshd]
enable = true
port=22
bandtime=1d
findtime=10m
maxretry=5
backend=systemd
重点是添加 backend=systemd 项,告诉 fail2ban 使用 systemd 的日志后端。
完成后重启 fail2ban 服务
systemctl restart fail2ban
查看 fail2ban 状态
一台安装 debian 12 的 vps,ssh 远程连接上 vps 服务器。使用
sudo apt update && sudo apt upgrade -y
更新系统至最新状态。以及一个托管在 Cloudflare 的域名。
使用以下命令安装 apache 服务器 和 php8.2环境:
sudo apt install apache2 php8.2 -y
mysql 安装:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
sudo apt install ./mysql-apt-config_0.8.33-1_all.deb
在TUI中选择安装 mysql 8.0 版本
sudo apt install mysql-server
在TUI中设置ROOT密码,安装完成。
安装 wordpress 所需 php模块:
sudo apt install php8.2-imagick php-curl php-gd php-soap php-mbstring php-zip php-xml php-intl php8.2-opcache php8.2-mysql -y
1、mysql的配置:
使用命令
mysql -u root -p
输入设置的密码,登录mysql。输入以下命令以创建一个名为 wordpress 的新数据库:
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
输入以下命令创建一个新的MySQL用户,这个示例创建了一个名为 wpuser 的用户,密码为 wppassword,你需要替换为你自己的用户名和密码,并牢记,后面WordPress搭建会用到。
CREATE USER 'wpuser'@'%' IDENTIFIED WITH mysql_native_password BY 'wppassword';
授权用户,输入以下命令授予用户对WordPress数据库的访问权限。
GRANT ALL ON wordpress.* TO 'wpuser'@'%';
刷新权限,输入以下命令刷新MySQL权限:
FLUSH PRIVILEGES;
至此,完成了 wordpress 的 mysql 数据库部分的配置,输入
EXIT;
退出 mysql。
2、apache服务器的配置
使用以下命令创建配置文件:
sudo vim /etc/apache2/sites-available/my_domain.conf
请将“my_domain”替换为你的域名。
配置文件内容参考如下:
<VirtualHost *:443>
ServerName my_domain
ServerAlias www.my_domain # SSL 配置
SSLEngine on
SSLCertificateFile /etc/ssl/my_domain/my_domain.crt
SSLCertificateKeyFile /etc/ssl/my_domain/my_domain.key
SSLCertificateChainFile /etc/ssl/my_domain/my_domain.crt
# 基础配置
ServerAdmin webmaster@localhost
DocumentRoot /var/www/wordpress
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# 目录权限
<Directory /var/www/wordpress/>
AllowOverride All
Require all granted
</Directory>
# -----------------------
# 模块配置部分-
# -----------------------
# 静态资源缓存(需已启用 expires_module 和 headers_module)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(js|css|jpg|png|gif|svg|woff2)$">
Header set Cache-Control "public, max-age=31536000"
</FilesMatch>
</IfModule>
# GZIP 压缩(需已启用 deflate_module)l
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript text/xml application/json
</IfModule>
</VirtualHost>
*ssl 证书可在 cloudflare 里对应域名下的 SSL/TLS > 源服务器 中申请。
保存退出,启用新网站:
sudo a2ensite my_domain
最后,禁用默认网站,并重启Apache:
sudo a2dissite 000-default && sudo a2enmod rewrite && sudo a2enmod rewrite && sudo apache2ctl configtest && sudo systemctl restart apache2
运行以下命令以下载并解压 WordPress 文件:
cd ~ && wget https://wordpress.org/latest.tar.gz && tar -xzvf latest.tar.gz
移动wordpress到/var/www/下并修改权限:
mv wordpress /var/www/ && chown -R www-data:www-data /var/www/wordpress && chmod 750 -R /var/www/wordpress/
访问你的域名,在wordpress安装程序引导下完成wordpress的安装。
使用并行编译,在 /etc/makepkg.conf
中找到 MAKEFLAGS
,设置为:
MAKEFLAGS="-j4"
数字应改为电脑 CPU 核心数(或线程数),如我的电脑cpu为6核12线程,对应的修改为:
同时,还可以禁止debug包的生成来进一步提升速度:
OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !debug lto)
只需在 options 数组选项的 debug 前面添加 ! 。
GDB(GNU Debugger)是调试 C/C++ 等程序的强大工具,掌握一些高效技巧能大幅提升调试效率。以下是一些实用技巧:
gdb ./program # 调试可执行文件
gdb -p <pid> # 附加到正在运行的进程
break main # 在 main 函数设置断点
break file.c:20 # 在 file.c 的第 20 行设置断点
break func # 在函数 func 处设置断点
info breakpoints # 查看所有断点
delete <num> # 删除断点(num 为断点编号)
run <args> # 启动程序并传入参数
continue # 继续运行到下一个断点
next (n) # 单步执行(不进入函数)
step (s) # 单步执行(进入函数)
finish # 执行完当前函数并返回
print var # 打印变量值
print *ptr@10 # 打印指针 ptr 指向的 10 个元素
print/x var # 以十六进制格式打印变量
display var # 每次断点后自动显示变量值
undisplay <num> # 取消自动显示
x/s addr # 检查 addr 处的字符串
# 格式说明:x/[数量][格式][单位]
# 单位:b(byte), h(half-word), w(word), g(giant word)
# 以十六进制检查 addr 处的10个字(4字节)
x/10xw addr
break file.c:20 if i == 5 # 当 i=5 时触发断点
condition <num> i > 10 # 修改已有断点的条件
watch var # 当变量被修改时暂停
rwatch var # 当变量被读取时暂停
awatch var # 变量被读写时均暂停
catch throw # 捕获 C++ 异常
catch syscall open # 捕获系统调用(如 open)
set variable i = 10 # 修改变量 i 的值
call func() # 强制调用函数
return 0 # 强制从当前函数返回
backtrace (bt) # 显示调用堆栈
frame <num> # 切换到指定堆栈帧
info locals # 查看当前栈帧的局部变量
info threads # 查看所有线程
thread <num> # 切换到指定线程
break func thread 2 # 在线程 2 的 func 处设置断点
handle SIGSEGV nostop # 收到 SIGSEGV 时不暂停
handle SIGINT print # 打印 SIGINT 信号信息
gdb -tui ./program # 启动文本界面(显示代码窗口)
Ctrl+X+A # 在普通模式和 TUI 模式间切换
record # 开始记录执行过程(反向调试)
reverse-step # 反向执行(需先执行 record)
gdb ./program core # 分析崩溃的 core dump 文件
将常用命令写入 .gdbinit
文件,或通过 source
命令加载脚本:
gdb -x script.gdb ./program # 执行 script.gdb 中的命令
-g
选项(如 gcc -g -o program program.c
)。directory /path/to/source
指定源码路径。info registers
或 print $rax
。debian系:
sudo apt install flatpak
arch系:
sudo pacman -Syu flatpak
sudo flatpak remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub
参考https://mirror.sjtu.edu.cn/docs/flathub
flatpak install org.winehq.Wine
按提示选择,回车确定。
运行命令:
flatpak run --command=bash org.winehq.Wine
在 Wine 环境中启动一个 Bash shell,允许你直接与 Wine 环境交互。运行:
winetricks
使用图形界面交互,使用exit
命令退出。