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 协议正常访问啦✌。

相关推荐
AI小云2 小时前
【Numpy数据运算】数组间运算
开发语言·python·numpy
feifeigo1232 小时前
基于DTW和HMM的语音识别仿真
人工智能·语音识别
永霖光电_UVLED2 小时前
GlobalFoundries从台积电获得GaN技术许可
人工智能·神经网络·生成对抗网络
是苏浙2 小时前
零基础入门C语言之C语言实现数据结构之单链表经典算法
c语言·开发语言·数据结构·算法
纵有疾風起2 小时前
C++—vector:vecor使用及模拟实现
开发语言·c++·经验分享·开源·stl·vector
AKAMAI2 小时前
Forrester调研400位高级决策者,揭示AI应用未来
人工智能·云计算
KKKlucifer2 小时前
数据智能时代的安全困局与 AI 破局逻辑
人工智能·安全
Dm_dotnet3 小时前
Microsoft Agent Framework/C#:了解Workflows的几种不同模式
人工智能
Macbethad3 小时前
基于世界模型的自动驾驶控制算法
人工智能·机器学习·自动驾驶