0%

1. 上传文件到ECS服务器

你可以使用SCP或SFTPxx。配置好公钥后,文件上传到你的ECS服务器路径上。以SCP为例:

1
scp /path/to/yourfile.html username@your-ecs-ip:/path/to/server/directory
  • /path/to/yourfile.html 是你本地文件的路径。
  • username 是你在ECS服务器上的用户名。
  • your-ecs-ip 是你的ECS服务器的IP地址。
  • /path/to/server/directory 是你希望在ECS服务器上存放文件的路径。

安装和配置Web服务器

在ECS服务器上使用有sudo权限的用户进行操作,安装一个Web服务器,比如Nginx或Apache。这里我是基于CentOS的Nginx:

1
2
sudo yum install epel-release
sudo yum install nginx

启动Nginx并设置其开机自启动:

1
2
sudo systemctl start nginx
sudo systemctl enable nginx

浏览器输入你的服务器ip,如果安装成功会显示:

1
Welcome to HTTP Server Test Page!
阅读全文 »

升级思路

  • 针对游戏数据引入多语言json, 以原 id 为索引,存储 namecategoryinstructions 翻译内容。

  • 在每个模板内创建 content.js存放特定词组的多语言数据,统一放common.js 同路径。

json放置路径(暂定不动)

1
2
3
4
5
6
util/
├── language/
│ ├── en.json # 默认en,仅参照用
│ ├── es.json # 西班牙语
│ ├── fr.json # 法语
│ └── de.json # 德语

自定义脚本

1
2
3
4
5
6
7
//示例
export const ct_recommend = {
en: `Recommend For You`,
fr: `Recommandé pour vous`,
de: `Empfohlen für dich`,
es: `Recomendado para ti`
};

更新操作

获取语言

通过util.getLanguage() 检索当前是否需要翻译,得到 enesdefr 四种语言之一,默认为en

1
const language = util.getLanguage();  // 获取到语言分4种: en, es, de, fr

加载语言包

language为非默认en后,调用GAME_DATA.loadTranslations(language) 加载一次对应语言的 JSON 数据,并在成功后更新页面内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
let cachedTranslations = {}; //储载入后的语言内容
if (language !== 'en') {
GAME_DATA.loadTranslations(language)
.then(translations => {
cachedTranslations = translations;
console.log('读取到数据', cachedTranslations);

updateLanguage(); //进行更新
})
.catch(error => {
console.error('加载语言包失败:', error);
});
}

更新页面

HTML元素或js定义元素时用类似 language-update-gameItem 等标记需翻译元素,在updateLanguage()找到对应元素更新。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function updateLanguage() {
try {
let games = cachedTranslations.games;
document.querySelectorAll('.language-update-gameItem').forEach(gameItem => {
let gameId = gameItem.getAttribute('data-game-id'); // 获取游戏ID
let translatedGame = games[gameId]; // 获取该游戏的翻译数据

if (translatedGame) {
safeUpdateText(gameItem.querySelector('.game-name'), translatedGame.name);
//...
}
});
} catch (error) {
console.error('更新语言失败:', error);
}
}

页底文章嵌入路径

1
${util.getStatementsWithName(`introPage/${language}/index`)

概括

  1. 获取当前语言util.getLanguage()
  2. 加载语言包GAME_DATA.loadTranslations(language)
  3. 更新页面文本updateLanguage()

MySQL安装配置

配置 MySQL 源

首先,需要添加 MySQL 的 Yum 源,确保安装的是最新版本的 MySQL。

1
2
sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-3.noarch.rpm

安装 MySQL Server

安装 MySQL Server:

1
sudo yum install mysql-community-server

启动 MySQL 服务

1
2
3
4
sudo systemctl start mysqld

# 开机自启
sudo systemctl enable mysqld

初次登入

获取 MySQL 临时 root 密码

在 MySQL 安装过程中,会生成一个临时的 root 密码,查看日志文件来获取它:

1
sudo grep 'temporary password' /var/log/mysqld.log

这将输出类似如下的临时密码:

1
2025-03-05T09:40:27.489070Z 1 [Note] A temporary password is generated for root@localhost: abc123xyz

记下临时密码(例如 abc123xyz)。

阅读全文 »

问题描述:在编写系统程序中,出现bug导致系统CPU负载或者跑满了。导致客户端ssh无法链接上来。

解决办法:优化出问题的程序,设定CPU阔值,超过重启。

监控与重启:

创建监控脚本

1.创建脚本文件: 在根目录下创建一个新的脚本文件,例如 cpu_monitor.sh。

1
2
3
sudo nano /cpu_monitor.sh
# 或者
sudo vim /cpu_monitor.sh

2.编写以下脚本内容,THRESHOLD=9090代表CPU阔值上限为90%,超过就要重启。

1
2
3
4
5
6
7
8
#!/bin/bash
THRESHOLD=90
CPU_USAGE=$(mpstat 1 1 | awk '/Average/ {print 100 - $12}')

if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
echo "CPU usage is above $THRESHOLD%. Restarting server..."
sudo reboot
fi

3,保存退出后,执行授予权限:

1
sudo chmod +x /cpu_monitor.sh
1
sudo crontab -e

添加cron代码内容,每分钟检测一次:

1
* * * * * /cpu_monitor.sh

测试

安装 stress-ng

1
2
sudo yum install epel-release
sudo yum install stress-ng

查看服务器为几线程:

1
nproc

使用 stress-ng 设置 CPU 负载,如下第一个2代表两个线程,96代表是CPU负载接近96%,20s是定时器时长。

1
stress-ng --cpu 2 --cpu-load 96 --timeout 20s

等待一段时间 服务器重启就是成功了。

基础代码

{your-pixel-id-goes-here}替换为实际的pixelID,将以下代码放在网页的<head></head>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '{your-pixel-id-goes-here}');
fbq('track', 'PageView');
</script>
<noscript>
<img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id={your-pixel-id-goes-here}&ev=PageView&noscript=1"/>
</noscript>
<!-- End Facebook Pixel Code -->

