在Ubuntu上部署Strapi V4 22.04 VPS
#初学者 #strapi #node #ubuntu

介绍

如今,我对Strapi和Strapi设计系统一直很感兴趣。我也将我的物联网项目用作后端。 Strapi是一个开源node.js无头CMS,它具有很大的灵活性,可以为博客建立CMS,甚至Next JS的无头贸易。我认为有关在VPS上部署的文档对于初学者来说有点模糊。

so,

我将在4个部分中管理此写作:

  1. 创建VPS
  2. 在VPS上安装必需软件包。
  3. 为Strapi创建PostgreSQL用户和数据库。
  4. 克隆并构建项目。 (创建第一个管理用户)

1。创建VPS

根据Strapi Deployment Specs,硬件要求必须最小:

CPU:最小1个核心
内存:至少2GB
磁盘:最低8GB

如果提供了这些最低要求,任何类型的VPS提供商和计划将是完美的。


创建VPS之后,

  1. Login and set up root user access with SSH
  2. Create a new user
  3. Set Up a basic firewall

2。安装必需软件包

安装Node.js

首先,更新本地软件包。

$ sudo apt update

然后安装node.js

$ sudo apt install nodejs


验证版本

$ node -v

Note :根据Node的输出版本,如果您想安装特定版本,则可以按照以下步骤安装NVM;

## Run nvm installer
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

## Update profile
$ export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

## Reload shell config.
$ source ~/.bashrc  

之后;

$ nvm -v

然后您可以使用
安装节点的特定版本

$ nvm install 16 #Or Specific version

旁注:Strapi仅支持LTS版本(v16 -v18
推荐用于strapi v4.3.9及以上的节点v18.x

node v16.x建议用于strapi v4.0.xv4.3.8

也NPM v6及以上。


之后,您需要安装build-essentials软件包:

$ sudo apt install build-essentials

完成这些步骤后,我们将手动更改NPM的默认目录。我们将创建.npm-global目录并设置路径:

cd ~
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'

创建(或修改)~/.profile文件:

sudo nano ~/.profile

并添加此行:

export PATH=~/.npm-global/bin:$PATH

然后更新系统变量:

source ~/.profile

安装和配置git版本

我们可以检查Git是否已安装:

git --version

如果不是

$ sudo apt update

$ sudo apt install git

$ git --version

之后,我们可以设置Git

$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@domain.com"

显示配置:

$ git config --list

3。创建PostgreSQL用户和数据库

我们需要首先安装PostgreSQL:

$ sudo apt update
$ sudo apt install postgresql postgresql-contrib

确保系统运行:

$ sudo systemctl start postgresql.service

创建Postgres用户,当您使用linux用户(VPS用户)登录时,使用sudo命令:

$ sudo -u postgres createuser --interactive

您将被要求添加的角色名称:

Output
Enter name of role to add: your_sudo_account_name
Shall the new role be a superuser? (y/n) y

然后创建具有相同名称的数据库:

$ sudo -u postgres createdb your_vps_linux_username

然后打开Postgres角色的Postgres提示:

$ sudo -u your_vps_linux_username psql

## And then with command:

\password 

## You can exit with:

\q and then

exit 

## Note that password you will be created. It will be your db password for ecosystem.config.js and strapi database.js.

要使用基于身份的身份验证登录,您将需要一个与Postgres角色和数据库相同名称的Linux用户。您刚刚使用当前的Linux用户创建。如果要创建另一个用户和数据库,则必须以
的方式创建另一个Linux用户帐户

$ sudo adduser another_account

与Linux用户创建角色和数据库后,我们必须更改Postgres角色,因为它没有密码。

$ sudo -i -u postgres psql

$ \password


现在您的数据库名称:your_linux_user_name
数据库用户:your_vps_linux_username
数据库密码:我上面指出的密码。


现在在开发计算机和项目文件夹上,(如果您第一次设置strapi时未选择PostgreSQL),则必须安装pg依赖项软件包。

$ npm install pg --save

#or

$ yarn add pg

之后,(开发计算机)用以下内容替换./config/database.js中的内容:

module.exports = ({ env }) => ({
  connection: {
    client: 'postgres', 
  connection: {
        host: env('DATABASE_HOST', '127.0.0.1'),
        port: env.int('DATABASE_PORT', 5432),
        database: env('DATABASE_NAME', ''),
        user: env('DATABASE_USERNAME', ''),
        password: env('DATABASE_PASSWORD', ''),
        ssl: {
          rejectUnauthorized:env.bool('DATABASE_SSL_SELF', false),
       },
      },
      debug: false,
  },
});

现在您准备将更改推向GitHub:

git add .
git commit -m "Configured database.json"
git push

4。克隆和构建项目。

现在您准备将项目克隆到VPS。

$ cd ~
$ git clone https://github.com/your-name/your-project-repo.git

下一个导航到您的项目文件夹。

$ cd ./your-project-folder

## and then

$ npm install 

## or

$ yarn install

strapi使用port 1337默认值。我们必须为Strapi打开端口1337。

cd ~
sudo ufw allow 1337/tcp
sudo ufw enable

我们安装和配置Nginx后,我们将使用:
关闭端口1337

sudo ufw deny 1337

安装和配置PM2运行时

PM2运行时允许您保持Strapi项目的活力并在不停机的情况下重新加载。

npm install pm2@latest -g

之后:

cd ~
pm2 init
sudo nano ecosystem.config.js  ## nano or any kind of editor

现在,用以下内容替换文件:

module.exports = {
  apps: [
    {
      name: 'strapi',
      cwd: 'cloned-strapi-project-directory/',  
      script: 'npm',  // Or 'yarn'
      args: 'start',
      env: {
        NODE_ENV: 'production',
        DATABASE_HOST: 'localhost', // database endpoint
        DATABASE_PORT: '5432',
        DATABASE_NAME: 'your-db-name', // DB name
        DATABASE_USERNAME: 'your-username', // your username for psql
        DATABASE_PASSWORD: 'your-password', // your password for psql
      },
    },
  ],
};

还设置您的.env文件(如果不存在,则创建)。

现在以:
启动ecosystem.config.js文件

cd ~
pm2 start ecosystem.config.js

现在PM2活动并运行。您应该能够在Port 1337上查看创建管理页面。

Strapi-Login-Screen

我们要做的最后一件事是生成启动脚本以启动PM2:

$ cd ~
$ pm2 startup systemd

按照命令行遵循指令;复制并粘贴生成的路径。您将被提示:

...

[PM2] [v] Command successfully executed.

...

然后输入:

$ pm2 save

然后确保脚本是否可以使用:

$ pm2 list

## and 

$ systemctl status pm2-your-username

现在您可以设置和配置Nginx,通过Let's Encrypt与Certbot安装SSL,并使用Git创建Webhook。

如果您意识到任何错字或其他东西,请与我联系。

来源:

  1. Strapi Deployment DigitalOcean Droplets

  2. How To Install and Use PostgreSQL on Ubuntu 18.04

  3. How To Install Node.js on Ubuntu 18.04

  4. Strapi Quick Start Guide

  5. How To Set Up a Node.js Application for Production on Ubuntu 18.04

  6. How To Install Nginx on Ubuntu 20.04