Nodejs 16 安装
移除旧版本的 node
yum remove -y nodejs npm
使用以下命令将存储库添加到系统
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
配置存储库之后可以安装
yum install -y nodejs
查看版本
node -v
下载 yarn 包管理
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
sudo yum install -y yarn
Docker 安装
Docker的安装以及基础镜像的使用
Docker 部署mysql
1- 拉取镜像
docker pull mysql:8.0.28
2- 启动 mysql,将mysql中的数据挂载到本地
docker run --name mysql -v ./mysql/data:/var/lib/mysql -d -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=1234 mysql:8.0.28
3- 进入容器
docker exec -it mysql bash
4- 登录mysql
mysql -u root -p
#输入前面启动 mysql 时的密码 1234
5- 添加远程登录用户
CREATE USER 'baiye'@'%' IDENTIFIED WITH mysql_native_password BY 'by1234';
GRANT ALL PRIVILEGES ON *.* TO 'baiye'@'%';
记住上面部署mysql是添加远程登录的用户名和密码,我的文档是
用户名:baiye
密码:by1234
创建数据库
# 创建数据库,名称为 strapi
create database strapi;
记住这个位置我们创建的数据库的名称,我的文档是
strapi
创建 strapi 项目
下载项目需要的依赖
yum update -y
npm install -g npm
1- 创建一个 strapi 项目
npx create-strapi-app@latest my-strapi
如果报下面的错误,按照提示 升级 npm 的版本
npm install -g npm@9.8.0
2- 选择项如下图,选择数据库的配置后会需要去自动去检测一下数据的状态(一定要保证正确的数据库配置信息),下载资源会花费较长的时间
这里的 username 不能写 root ,一定要写成上面远程登录的用户名,我的文档上面是 baiye
如果报错是我们数据库的错误,可以到 .env 文件中进行修改
备注: 下载资源时候,可能会下载失败,可以换网络多次尝试
3- 项目创建成功后如下图
4- 运行项目
npm run develop
此时在本地访问 http://192.168.157.142:1337/admin 不能够访问,出现空白页,需要我们关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
再一次运行项目,访问地址,如下点击 create
此时浏览器一直在加载中,打开控制台,出现下面的错误。
错误:main.3d752c03.js:2927 Refused to connect to ‘http://localhost:1337/admin/project-type’ because it violates the following Content Security Policy directive: “connect-src ‘self’ https:”.
发现这里一直在向我们 localhost 发送请求,而并不是我们服务器的地址。下面需要我们进行配置。
5- 配置项目
vim config/server.js
# 添加下面的配置
url: env('PUBLIC_URL','http://192.168.157.143:1337'),
配置后,需要先 build 项目,否则上面的配置不会生效
6- 配置语言
vim ./src/admin/app.js
# 文件中写入下面的内容
const config = {
locales: [
'zh-Hans',
'zh',
],
};
const bootstrap = (app) => {
console.log(app);
};
export default {
config,
bootstrap,
};
重新编译运行
npm run build
npm run develop
大功告成!!!
制作 docker 镜像
Dockerfile 脚本
将 dockerfile 和 .dockerignore 放在与项目 src 同级目录下
1- 编写 Dockerfile 脚本
官网参考:https://docs.strapi.io/dev-docs/installation/docker#development-dockerfile
FROM node:18-alpine
RUN apk update && apk add --no-cache build-base gcc autoconf automake zlib-dev libpng-dev nasm bash vips-dev
ARG NODE_ENV=development
ENV NODE_ENV=${NODE_ENV}
WORKDIR /opt/app
COPY package*.json ./
RUN npm update -g
RUN npm install
ENV PATH /opt/app/node_modules/.bin:$PATH
COPY . .
RUN ["npm", "run", "build"]
EXPOSE 1337
CMD ["npm", "run", "develop"]
2- 编写 .dockerignore 文件
vim .dockerignore
# 写入下面的内容
.tmp/
.cache/
.git/
build/
node_modules/
data
3- build
docker build -t or/strapi .
运行
docker run -it -d --name strapi --restart always -p 1337:1337 or/strapi
docker-compose
1- 准备需要绑定挂在的文件
2- 准备需要挂载的 mysql 的数据
3- 编写 docker-compose 脚本
version: "3"
services:
strapi:
container_name: or-strapi
image: or/strapi
environment:
PUBLIC_URL: 192.168.157.143
DATABASE_CLIENT: mysql
DATABASE_HOST: 192.168.157.143
DATABASE_PORT: 3306
DATABASE_NAME: strapi
DATABASE_USERNAME: baiye
DATABASE_PASSWORD: by1234
ports:
- "1337:1337"
networks:
- strapi
depends_on:
- mysql
mysql:
container_name: or-mysql
image: mysql:8.0.28
environment:
MYSQL_ROOT_PASSWORD: 1234
MYSQL_USER: baiye
MYSQL_PASSWORD: by1234
MYSQL_DATABASE: strapi
volumes:
- ./mysql/data:/var/lib/mysql
ports:
- "3306:3306"
networks:
- strapi
volumes:
strapi-data:
networks:
strapi:
driver: bridge
所有的准备文件如下
运行,运行前需要删除我们 dockerfile 脚本中运行的镜像,然后执行下面的命令
docker-compose up -d