本页内容
- 先决条件
- 开始之前
- 安装 Node.js
- 安装 Sails.js
- 创建一个 Sails.js 应用
- 为 Sails.js 创建 Systemd 服务文件
- 将 Apache 配置为 Sails.js 的反向代理
- 访问 Sails.js Web 界面
- 结语
Sails 是一个用于构建可投产的企业级 Node.js 应用的实时 MVC 框架。它能帮助你快速创建网站原型,是一款出色的工具。它构建于 Node JS 和 Express JS 之上,因此所有适用于 NodeJS 和 Express 的特性都能在 Sails JS 中使用。它支持可扩展的 WebSockets、面向服务的架构,以及在同一项目中接入多种数据存储,并提供基础的安全性与基于角色的访问控制。
本文将向你展示如何在 Ubuntu 22.04 上安装 Sails.js,并使用 Apache 作为反向代理。
先决条件
- 一台运行 Ubuntu 22.04 的服务器。
- 服务器上已配置 root 密码。
开始之前
在开始之前,建议先将软件包更新到最新版本。你可以运行以下命令来更新所有软件包:
apt update -y
apt upgrade -y
所有软件包更新完成后,使用以下命令安装其他所需的依赖项:
apt-get install curl wget gnupg2 -y
完成后,即可进入下一步。
安装 Node.js
接下来,你需要安装 Node.js 和 NPM 来创建 Sails.js 应用。首先,使用以下命令添加 Node.js 仓库:
curl -sL https://deb.nodesource.com/setup_16.x | bash -
仓库添加完成后,使用以下命令安装 Node.js 软件包:
apt-get install nodejs -y
安装完成后,可以使用以下命令验证 Node.js 版本:
node --version
你将看到类似以下的 Node.js 版本输出:
v16.17.1
安装 Sails.js
接下来,你需要在服务器上安装 Sails.js。你可以通过 Node 包管理器(NPM)来安装 Sails。
npm -g install sails
Sails 安装完成后,可以使用以下命令进行验证:
sails --version
你将看到类似以下的 Sails 版本输出:
1.5.3
创建一个 Sails.js 应用
安装好 Sails 之后,让我们使用以下命令创建一个简单的 Sails 应用:
sails new sails-app
你应该会看到类似以下的输出:
Choose a template for your new Sails app: 1. Web App · Extensible project with auth, login, & password recovery 2. Empty · An empty Sails app, yours to configure (type "?" for help, or <CTRL+C> to cancel) ? 2 info: Installing dependencies... Press CTRL+C to cancel. (to skip this step in the future, use --fast) info: Created a new Sails app `sails-app`!
你可以使用以下命令查看 Sails 创建的所有文件:
ls sails-app
你应该会看到类似以下的输出:
api app.js assets config Gruntfile.js node_modules package.json package-lock.json README.md tasks views
接下来,切换到你的 Sails 应用目录,并使用以下命令启动该应用:
cd sails-app
sails lift
您应该会看到如下输出:
info: Starting app... info: info: .-..-. info: info: Sails <| .-..-. info: v1.5.3 |\ info: /|.\ info: / || \ info: ,' |' \ info: .-'.-==|/_--' info: `--'-------' info: __---___--___---___--___---___--___ info: ____---___--___---___--___---___--___-__ info: info: Server lifted in `/root/sails-app` info: To shut down Sails, press + C at any time. info: Read more at https://sailsjs.com/support. debug: ------------------------------------------------------- debug: :: Sun Sep 25 2022 05:43:59 GMT+0000 (Coordinated Universal Time) debug: Environment : development debug: Port : 1337 debug: -------------------------------------------------------
按下 CTRL+C 停止应用。接下来我们将创建一个 systemd 服务文件来启动并管理 Sails 应用。
为 Sails.js 创建 Systemd 服务文件
接下来,你需要创建一个 systemd 服务文件来管理 Sails.js 应用。可以使用以下命令创建该文件:
nano /etc/systemd/system/sails-app.service
添加以下内容:
[Unit] After=network.target [Service] Type=simple User=root WorkingDirectory=/root/sails-app ExecStart=/usr/bin/sails lift Restart=on-failure [Install] WantedBy=multi-user.target
保存并关闭文件,然后重新加载 systemd 守护进程以使更改生效:
systemctl daemon-reload
接下来,启动 Sails.js 服务并设置为开机自启:
systemctl start sails-app
systemctl enable sails-app
现在可以使用以下命令检查 Sails 应用的状态:
systemctl status sails-app
你应该会看到类似以下的输出:
? sails-app.service
Loaded: loaded (/etc/systemd/system/sails-app.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2022-09-25 05:44:42 UTC; 6s ago
Main PID: 2896 (node)
Tasks: 22 (limit: 4579)
Memory: 159.2M
CPU: 3.676s
CGroup: /system.slice/sails-app.service
??2896 node /usr/bin/sails lift
??2903 grunt "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">
Sep 25 05:44:44 ubuntu2204 sails[2896]: info: ____---___--___---___--___---___--___-__
Sep 25 05:44:44 ubuntu2204 sails[2896]: info:
Sep 25 05:44:44 ubuntu2204 sails[2896]: info: Server lifted in `/root/sails-app`
Sep 25 05:44:44 ubuntu2204 sails[2896]: info: To shut down Sails, press
+ C at any time.
Sep 25 05:44:44 ubuntu2204 sails[2896]: info: Read more at https://sailsjs.com/support.
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: -------------------------------------------------------
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: :: Sun Sep 25 2022 05:44:44 GMT+0000 (Coordinated Universal Time)
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: Environment : development
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: Port : 1337
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: -------------------------------------------------------
此时,Sails 应用已启动并监听 1337 端口。你可以进入下一步。
将 Apache 配置为 Sails.js 的反向代理
将 Apache 配置为反向代理来访问 Sails 应用是一个不错的做法。首先,使用以下命令安装 Apache 服务器:
apt install apache2 -y
Apache 软件包安装完成后,使用以下命令创建一个 Apache 虚拟主机配置文件:
nano /etc/apache2/sites-available/sails.conf
添加以下内容:
<VirtualHost *:80>
ServerName sailsapp.example.com
ServerAdmin
[email protected]
DocumentRoot /root/sails-app
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<LocationMatch "^/(?!js|css|media)" >
ProxyPass http://127.0.0.1:1337
ProxyPassReverse http://127.0.0.1:1337
</LocationMatch>
<Location "/dist/">
ProxyPass !
</Location>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:1337/$1 [P,L]
</VirtualHost>
保存并关闭文件,然后使用以下命令启用 Sails 虚拟主机:
a2ensite sails.conf
接下来,使用以下命令启用其他 Apache 模块:
a2enmod headers proxy_http xml2enc proxy ssl proxy_wstunnel rewrite proxy_ajp deflate proxy_balancer proxy_connect proxy_html
接下来,重启 Apache 服务以使更改生效:
systemctl restart apache2
现在可以使用以下命令验证 Apache 服务状态:
systemctl status apache2
你应该会看到类似以下的输出:
? apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-09-25 05:46:54 UTC; 2s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 3986 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 3990 (apache2)
Tasks: 55 (limit: 4579)
Memory: 6.8M
CPU: 90ms
CGroup: /system.slice/apache2.service
??3990 /usr/sbin/apache2 -k start
??3991 /usr/sbin/apache2 -k start
??3992 /usr/sbin/apache2 -k start
Sep 25 05:46:54 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...
至此,Apache Web 服务器已安装并配置为 Sails.js 应用的反向代理。你可以进入下一步。
访问 Sails.js Web 界面
现在你可以打开 Web 浏览器,通过 URL http://sailsapp.example.com 访问 Sails.js 的 Web 界面。你将在以下屏幕上看到 Sails.js 的 Web UI:

结语
恭喜!你已成功在 Ubuntu 22.04 上安装 Sails.js,并将 Apache 配置为反向代理。现在你可以使用 Sails.js 框架来托管可扩展、可用于生产环境的 Web 应用了。如果你有任何疑问,欢迎随时向我提问。