如何在 Ubuntu 22.04 上为生产环境设置和安装 Strapi如何在 Ubuntu 22.04 上为生产环境设置和安装 Strapi如何在 Ubuntu 22.04 上为生产环境设置和安装 Strapi如何在 Ubuntu 22.04 上为生产环境设置和安装 Strapi
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 22.04 上为生产环境设置和安装 Strapi

介绍

Strapi 是一个开源的无头内容管理系统 (CMS),使用 JavaScript 编程语言构建。与其他无头 CMS 一样,Strapi 没有开箱即用的前端。相反,它依赖于允许您构建内容结构的 API。此外,Strapi 提供了多种方式来构建您的网站,并与 React 和 Next.js 等流行框架集成。此外,您可以选择如何使用 REST API 或 GraphQL 使用 API。

在本教程中,您将安装 Strapi 并设置生产环境以开始创建内容。当 Strapi 在其开发模式下运行 SQLite 时,您将配置它以使用 PostgreSQL。您还将在 Nginx 反向代理后面为您的 Strapi 应用程序提供服务,并使用 PM2 进程管理器来确保稳定的正常运行时间。最后,您将使用 Let's Encrypt 保护您的 Nginx 连接。

先决条件

要学习本教程,您需要:

  • 按照我们的初始服务器设置指南设置的 Ubuntu 22.04 服务器
    • Strapi 推荐至少配备 2 个 CPU 内核和 4GB RAM 的服务器。本教程假设您的服务器符合推荐的硬件规格。

    • 确保通过 PPA 选项将版本 18.xx 替换为 16.xx。在撰写本文时,Strapi 可能无法与超过 16 的 Node 版本一起正常工作。具体来说,本教程中使用的是 Node v16.18.1。

    • 配置代理服务器地址时,使用http://localhost:1337作为app_server_address。

    在您的服务器上安装 Node.js 版本 16、Nginx 和 Postgres 后,您就可以继续学习本教程了。

    第 1 步 — 设置你的 Postgres 数据库

    任何 Strapi 项目都需要一个数据库。目前,它支持 MySQL、MariaDB、SQlite 和 PostgreSQL。您可以在其官方文档中查看最低版本要求。此外,Strapi 需要一个新的数据库。这意味着您不能使用现有数据库链接到您的 Strapi 实例。

    首先,创建一个数据库:

    1. sudo -i -u postgres createdb strapi-db

    然后为您的数据库创建一个用户:

    1. sudo -i -u postgres createuser --interactive
    Output
    Enter name of role to add: sammy Shall the new role be a superuser? (y/n) y

    默认情况下,在 PostgreSQL 中,您使用Identification Protocol 或ident 身份验证方法作为数据库用户进行身份验证。这涉及 PostgreSQL 获取客户端的 Ubuntu 用户名并将其用作数据库用户名。在许多情况下,这可以提供更高的安全性,但是当您希望外部程序(例如 Strapi)连接到您的数据库之一时,它也会导致问题。要解决此问题,请为此 PostgreSQL 角色设置密码以允许 Strapi 连接到您的数据库。

    在您的终端中,打开 PostgreSQL 提示符:

    1. sudo -u postgres psql

    在 PostgreSQL 提示符下,更新用户配置文件以使用您选择的强密码:

    1. ALTER USER sammy PASSWORD 'postgres_password';

    通过在终端中输入 \q 退出您的 PostgreSQL 用户:

    1. \q

    创建数据库和用户凭据后,您就可以安装 Strapi 了。

    第 2 步 — 在您的服务器上安装 Strapi

    要在您的服务器上安装 Strapi,请输入以下命令:

    1. npx create-strapi-app@latest my-project

    使用 y 确认以继续安装。

    确认是后,您将访问交互式安装。选择以下选项,同时确保您的 Database name、Username 和 Password 已适当更改:

    Output
    ? Choose your installation type Custom (manual settings) ? Choose your preferred language JavaScript ? Choose your default database client postgres ? Database name: strapi-db ? Host: 127.0.0.1 ? Port: 5432 ? Username: sammy ? Password: postgres_password ? Enable SSL connection: No

    未启用 SSL 连接,因为它将在本教程后面的部分使用 Let's Encrypt 证书进行配置和获取。在您做出选择后,Strapi 将开始安装。

    安装完成后,您就可以构建 Strapi 项目了。

    首先,确保您位于 my-project 目录中:

    1. cd my-project

    接下来,运行以下命令:

    1. NODE_ENV=production npm run build
    Output
    > my-project@0.1.0 build > strapi build Building your admin UI with production configuration... ✔ Webpack Compiled successfully in 35.44s Admin UI built successfully

    此命令将构建您的 Strapi 项目,包括 Strapi 管理 UI。

    您现在可以测试您的 Strapi 服务器。运行以下命令直接启动 Strapi 服务器:

    1. node /home/sammy/my-project/node_modules/.bin/strapi start
    Output
    [2022-11-21 13:54:24.671] info: The Users & Permissions plugin automatically generated a jwt secret and stored it in .env under the name JWT_SECRET. Project information ┌────────────────────┬──────────────────────────────────────────────────┐ │ Time │ Mon Nov 21 2022 13:54:24 GMT+0000 (Coordinated … │ │ Launched in │ 1603 ms │ │ Environment │ development │ │ Process PID │ 4743 │ │ Version │ 4.5.4 (node v16.18.1) │ │ Edition │ Community │ └────────────────────┴──────────────────────────────────────────────────┘ Actions available One more thing... Create your first administrator ? by going to the administration panel at: ┌─────────────────────────────┐ │ http://localhost:1337/admin │ └─────────────────────────────┘

    如果您遵循先决条件,则将 Nginx 设置为 Strapi 默认地址 http://localhost:1337 的反向代理。在浏览器中导航到 http://your_domain 以查看默认的 Strapi 登录页面:

    这个默认配置的命令目前使用的是 Strapi 的开发模式。它还依赖于与终端中的命令相关联的进程,不适合生产。在下一步中,您将向名为 PM2 的流程管理器添加生产设置。

    按 CTRL+c 退出您的服务器。

    安装 Strapi 后,您就可以设置 PM2 以将您的服务器作为服务在后台运行。

    第 3 步 — 安装和配置 PM2

    您可以依赖我们的指南,而不是手动启动服务器。 PM2 有助于保持您的服务器正常运行,而无需手动启动它,确保正常运行时间。

    首先,确保你在顶级目录中:

    1. cd ~

    接下来,使用以下命令安装 PM2:

    1. sudo npm install pm2@latest -g

    然后,使用您喜欢的文本编辑器为 PM2 创建一个配置文件。 nano 在这个例子中使用:

    1. sudo nano ecosystem.config.js

    将以下内容添加到此文件,同时确保更改项目目录名称和路径,以及您的数据库名称、用户和密码:

    module.exports = {
      apps: [
        {
          name: 'strapi',
          cwd: '/home/sammy/my-project',
          script: 'npm',
          args: 'start',
          env: {
            NODE_ENV: 'production',
            DATABASE_HOST: 'localhost',
            DATABASE_PORT: '5432',
            DATABASE_NAME: 'strapi-db',
            DATABASE_USERNAME: 'sammy',
            DATABASE_PASSWORD: 'postgres_password',
          },
        },
      ],
    };
    

    编辑 PM2 配置后,退出文件。如果您使用的是 nano,请按 CTRL+x,然后按 y,然后按 ENTER。

    使用以下命令在后台运行您的 Strapi 实例:

    1. pm2 start ecosystem.config.js
    Output
    [PM2][WARN] Applications strapi not running, starting... [PM2] App [strapi] launched (1 instances) ┌─────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├─────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 0 │ strapi │ default │ N/A │ fork │ 22608 │ 0s │ 0 │ online │ 0% │ 30.3mb │ sammy │ disabled │ └─────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

    如果应用程序崩溃或被终止,则在 PM2 下运行的应用程序会自动重启。您可以通过运行以下子命令在启动时启动 Strapi 实例:

    1. pm2 startup
    Output
    [PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy --hp /home/sammy

    这会生成并配置一个启动脚本,以在服务器启动时启动 PM2 及其托管进程。

    接下来,复制并执行输出中提供给您的命令,使用您的用户名代替 sammy:

    1. sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy --hp /home/sammy

    然后,保存PM2进程列表:

    1. pm2 save

    您现在已经在您的服务器上运行了 PM2 服务。如果您导航回 http://your_domain,请注意 Strapi 现在正在生产模式下运行:

    随着 PM2 在后台运行您的服务器,您可以完成保护您的 Strapi 实例。

    第 4 步 — 使用 Let's Encrypt 保护 Strapi

    当您导航到您的域以查看 Strapi 登录页面时,您可能已经注意到,用 http:// 而不是 https:// 表示的 URL 是不安全的连接。

    输入以下命令,使用 Let's Encrypt 保护您的 Strapi 实例:

    1. sudo snap install --classic certbot

    将 snap 安装目录中的 certbot 命令链接到您的路径,这样您就可以通过编写 certbot 来运行它:

    1. sudo ln -s /snap/bin/certbot /usr/bin/certbot

    接下来,允许 HTTPS 流量和 Nginx Full 配置文件:

    1. sudo ufw allow 'Nginx Full'

    删除多余的 Nginx HTTP 配置文件余量:

    1. sudo ufw delete allow 'Nginx HTTP'

    然后使用 Nginx 插件通过插入您的域地址来获取证书:

    1. sudo certbot --nginx -d your_domain -d www.your_domain

    运行命令时,系统会提示您输入电子邮件地址并同意服务条款。您也可以选择加入或退出电子邮件列表。这样做之后,您会收到一条消息,告诉您该过程已成功以及您的证书存储在哪里:

    Output
    . . . Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem This certificate expires on 2023-02-05. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for your_domain to /etc/nginx/sites-enabled/your_domain Successfully deployed certificate for www.your_domain /etc/nginx/sites-enabled/your_domain Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain . . .

    导航到 http://your_domain。您将自动重定向到您网站的 HTTPS 版本。还要注意,Strapi 正在生产模式下运行:

    您现在可以导航到 https://your_domain/admin 以创建您的 Strapi 管理员帐户:

    输入新凭据后,您可以进入管理仪表板:

    从仪表板,您可以开始在 Strapi 上创建内容。

    结论

    在本教程中,您将使用 PostgreSQL 数据库为 Strapi 设置生产环境。您还在 Nginx 反向代理后面提供了您的 Strapi 应用程序,并使用 PM2 进程管理器来保持您的服务器正常运行。

    设置 Strapi 服务器后,您可以使用 Strapi 管理仪表板开始创建内容。您可以从 Strapi 的官方文档中了解有关设置和配置 Strapi 应用程序的更多信息。

©2015-2025 艾丽卡 support@alaica.com