这里需要说明内部的环境需要区分:
开发测试环境(Development), 这里一般采用 Docker/虚拟机开发.
正式部署环境(Production), 这里习惯性由 Tomcat 托管 War 包或者直接 Jar 写入系统服务.
而且一般部署都是基于 Linux 环境, 所以基本上对于正式部署来说只需要处理 Linux 平台.
这里的采用平台是Debian系统, 剩下发行版大同小异; 且这里采用系统源安装, Java 版本采用系统默认版本来处理, 可以自己手动调整源安装
Java1.8.
对于正式服务器, 只需要安装 java 命令就行, 常规的直接命令挂起:
12# 最好不要安装 JDK, package.jar 是自己打的 Jar 包java -jar package.jar # 直接前台运行, 如果想正规启用需要编写成系统应用, 这里仅仅是作为测试不做展开.
Linux测试搭建
安装 Java/Jdk:
12345apt install -y default-jre # 安装默认Java运行时java -version # 安装成功之后就会显示 openjdk 输出 ...
现在因为某个原因, 导致本地 DNS 对网络影响特别严重, 所以建议本地如果有能力可以自己搭建 DNS 服务器来进行部署.
默认的 Ubuntu 之中会默认开启 systemd-resolved.service 监听 53 端口来做本地域名解析, 所以需要将他关闭:
1234567# 编辑默认服务文件sudo vim /etc/systemd/resolved.conf # 找到如下配置修改如下:# DNSStubListener=no# 之后重启下服务即可sudo systemctl restart systemd-resolved.service
之后直接采用 SmartDns 的服务进行管理:
12345# 直接系统服务安装sudo apt install smartdns -y # 安装之后就是编辑下配置文件sudo vim /etc/smartdns/smartdns.conf
需要配置文件如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495 ...
Nginx 支持IP端访问禁用启用访问, 直接在配置项目定义即可, 默认定义禁用IP名单:
12345# 创建禁用IP目录sudo mkdir /etc/nginx/block.d# 创建通用的IP禁用项目sudo vim /etc/nginx/block.d/normal.conf
常规文件格式:
12345678# 优先识别禁用不允许访问的IPdeny 68.183.69.58;# 禁用访问子网段: 68.183.69.0~68.183.69.255 的IPdeny 68.183.69.0/24;# 默认允许全部IP访问allow all;
这里推荐常规通用禁用IP的名单: blacklist
通用直接采用脚本处理下配置:
12345678# 调出所有IP访问附加上禁用IP数据curl https://sblam.com/blacklist.txt | sed -e '/^#/d' | awk '{print "deny "$0";"}' > /tmp/block.txt ...
这里采用 Debian11 版本, 建议跟随最新版本来配置防止系统库不兼容
SteamCMD官方文档
SteamCMD安装
默认 Linux 发行版都没有配置32位系统库和非开源软件源, 有的 Steam 系统库依赖32位系统库和非开源软件源, 输入以下命令追加:
1234sudo dpkg --add-architecture i386 # 配置 32 位库sudo apt install -y software-properties-common # 启用非开源软件配置sudo add-apt-repository non-free # 配置启用非开源库sudo apt update -y # 更新软件
在配置好非开源的软件源之后就可以直接通过系统命令安装 Steam 命令行:
12# 安装steamcmd, 确认同意非开源协议即可( I Agree )sudo apt install -y steamcmd libsdl2-dev:i386
配置管理权限
这里需要配置专门管理 Steam 服务器的系统账号; 除非很有经验, 否则最好不要默认采用 root 账号管理配置服务, ...
这种方式实际上是特别有用且被人忽略的配置, 能够有效节约某些负载情况.
比如以下情况:
如果服务器宕机返回 404 错误但是要求返回 JSON 根据 POST 请求返回 JSON.
需要设置在某个页面只需要设置固定文本展示在页面
设置域名之下的展示 PUBLIC_KEY 来展示公钥数据提供准备解密文本
这种方法适合常规的固定字符串数据展示, 但是需要注意必须要在 http-server-location 块之中.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748# 必须在 http 块中配置http { ...... # 声明默认的 UTF-8 编码 charset utf-8; # 一般其他配置文件都是防止于 `/etc/nginx/conf.d/xxx.conf` # 这里当作其他配置选项设置 server{ listen 80; # 这里可以直接配置访问 ...
确保域名已经指向服务器IP, 如果采用 CloudFlare 等 CDN 隐藏真实IP地址需要先关闭.
初始化安装
这里用 root 权限来挂起这些服务, 主要是方便直接一键处理, 具体正式环境的实际最好创建低权限账号来调用.
首先是官方脚本安装, 输入以下命令行:
12sudo apt install -y socat curl # 安装网络请求软件sudo curl https://get.acme.sh | sh # 下载并安装 acme 脚本
sudo 代表使用最高权限安装, 会在生成的应用配置软件会在其家目录之中, 这也就是提到的可能涉及安全的点.
所有操作步骤没报错的时候, 就可以进行下一步配置命令:
12acme.sh --set-default-ca --server letsencrypt # 切换证书源为 letsencrypt 而非 zerossl( zerossl需要邮箱认证 )acme.sh --upgrade --auto-upgrade # 设置自动升级更新
这一步还是比较重要的, 新版本的 acme 里面默认配置 ZeroSSL 服务器作为证书服务器 ...
按照第三方原理来说, https 访问实际上通过第三方证书机构来认证访问过程, 个人可以自己扮演这个第三方证书机构来颁发证书, 同时只需要客户端信任自己颁发的证书就能直接进行 https 访问.
证书生成
这里首先需要在 Linux 上创建自己的 openssl 证书:
1234# 创建证书和私钥sudo openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \-keyout /data/ssl/private.meteorcat.com.key \-out /data/ssl/private.meteorcat.com.crt
这里具体参数:
req: 生成证书指令,
-x509: 默认创建生成 X.509 证书.
-nodes: 不采用短密码对证书进行进一步加密.
-days 3650: 证书有效时间(单位: 天), 自己按照习惯常用调整时间.
-newkey rsa:4096: 证书加密密钥和加密方式, 这里按照采用4096位RSA密钥.
-keyout: 生成的私钥文件路径
-out: 生成的证书路 ...
Nginx 现在的代理转发功能已经日趋完善, 可以用来进行大规范的数据负载转发, 比较知名的方案就是 Nginx-Tomcat/Nginx-Jar
的转发负载架构.
常见的 Java 高并发负载也是通过 Nginx 挂起代理转发到不同 Jar 服务进行处理.
Nginx 有两种转发方式:
HTTP转发: 只针对 HTTP 数据转发, 可以通过设置代理头转发源客户端数据.
Stream转发: 针对 TCP/UDP 的数据流转发, 目前转发的时候无法识别源IP.
如果仅仅作为流量不需要做任何日志和IP判断可以采用 Stream 转发, 剩下只要不涉及这种情况完全不推荐( 应该采用专门的
HAProxy 转发数据 )
Stream转发
这里说明 Stream 转发两种方式: TCP/UDP:
12345678910111213141516171819# 注意 Stream 转发不会涉及 HTTP 模块, 所以不需要在 HTTP 之中编写http{ .......} # 这里直接和 http 模块一样, 创建出新的模块stream { ...
常用于中小企业内部网络开发, 如外网服务器负责网络转发到内部公司网络服务器, 将数据功能转发到内网服务器当中,
将数据在广域网缩小成局域网处理.
这里采用 tinc 来搭建内网局域网, 首先这里假设外网服务器 111.111.111.111 来做外网路由, 也就是外网服务器.
注意这里最好对外公网暴露好端口号作为路由接入端口, 建议加入以 7000 做网段, 预留好端口 7000 来做其他内网服务器接入口,
而 7001-7999 则是需要暴露转发的服务.
同时这里注意开启内核转发:
1234567891011# 查看 ip_forward 转发是否开启sysctl -a|grep ip_forward # 首次开启sudo echo 1 > /proc/sys/net/ipv4/ip_forward# 启用 tun 设备sudo modprobe tun# 确认是否启用成功ls /dev/net/tun
这里 Ubuntu 环境来做发行版环境, 首先可以安装 tinc :
1sudo apt install tinc # 安装 tinc, 主网服务器和子网服务器都要
这里可以查 ...
这里采用 Ubuntu 的 apt 源安装方式, 所以直接采用最简单部署即可.
直接最快安装:
12# 安装 samba 服务sudo apt install samba
常规来说内网 samba 服务都是基于局域网, 所以内网的话只需要进行公网直接开放即可.
这里还需要准备个系统账号(smb)负责进行服务管理:
123456# 创建不允许登录的账户sudo useradd smb -s /sbin/nologin# 设置 smb 管理账户密码进行最高管理# 实际上内网全部人都有可以读写删除等, 没什么其他意义sudo smbpasswd -a smb
账号信息配置之后就是设置硬盘空间来放置文件, 这里本人服务器挂载了 /storage 新硬盘, 所以文件都是放置于此:
123sudo mkdir /storage/smb # 创建目录放置sudo chown -R smb:smb /storage/smb # 目录权限sudo chmod -R 777 /storage/smb # 读写权限
配置修改
最后就是完成配置修改: /etc/samba/smb.conf
123456789 ...