如果有其他事件上报,例如ViewContent,在基础代码的fbq('track', 'PageView');行后添加该事件上报:

1
2
fbq('track', 'PageView');
fbq('track', 'ViewContent'); // 新添加的事件

记录一个批量重命名文件bat代码。该脚本主要功能是遍历当前目录中的所有文件,并将符合特定模式的文件名进行重命名,将类似 ASMR Rainbow Jelly-720 X 1280-2024-07-04-930d17d3fe662399f0ca12104d604fa5 重命名为 ASMR Rainbow Jelly-720 X 1280,舍弃-2024-07-04-930d17d3fe662399f0ca12104d604fa5日期和bash部分。

完整脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@echo off
chcp 65001 > nul 2>&1
setlocal enabledelayedexpansion

REM 遍历当前目录中的所有文件
for %%f in (*.*) do (
set "filename=%%f"
set "extension=%%~xf"

REM 判断是否为批处理文件,跳过
if /i "!extension!"==".bat" (
echo 跳过批处理文件: !filename!
) else (
REM 分割文件名
for /f "tokens=1,2,3,4 delims=-" %%a in ("!filename!") do (
set "part1=%%a"
set "part2=%%b"
set "part3=%%c"
set "part4=%%d"

REM 检查日期部分是否在指定年份范围内
if "!part3!" neq "" (
if "!part3!" gtr "1900" if "!part3!" lss "2100" (
set "new_filename=!part1!-!part2!"
) else (
set "new_filename=!filename!"
)
) else (
set "new_filename=!filename!"
)

REM 如果新旧文件名相同,则输出无需重命名信息
if "!filename!"=="!new_filename!" (
echo !filename!:不需重命名
) else (
REM 尝试重命名文件
ren "!filename!" "!new_filename!" > nul 2>&1
if !errorlevel! equ 0 (
echo !filename! 更名为 !new_filename!
) else (
echo !filename!重命名失败
)
)
)
)
)

echo 批量更名完成,bat from CRF %TIME% !!
pause

脚本解析

初始化部分

1
2
3
@echo off
chcp 65001 > nul 2>&1
setlocal enabledelayedexpansion
  • @echo off:关闭命令回显。
  • chcp 65001 > nul 2>&1:将代码页设置为 UTF-8,防止出现乱码。
  • setlocal enabledelayedexpansion:启用延迟变量扩展,允许在 for 循环中使用 ! 来引用变量。
    阅读全文 »

ECS服务配置

服务器配置:
i-7xvatqiyl3pikzz7pz2t运行中(2核(vCPU) 2GiB) AliyunLinux

添加私钥

在本地电脑使用以下命令查看并公钥内容:

1
cat ~/.ssh/id_rsa.pub

执行以下1或2完成添加公钥操作。
1.打开ECS后台远程链接,编辑 authorized_keys 文件:

1
编辑 authorized_keys 文件。

按Esc建输入:wq保存退出。

附:如果你第一次使用没有正常关闭,执行一下操作

1
2
# 尝试使用 ps 命令查看正在运行的 Vim 进程
ps aux | grep vim

找到相关的 Vim 进程,并使用 kill 命令终止它们。

1
kill -9 <process_id>

2.登录ECS管理控制台。在左侧导航栏,网络与安全 > 密钥对 > 添加复制出来的公钥内容 命名为test

在左侧导航栏,选择实例与镜像 > 实例。

在操作列中,找到购买的ESC实例…> 实例属性 > 绑定密钥对,选择test, 确定重启。

阅读全文 »