增加Linux Swap(虚拟内存)大小

Swap是Linux下的虚拟内存,也叫交换分区。当Swap使用率较高时,可通过以下方式增加其大小。

1.查看当前系统Swap空间

# free -mh
              total        used        free      shared  buff/cache   available
Mem:           31Gi        21Gi       414Mi        69Mi       9.0Gi       8.9Gi
Swap:          15Gi        15Gi       723Mi

2.创建Swap目录

# cd /usr
# mkdir swap

3.增加Swap文件


# dd if=/dev/zero of=/usr/swap/swapfile1 bs=1M count=16384
16384+0 records in
16384+0 records out
17179869184 bytes (17 GB, 16 GiB) copied, 32.0021 s, 537 MB/s

bs=1M 表示写入的每个块的大小为1M,count=16384 表示创建大小为16384M(16GB)的Swap文件

4.查看创建的Swap文件

# du -sh /usr/swap/swapfile1
16G     /usr/swap/swapfile1

5.将目标文件标识为Swap分区文件

# mkswap /usr/swap/swapfile1
mkswap: /usr/swap/swapfile1: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 16 GiB (17179865088 bytes)
no label, UUID=386dee2a-bca6-4ca4-a943-5f01aeba9f70

6.激活swap文件

# swapon /usr/swap/swapfile1
swapon: /usr/swap/swapfile1: insecure permissions 0644, 0600 suggested.

7.编辑/etc/fstab文件

vim /etc/fstab

在末行增加以下内容

/usr/swap/swapfile1 swap swap defaults 0 0

8.查看是否挂载成功

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       16506876        15748892        -2
/usr/swap/swapfile1                     file            16777212        0       -3

显示挂载成功后大约在几分钟后在探针中显现,显现后效果如图

%title插图%num
%title插图%num

参考链接:https://timberkito.com/?p=98

在 CentOS 7 安装Go环境

由于要部署的项目使用Go语言开发,但现成编译好的发布包版本较旧,因此只能自行编译。编译的前提是有Go环境,以下记录Go环境在 CentOS 7 的安装过程。

访问 https://go.dev/dl/ ,根据系统和CPU架构选择Go安装包下载

wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz

解压到目录 /usr/local

tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz

配置环境变量

echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile
echo 'export GOPATH=$HOME/go' >> ~/.bash_profile
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bash_profile

source /etc/profile
source ~/.bash_profile

mkdir -p $GOPATH/src
mkdir $GOPATH/bin
mkdir $GOPATH/pkg

最后查看版本验证是否安装成功

go version

解决宝塔登录面板时卡在正在登录的问题

在登录宝塔面板时一直卡在“正在登录…” 进不去,尝试了重启面板、修复面板、清除缓存、清理系统垃圾、更换设备及网络等一系列操作都没解决问题。最后执行了(22) 显示面板错误日志,发现很多错误。

%title插图%num

本文使用的宝塔面板版本:8.0.1,系统:CentOS 7.9.2009 x86_64

宝塔面板每天会自动备份配置文件,保存在 /www/backup/panel/ 目录,最终通过恢复备份成功解决宝塔卡在正在登录的问题,以下是命令执行记录以供参考。

# bt stop
Stopping Bt-Tasks...    done
Stopping Bt-Panel...    done
# mv /www/server/panel/data/default.db /www/backup/default.db
# mkdir /www/backup/db/ -p
# unzip -o -d /www/backup/db /www/backup/panel/2023-08-04.zip
Archive:  /www/backup/panel/2023-08-04.zip
   creating: /www/backup/db/2023-08-04/
   creating: /www/backup/db/2023-08-04/data/
  inflating: /www/backup/db/2023-08-04/data/404.html  
  inflating: /www/backup/db/2023-08-04/data/default.db
# \cp -r -a /www/backup/db/2023-08-04/data/default.db /www/server/panel/data/default.db
# bt start
Starting Bt-Panel....   done
Starting Bt-Tasks...    done
 

为什么恢复4号而不是最近的?
最近5号到8号的备份文件大小一样,可能问题就从5号开始,所以优先恢复4号的。

%title插图%num

域名被阻断的应急解决方案

%title插图%num
网站备案被注销导致无法访问

