缘起

开源实例之自建服务器下篇:工控机部署

我的个人小服务器

n3540小主机介绍(更详细的查看开杜俊源实例之自建服务器下篇:工控机部署)

配置 参数 备注
品牌 跨链 工控小主机
CPU 英特尔奔腾 N3540 4 核 2.16GHz
内存 海力士 DDR3L 1600MHz 8GB
硬盘 mSATA P800 256GB
主板 研域 ITX-WM562 工业主板
数据接口 1 个 USB2.0、1 个 USB3.0
视频接口 1 个 HDMI、1 个 VGA
网络接口 1 个千兆网口 8111E/F
电源接口 1 个 DC 12V 3A
尺寸 20CM x 20CM x 3.5CM
功耗 TDP 7.5W
噪音 完全静音 全铝合金被动散热,无风扇
其他功能 来电自启、网络唤醒

小黄鱼蹲了一个月最终242入手了一台内存4g的。

n3540

n3540安装debian11系统

准备工作

  • n3540小主机
  • 网线
  • u盘启动盘
  • 写盘工具
  • debian11系统
  • hdmi线和显示器

  • 键盘和鼠标

  • u盘拓展坞。(由于n3540只有两个usb接口,在插上启动盘后就只剩下一个usb口不够连接键盘和鼠标。)

系统我选择的是debian-11.8.0-amd64-netinst.iso

debian其他历史版本

写盘工具使用的是balenaEtcher,也可以使用rufus等其他写盘工具。

所有线连接好,写好镜像的u盘启动盘也插入完毕,然后就通电开机,与此同时连续点击键盘的delete键进入bios,把u盘启动设置成第一启动项

  • 设置U盘作为第一启动项

启动盘

再次断电开机就可以进入系统的引导安装界面。安装系统按照提示安装。注意安装的过程把ssh sever勾选上,便于后续ssh连接。

ssh连接工具可选finalshell,xshell,putty等。建议把n3540的ip固定,不要让路由器自动分配ip。

ssh连接

唯一需要注意的是n3540的网段和win电脑的网段需要一致,即连接同一个wifi。

比如n3540的ip是192.168.8.5,那么win电脑就必须是192.168.8.,\可以是2-244之间的任意数字。

连接成功

debian11系统配置

本人在尝试搭建完毕后,发现过15-20分钟设备就会断网,后来发现是由于长时间没有操作就会进入节电模式自动息屏断网,就和windows系统一样长时间不操作就会锁屏网自然也会断开。

  • 解决方法:电源配置,把息屏改为从不,自动挂起改为关。

修改电源配置

  • 修改了以上之后,n3540也就持续运行一天左右就又断网了,使用如下命令编辑logind.conf文件
1
vim /etc/systemd/logind.conf

1
HandleLidSwitch=ignore

“HandleLidSwitch=suspend” 是一个配置选项,通常用于控制笔记本电脑关闭盖子(lid switch)时的行为。在Linux系统中,特别是使用systemd作为初始化系统的情况下,可以通过编辑 /etc/systemd/logind.conf 文件来设置这个选项。

具体来说,”HandleLidSwitch=suspend” 表示当关闭笔记本电脑的盖子时,系统会执行暂停(suspend)操作,将电脑置于低功耗状态,以节省能源并在需要时快速恢复。

你可以根据自己的需求修改这个选项,例如设置为其他操作,如 “HandleLidSwitch=ignore” 表示关闭盖子时不执行任何操作,或者 “HandleLidSwitch=poweroff” 表示关闭盖子时直接关机。修改完配置后,记得重启系统或者重新加载 systemd 服务以使更改生效。

  • 把当前用户添加到sudo

1、首先切换到root用户

1
su - root

这个命令用于切换用户身份到root(超级用户)。通过”su - root”,你可以登录为root用户并获取其权限,允许执行需要超级用户权限的操作。

2、安装sudo包

1
apt install sudo

