AI取名大师 | PM2 部署 Bun.js 应用及配置 Let‘s Encrypt 免费 HTTPS 证书

关于 AI 取名大师

借助豆包通义千问DeepSeek 等 AI 大模型,为您的宝宝、宠物、店铺、网名、笔名、项目、产品、服务、文章等取一个专业、有意义的名字😄。


开源地址:👉GitCode(国内友好)👈、👉GitHub👈

技术组合:Bun.jsElysia.jsuni-app


环境准备

这里使用的是阿里云的ECS,操作系统为Ubuntu 24.04.1 LTS

安装Bun.js

Bun.js 的安装非常简单,直接执行以下命令即可。

shell 复制代码
curl -fsSL https://bun.sh/install | bash

如果已经安装过,可以通过bun upgrade进行升级,截至 2025年11月,最新版本为1.3.2

shell 复制代码
root@app:~# bun -v
1.3.2

安装PM2

如果还没安装 pm2,可以使用 npm i -g pm2 --registry=https://registry.npmmirror.com/ 安装最新版本

应用部署

打包

  1. 进入项目根目录
  2. 执行bun i(仅第一次需要)
  3. 执行bun serve:build,等待结果😄

初始化

创建config.json

config.json是应用的配置文件,可通过 bun ai-naming.js --init 自动创建,可根据实际情况修改配置项

配置大模型

应用使用的是openai SDK,接入大模型前需要配置如下项目:

json 复制代码
{
    "app": {
        "llmModelId": "模型ID",
        "llmBaseUrl": "模型服务地址",
        "llmApiKey": "模型服务KEY",
        "llmTemperature": 0.7,
        "llmMaxToken": 500,
    }
}

模块配置

程序会自动读取同目录下的module.yamlmodule-extend.yaml(如有)文件作为模块数据,示例如下:

yaml 复制代码
# id    - 编号
# name  - 显示的模块名称
# desc  - 模块描述信息,最好不要超过15个字
# price - 模块调用一次消耗的积分/能量,默认 1
# sort  - 模块排序值,越大越靠前,默认 0
# col   - GRID 布局时占据的列数,默认 1
# limit - 模块调用一次生成的名字个数,默认 1
# params- 表单参数
# message 大模型 system 角色提示词
# prompt- 提示词模板
- id: baobao
  name: 宝宝
  desc: 给新生儿攒个响亮代号
  col: 2
  price: 1
  sort: 0
  limit: 2
  params:
    - label: 姓氏
      required: true
...

按需填写相应的参数即可。

启动🛫

此时,目录的结构如下:

shell 复制代码
naming
|- ai-naming.js				#应用主程序
|- config.json 				#配置文件
|- module-extend.yaml		#模块扩展
|- module.yaml				#模块配置文件
|- naming.db				#SQLite 数据文件

万事俱备,我们就可以通过 pm2 启动应用啦。

shell 复制代码
# 使用 bun 启动名为 naming 的应用
pm2 start ai-naming.js --interpreter bun --name naming --cwd /app/naming
# 停止
pm2 stop naming
# 下次可以直接通过名称来启动
pm2 start naming

验证是否运行:

shell 复制代码
curl http://localhost:10002/common/time
# 如果返回当前时间则运行成功🎉

进阶

经过上述操作,我们的应用可以正常被访问。接下来,我们希望对应用进行安全加固(配套 HTTPS),并支持域名访问(不需要用户记一串 IP 地址😄)。

二级域名

  1. 注册自己的顶级域名
  2. 分配二级域名,例如 https://naming.xxx.com映射到 IP 地址(通常几秒钟就能生效👍)
  3. 配置nginx,将上述二级域名的流量转发到我们的应用
shell 复制代码
server {
	listen 443;
	server_name naming.0604hx.top;

	include /etc/nginx/conf.d/block.conf;
	location / {
		proxy_pass http://localhost:10003;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Forwarded-Proto $scheme;
	}
}

server {
	if ($host = naming.0604hx.top) {
		return 301 https://$host$request_uri;
	}

	listen 80;
	server_name naming.0604hx.top;
	return 404;
}

修改完 nginx 的配置文件后,需要检验下是否有误。

shell 复制代码
root@app:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

配置HTTPS证书

shell 复制代码
# 重启 nginx
systemctl restart nginx

# 更新证书
certbot certonly --nginx

自此,我们的应用就能通过 HTTPS 协议正常访问啦✌。

相关推荐
EkihzniY6 小时前
AI+OCR:解锁数字化新视界
人工智能·ocr
岁忧6 小时前
GoLang五种字符串拼接方式详解
开发语言·爬虫·golang
tyatyatya6 小时前
MATLAB基础数据类型教程:数值型/字符型/逻辑型/结构体/元胞数组全解析
开发语言·matlab
东哥说-MES|从入门到精通6 小时前
GenAI-生成式人工智能在工业制造中的应用
大数据·人工智能·智能制造·数字化·数字化转型·mes
心无旁骛~7 小时前
python多进程和多线程问题
开发语言·python
铅笔侠_小龙虾7 小时前
深度学习理论推导--梯度下降法
人工智能·深度学习
星云数灵7 小时前
使用Anaconda管理Python环境:安装与验证Pandas、NumPy、Matplotlib
开发语言·python·数据分析·pandas·教程·环境配置·anaconda
kaikaile19957 小时前
基于遗传算法的车辆路径问题(VRP)解决方案MATLAB实现
开发语言·人工智能·matlab
lpfasd1237 小时前
第1章_LangGraph的背景与设计哲学
人工智能
四问四不知7 小时前
Rust语言进阶(结构体)
开发语言·后端·rust