近期有小伙伴的域名备案被注销导致域名被阻断,随之业务受到影响,问我有什么办法能够解决。遇到这种“不可抗力”因素只能重新备案以尽快恢复业务,域名备案周期通常需要长达25个工作日,小伙伴说他的业务非常重要,想到要等1个月以后才能恢复,简直就是一场恶梦。要在短期内恢复业务,通常只有2种选择,第1种将业务迁移到境外服务器,第2种更换已备案的业务域名,但由于业务环境复杂,无论采取哪种方法对业务的影响仍然不小。通过我的尝试得出一套方案可以在不迁移业务又不更换业务域名的情况下恢复业务。

IDC是如何对域名进行阻断的?

域名被阻断需要及时恢复访问,要突破阻断首先需要了解IDC是如何对域名进行阻断的。访问网页时服务器会接收到host,这个host通常就是域名,在数据到达服务器之前一定会通过IDC的网关,IDC在网关部署了类似防火墙的服务对host进行过滤,如果host是被阻断对象则进行阻断。

如何突破域名阻断?

了解了域名是怎么被阻断的,就知道只要访问时不让host经过IDC网关即可。首先在服务器建立新站点,该站点绑定可正常访问的域名(以下称为A站点或A域名)。A站点反代到被阻断域名站点(以下称为B站点或B域名),切记目标地址不要使用B域名,建议使用127.0.0.1,发送域名填B域名。此时访问A域名时可正常访问B站点,但我们需要访问B域名时也能访问,怎么办?

%title插图%num
建立新站点并反代到被阻断访问站点

众所周知,域名解析绑定到境外服务器是不需要进行备案的,当然也不会被阻断。经实践测试,将B域名解析绑定到境外服务器上,并设置反代到A站点后完美突破域名阻断,恢复业务正常进行。

%title插图%num
在境外服务器建立站点B绑定被阻断域名并反代到A站点

相关问答

Q:为什么不直接迁移业务到境外服务器?
A:迁移到境外服务器首先得新购境外服务器,将会有额外开支,同时现有服务器将被闲置造成资源浪费;项目中接入了众多业务域名,一旦迁移则牵一发而动全身,如何保证平滑迁移是一项考验;从长远来看使用境外服务器不仅成本更大,线路质量和稳定性都远远不如使用境内服务器;综上因单个域名被阻断就把业务迁移到境外显然是不具性价比的。

Q:为什么不更换业务域名?
A:一旦更换业务域名,所有涉及该域名的地方全部需要更换,有些服务短期内可能仍然会有影响,例如更换小域名接口域名需要重新提交审核才能生效,期间业务仍会受到影响。

Q:可否直接在境外服务器部署站点进行反代?
A:直接反代仍然会被拦截阻断,这是由于反代服务器访问源站时仍然使用了被阻断域名的host。

Q:可否反代时发送其它域名的host?
A:如果业务中没有host绑定(例如授权系统通过域名进行授权),可在反代时发送其它域名,可省去建立站点A的步骤,站点A的作用类似于跳板机。

写在最后

本文提供的思路和解决方案虽然能够应急使用,但境外服务器的访问速度及稳定性不如境内服务器,肯定会影响访问体验,域名没有备案的影响就如同没有身份证,影响面还不止限制接入,所以业务域名一定要维护好备案,比如近期管局要求网站底部规范地添加网站备案号,要及时按照要求添加,千万不可任性,避免备案被注销后导致网站被限制接入的情况。

关闭WordPress搜索功能

近期接连收到RDS和ECS的使用率异常报警,通过日志发现都是搜索引擎蜘蛛爬虫爬了搜索页地址,而这些搜索词都是违规词,通过搜索这些关键词发现有许多站点中招,其目的是为了在搜索引擎进行非法推广。

%title插图%num
%title插图%num

遂决定关闭WordPress搜索功能,只需在当前主题的 functions.php 文件里加入以下代码即可。