sudo(Superuser Do)是一个用于允许授权用户以其他用户的身份执行命令的工具。它通常用于执行需要超级用户权限的操作,而不必完全切换到root用户。sudo的使用可以提高系统安全性,因为它允许对特定命令进行授权,而不是赋予用户完整的超级用户权限。

3、将用户添加到”sudo”用户组

1
usermod -aG sudo pkumar

这个命令将用户”pkumar”添加到”sudo”用户组中。这样,用户”pkumar”就具有了执行管理员(sudo)命令的权限。把”pkumar”替换成自己的用户名。

4、之后就可以使用

1
sudo -i

来获取root权限了。

  • 更新软件包和安装常用软件
1
apt update -y  && apt upgrade -y && apt install -y curl wget sudo socat nano

安装maccms

安装docker和docker-compose

1
2
3
4
5
curl -fsSL https://get.docker.com | sh

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

创建docker-compose文件

1
2
3
4
5
6
7
8
9
cd root

mkdir data/docker_data/maccms

cd data/docker_data/maccms

touch docker-compose.yml

nano docker-compose.yml

粘贴如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '3.3'
services:
maccms:
image: esme518/docker-maccms10
container_name: maccms
restart: always
volumes:
- ./data:/var/www/html
ports:
- 8080:80
maccms-db:
image: mariadb:10.3
container_name: maccms-db
restart: always
volumes:
- ./mysql:/var/lib/mysql
environment:
- MARIADB_ROOT_PASSWORD=fgdfcgdffgh55

项目来源:https://github.com/esme518/docker-maccms10

启动容器

1
2
3
cd data/docker_data/maccms

docker-compose up -d

启动成功后,浏览器输入ip:800端口就进入了系统安装界面

  1. 服务器地址:maccms-db
  2. 数据库端口:3306
  3. 数据库名称:maccms-db
  4. 数据库账号:root
  5. 数据库密码:在docker-cmopose.yml设置的MYSQL_ROOT_PASSWORD的密码

其他默认,点击测试连接数据库,连接成功,下一步

按照提示下一步安装即可,中间会提示创建网站后台的用户名和密码

浏览器输入http://ip:8080/cmsadmin.php

输入用户名和密码就可以进入站点后台

下载maccms10源码并解压到data目录下

下载电影先生2.0源码并解压到maccms10的template目录下(/template/DYXS2),这样就完成模板安装(其他模板

下载萌芽采集插件把萌芽采集插件Pro v10.7.3中的mycj目录复制到maccms10对应的目录,这样就完成安装采集插件

举个例子:把萌芽采集插件的addons目录下的mycj复制到maccms10addons目录下

萌芽采集插件解压后的目录结构

1
2
3
4
5
/萌芽采集插件Pro v10.7.3
├── addons
│ └── mycj
└── static
└── myci

maccms10的目录结构:

1
2
3
4
5
6
7
8
9
10
maccms10
|-- addons
|-- application
|-- extend
|-- runtime
|-- static
|-- template
|-- thinkphp
|-- upload
└── vendor

最后再:

1
docker-compose restart

进入网站后台,添加电影先生2.0到快捷菜单

1
电影先生2.0,/cmsadmin.php/admin/Dyxs2/dyxs2set

清理缓存,访问前台,再点击电影先生2.0快捷菜单

容器的常用命令

  • 停止容器(需要在docker-compose.yml文件所在的目录执行)
1
docker-compose down
  • 重启容器(需要在docker-compose.yml文件所在的目录执行)
1
docker-compose restart
  • 启动容器(需要在docker-compose.yml文件所在的目录执行)
1
docker-compose up -d
  • 查看正在运行的 Docker 容器的 ID和名称
1
docker ps
  • 进入正在运行的容器
1
docker exec -it <container_name_or_id> /bin/bash
  • 停止容器
1
docker stop <container_name_or_id>
  • 删除所有停止的容器:
1
docker container prune -f
  • 删除所有未被使用的镜像:
1
docker image prune -a -f

资源采集

  • 找到要采集的资源后,先添加播放器

对于m3u8需要先添加播放器再采集资源,顺序不能反,顺序反了会导致打开影视没有播放器。保险起见,一律先添加播放器再采集资源。重要的事情说三遍:先添加播放器!先添加播放器!先添加播放器!

  • 安装并添加萌芽采集插件

应用,应用市场,启用萌芽pro插件;

首页,自定义菜单配置,添加如下代码,保存,清理缓存,刷新浏览器页面,最好新建浏览器页面重新进入网站后台

1
萌芽采集资源,mycj/union
  • 采集过程遇到的一些问题

无法采集

问题原因:字面意思,要么采集站没了无法访问,要么采集站把你的ip封了。

采集源站没了无解,只能换源。ip被封解决方法:联系源站把你的ip添加为白名单。

  • 其他常见问题解决办法

苹果cms采集提示:XML格式不正确,不支持采集

苹果cms采集提示:连接API接口失败,通常为服务器网络不稳定、IP被封、禁用相关函数!

  • 推荐采集资源站
  1. ikun资源
  2. 黑木耳资源

使用crontab定时采集和备份数据

定时采集

  • debian安装cron
1
apt install cron
  • 创建文件/root/maccms_cj.sh,粘贴以下代码
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
#!/bin/bash

# 日志文件路径
LOGFILE="/root/maccms_cj.log"
# 最大日志大小(5MB)
MAX_LOGSIZE=$((5 * 1024 * 1024))

# 请求 URL 列表
URLS=(
"https://yilantv.top/api.php/timming/index.html?enforce=1&name=hongniuzyzanzhu01"
"https://yilantv.top/api.php/timming/index.html?enforce=1&name=wujinzyzanzhu02"
"https://yilantv.top/api.php/timming/index.html?enforce=1&name=ziyuankuzanzhu04"
"https://yilantv.top/api.php/timming/index.html?enforce=1&name=subozyzanzhu06"
)

# 发送请求函数
send_request() {
local url=$1
local name=$2
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")

local status=$(curl -k -s -o /dev/null -w "%{http_code}" "$url")

if [[ $status -ge 200 && $status -lt 300 ]]; then
echo "$timestamp - $name 请求成功, 状态码: $status" >> $LOGFILE
else
echo "$timestamp - $name 请求失败, 状态码: $status" >> $LOGFILE
fi
}

# 遍历 URL 并发送请求
for i in "${!URLS[@]}"; do
name=$(echo "请求 $((i+1))")
send_request "${URLS[$i]}" "$name"
sleep 20
done

# 检查日志文件大小
logsize=$(stat -c%s "$LOGFILE")
if (( logsize >= MAX_LOGSIZE )); then
> $LOGFILE
echo "$(date +"%Y-%m-%d %H:%M:%S"): 日志文件已清空" >> $LOGFILE
fi

采集几个原站就按照上面的规则添加几条,上面的采集了4个源站。

https://yilantv.top/api.php/timming/index.html?enforce=1&name=hongniuzyzanzhu01此部分的地址根据如下步骤获取

  1. 采集、自定义接口、右键采集当天、复制链接地址

  2. 系统、定时任务配置、添加定时任务配置,把上面复制的地址粘贴到附加参数后的输入框

  3. 定时任务配置页面,右键测试、复制链接地址

  • 添加任务
1
crontab -e

输入以下(如果是nano打开直接粘贴,如果是vi或者vim打开则输入i进入编辑模式再粘贴以下代码)

1
0 * * * * /root/maccms_cj.sh >> /root/maccms_cj.log 2>&1
  • 查看当前crontab任务
1
crontab -l
  • 删除当前crontab任务
1
crontab -r
  • 日志示例
1
2
3
4
5
2024-12-11 10:00:01 - 请求 1 请求成功, 状态码: 200
2024-12-11 10:00:21 - 请求 2 请求成功, 状态码: 200
2024-12-11 10:00:41 - 请求 3 请求失败, 状态码: 500
2024-12-11 10:01:01 - 请求 4 请求成功, 状态码: 200
2024-12-11 10:01:02: 日志文件已清空

定时备份

  • 备份脚本
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash

# 日志文件定义
LOG_FILE="/root/data/shell_script/macms_back.log"

# 重定向标准输出和错误输出到日志文件
exec >>"${LOG_FILE}" 2>&1

# 打印时间戳以标记任务开始
echo "==================== $(date +"%Y-%m-%d %H:%M:%S") ===================="

# 定义相关目录和文件名格式
SOURCE_DIR="/root/data/docker_data/maccms"
BACKUP_DIR="/mnt/alist/夸克网盘/我的备份/云服务/n3540"
DATE=$(date +"%Y-%m-%d")
ZIP_FILE="/tmp/${DATE}_macms.zip"

# 检查源目录是否存在
if [ ! -d "${SOURCE_DIR}" ]; then
echo "Error: Source directory ${SOURCE_DIR} does not exist. Exiting."
exit 1
fi

# 检查备份目录是否可写
if [ ! -d "${BACKUP_DIR}" ] || [ ! -w "${BACKUP_DIR}" ]; then
echo "Error: Backup directory ${BACKUP_DIR} is not writable or does not exist. Exiting."
exit 1
fi

# 检查是否存在同名文件并处理
if [ -f "${BACKUP_DIR}/$(basename ${ZIP_FILE})" ]; then
echo "Warning: A backup file with the same name already exists in ${BACKUP_DIR}. Renaming the new backup."
ZIP_FILE="/tmp/${DATE}_macms_$(date +"%H%M%S").zip"
echo "New backup file name: ${ZIP_FILE}"
fi

# 压缩文件
echo "Compressing ${SOURCE_DIR} to ${ZIP_FILE}..."
zip -r "${ZIP_FILE}" "${SOURCE_DIR}" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo "Error: Compression failed. Exiting."
exit 1
fi
echo "Compression completed: ${ZIP_FILE}"

# 移动到目标备份目录
echo "Moving ${ZIP_FILE} to ${BACKUP_DIR}..."
mv "${ZIP_FILE}" "${BACKUP_DIR}"
if [ $? -ne 0 ]; then
echo "Error: Failed to move file to ${BACKUP_DIR}. Exiting."
exit 1
fi
echo "File moved successfully."

# 维护备份文件数量(最多保留3份)
echo "Maintaining backup files in ${BACKUP_DIR}..."
cd "${BACKUP_DIR}" || exit
BACKUP_COUNT=$(ls -1 *_macms.zip 2>/dev/null | wc -l)

if [ "${BACKUP_COUNT}" -gt 3 ]; then
echo "Deleting old backup files..."
ls -1t *_macms.zip | tail -n +4 | xargs rm -f
if [ $? -eq 0 ]; then
echo "Old backups deleted successfully."
else
echo "Error: Failed to delete old backups."
fi
else
echo "No old backups to delete. Current count: ${BACKUP_COUNT}"
fi

# 记录任务完成时间
echo "Backup completed successfully at $(date +"%Y-%m-%d %H:%M:%S")."

使用crontab添加任务

一些问题

不小心把管理员用户禁用,如何恢复启用管理员用户

进入容器

1
docker exec -it maccms-db /bin/bash

连接数据库

1
mysql -u root -p

输入数据库密码

选择数据库

1
USE maccms-db;

修改启用状态为1

1
UPDATE mac_admin SET admin_status=1 WHERE admin_name='admin';

admin换成实际用户名

苹果cms影片集数不更新解决方法

Reference

  1. 安装海螺模板 显示缺少控制器 怎么解决
  2. 苹果CMS使用docker搭建方法,5分钟搭建一个影视网站.
  3. 苹果cms定时任务 Crontab设置苹果cms自动更新脚本
  4. Linux crontab 命令
  5. debian安装crontab
  6. Debian 11使用crontab创建定时任务)

  7. 苹果cmsv10萌芽采集插件安装教程

  8. 苹果cms采集提示:XML格式不正确,不支持采集
  9. 苹果cms采集提示:连接API接口失败,通常为服务器网络不稳定、IP被封、禁用相关函数!