//禁用WordPress前台搜索功能
function disable_search( $query, $error = true ) {
	if (is_search() && !is_admin()) {
		$query->is_search = false;
		$query->query_vars['s'] = false;
		$query->query['s'] = false;
		if ( $error == true )
		// 执行搜索后显示的错误页面
		// $query->is_home = true; //跳转到首页
		$query->is_404 = true;//跳转到404页
	}
}
add_action( 'parse_query', 'disable_search' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

网上找到的代码大都是不兼容PHP7的,经测试以上代码是支持PHP7的。

代码出处:https://zmingcx.com/disable-wordpress-search.html

宝塔面板免费版7.0.3开启收费插件Nginx防火墙的方法

打开 软件管理 > Nginx > 设置 > 配置修改;
查找#include luawaf.conf;,去掉前面的 # 符号(“#”代表注释),保存并重启 Nginx即可开启。

可以试着访问 http://你的网址/?id=../etc/passwd,如果页面弹出拦截提示即表示开启成功!

一般来讲默认开启即可发挥拦截作用,如需修改规则可在/www/server/nginx/waf/config.lua自行修改。

RulePath = "/www/server/panel/vhost/wafconf/"   
--waf 详细规则存放目录(一般无需修改)
attacklog = "on"
--是否开启攻击日志记录(on 代表开启,off 代表关闭。下同)
logdir = "/www/wwwlogs/waf/"
--攻击日志文件存放目录(一般无需修改)
UrlDeny="on"
--是否开启恶意 url 拦截
Redirect="on"
--拦截后是否重定向
CookieMatch="off"
--是否开启恶意 Cookie 拦截
postMatch="off"
--是否开启 POST 攻击拦截
whiteModule="on"
--是否开启 url 白名单
black_fileExt={"php","jsp"}
--文件后缀名上传黑名单,如有多个则用英文逗号分隔。如:{"后缀名1","后缀名2","后缀名
3"……} ipWhitelist={"127.0.0.1"}

--白名单 IP,如有多个则用英文逗号分隔。如:{"127.0.0.1","127.0.0.2","127.0.0.3"……} 下同
ipBlocklist={"1.0.0.1"}
--黑名单 IP
CCDeny="off"
--是否开启 CC 攻击拦截
CCrate="300/60"
--CC 攻击拦截阈值,单位为秒。"300/60" 代表 60 秒内如果同一个 IP 访问了 300 次则拉黑

配置Nginx禁止IP访问以防恶意解析

修改默认访问的站点配置文件,在server_name下方添加以下代码即可。

return 408;

当然改成502、403等其它状态码都可以,如果想把这部分流量导入到指定网站,添加以下代码即可。

rewrite ^(.*) https://www.jiangdefu.com permanent;

若要禁止HTTPS访问,添加监听端口443并配置任意的SSL证书即可。

给WordPress添加关键词和描述

WordPress不能直接添加关键词和描述,为了对搜索引擎比较友好,需要手动进行修改添加,这里提供一个无需插件即可实现的简单方法。

第一步:进入后台,打开外观->编辑->主题页眉 (header.php)

第二步:确认header.php文件是否有修改权限,如果文本编辑器下方有“更新文件”按钮说明有修改权限,如果没有就没有修改权限,进入该文件目录wp-content/themes/theme_name/ 修改header.php的权限为777即可。

第三步:把下面的代码复制到header.php的head标签之间即可。

<?php
//主页描述和关键词,内容为自定义
if (is_home()){
$description = "这里是主页描述";
$keywords = "这里是主页关键词";
}
//文章页面文章名称为描述,文章标签为关键词
elseif(is_single()){
if($post->post_excerpt)
{$description = $post->post_excerpt;}
elseif(function_exists('wp_thumbnails_excerpt'))
{$description = wp_thumbnails_excerpt($post->post_content, true);}
else {$description = $post->post_title;}
$keywords = "";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag )
{$keywords = $keywords . $tag->name . ",";}
$keywords = rtrim($keywords, ', ');
}
//分类页面关键词和描述,is_category()括号中写分类页面的别名
//使用分类名称作为关键词,分类描述做为描述
elseif(is_category()){
$keywords = single_cat_title('', false);
$description = category_description();
}
//标签页使用标签名作为关键字,标签描述作为描述
elseif (is_tag()){
$keywords = single_tag_title('', false);
$description = tag_description();
}
//page页面描述,page_name为你所创建的page页面的别名,可以更换。
//关键词和描述均为自定义
elseif (is_page('page_name')){
$keywords = "这里是关键词";
$description = "这里是描述";}
//打印出描述和关键词的内容
echo "<meta name=\"description\" content=\"$description\" />
<meta name=\"keywords\" content=\"$keywords\" />";
?>