基于CentOS的部署方案
前言
- 云服务器为腾讯云(或阿里云)轻量应用服务器
- 连接远程服务器
ssh - Linux包管理工具
yumrpm
# 安装redis
yum install redis
rpm -qa|grep redis
rpm -ql xxxxx
- nginx服务器
- git基础知识
- linux scp命令,复制文件至远程服务器
- 计算机网络基础知识——端口
2. Metagraph技术栈说明
服务器部署,就是将各种服务跑在服务器的不同端口上,提供服务。有一些端口会被开放出来,能够被外网访问,有一些则只提供内部服务。
端口,英文为port,是对外提供服务的一种渠道。
通常一个完整的web项目包括前端静态资源、Web服务和数据库服务三个部分。以Metagraph为例,
- 前端基于Vue开发,采用
前端工程化手段打包生成静态资源。 - 服务端基于Node.js技术栈,采用Nest.js框架开发。
- 数据库服务包括MongoDB、Redis、Neo4j(图数据库)。
上述三种服务默认情况下占用的端口号如下。
- 静态资源服务
- http 80
- https 443
- web服务
- web api接口 8000
- webSocket接口 8001
- 数据库服务
- neo4j
- 7687 bolt
- 7474 http
- 7473 https
- mongoDB 27017
- redis 6379
- neo4j
3. 静态资源部署
前端应用打包后,通常会生成一个包含index.html的文件夹。将生成好的静态资源文件夹上传至服务器的指定文件夹。
server {
listen 80;
# 指定域名
server_name metagraph.design;
index index.html;
location / {
# 指定静态资源所在文件夹
root /home/dist;
}
}
Nginx静态资源配置如上,在配置文件中,指定了静态资源的目录为/home/dist。之后将静态资源上传至服务器中,使用linux命令scp。
scp -r /xxx/metagraph/dist root@xx.xx.xx.xx:/home/dist
4. nodejs服务部署
4.1 nodejs服务启动
通常,启动一个node.js进程需要先将工程打包。打包后的node.js工程会包含一个入口文件。假设入口文件为index.js,执行node index.js就可以启动服务。
但是这种启动方式,当用户按下ctrl + c服务就会断开,因此服务需要以一种守护进程的方式启动。
4.2 pm2介绍
4.2 以守护进程方式启动
pm2是一款常驻进程工具。
pm2 start index.js
针对nodejs提供的服务,nginx配置相应的端口。
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
# rest api
location /api/ {
include uwsgi_params;
proxy_pass http://0.0.0.0:8000/;
}
# websocket api
location /websocket {
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 升级http1.1到 websocket协议
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://0.0.0.0:8001;
}
}
5. mongodb数据库部署
5.1 yum安装mongodb
创建一个文件 /etc/yum.repos.d/mongodb-org-4.2.repo,写入以下配置。
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
执行安装命令。
sudo yum install -y mongodb-org
5.2 配置mongodb数据库
安装完成后,mongodb默认配置文件放在/etc/mongod.conf
配置文件内容如下
port=27027 # 默认端口号为27017,建议修改
fork=true # 以创建子进程的方式运行
dbpath=/data/db #日志输出方式数据库路径
logappend=true #日志输出方式,日志append而不是overwrite
logpath=/data/logs/mongo.log #日志路径
auth=true #开启安全验证(可以不开启)
bind_ip=0.0.0.0
务必确保日志目录是存在的
启动mongodb
mongod -f /etc/mongod.conf
配置mongodb密码。
# 通过终端启动mongodb
mongo --port 27027 # 修改默认端口号,需要指定新端口
# 切换到admin用户
use admin
# 创建新用户
db.createUser({
user: "username", pwd: "password", roles: [{ role: "root", db: "admin" }]
})
# 下次再登录时
use admin
db.auth('username', 'password')
数据库连接。远程连接,数据库需要开放0.0.0.0,并且如果是部署在云服务器上,还需要在云服务器后台防火墙开放相应端口。
mongodb://username:password@xx.xx.xx.xx:27017/?authSource=admin
linux重启mongodb
[root@VM-20-15-centos ~]# ps aux |grep mongodb
# root 22277 0.0 0.0 112828 980 pts/0 D+ 19:13 0:00 grep --color=auto mongodb
kill -9 8827
mongod -f /etc/mongod.conf
6. redis数据库部署
yum install redis
配置文件位置 /etc/redis.conf
# 建议修改默认端口号
port 6379
# yes: 开启守护进程方式; no:
daemonize yes
bind 0.0.0.0
# 修改密码
requirepass xxxxxxx
启动redis
redis-server /etc/redis.conf
7. neo4j部署方案
最新版本的neo4j支持yum
rpm --import https://debian.neo4j.com/neotechnology.gpg.key
添加yum镜像 /etc/yum.repos.d/neo4j.repo:
[neo4j]
name=Neo4j Yum Repo
baseurl=http://yum.neo4j.com/stable
enabled=1
gpgcheck=1
然后下载。
yum install neo4j
neo4j会下载如下四个包。
验证中 : 1:java-11-openjdk-headless-11.0.14.1.1-1.el7_9.x86_64 1/4
验证中 : 1:java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64 2/4
验证中 : cypher-shell-4.4.4-1.noarch 3/4
验证中 : neo4j-4.4.4-1.noarch 4/4
neo4j会默认下载java依赖,必须设置和neo4j依赖一样的jdk环境。
# 搜索java
[root@VM-8-16-centos yum.repos.d]# rpm -qa|grep java
java-11-openjdk-11.0.22.0.7-1.el7_9.x86_64
javapackages-tools-3.4.1-11.el7.noarch
java-11-openjdk-headless-11.0.22.0.7-1.el7_9.x86_64
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2024a-1.el7.noarch
# 查找 jdk 路径
rpm -ql java-11-openjdk-11.0.22.0.7-1.el7_9.x86_64
# 通过 sudo 进入/etc/profile文件
sudo vim /etc/profile
# jdk配置 /etc/profile文件中写入
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.14.1.1-1.el7_9.x86_64
CLASSPATH=$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
# 修改/etc/profile文件之后执行
source /etc/profile
# 查看java版本
[root@VM-8-16-centos yum.repos.d]# java --version
openjdk 11.0.22 2024-01-16 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.22.0.7-1.el7_9) (build 11.0.22+7-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.22.0.7-1.el7_9) (build 11.0.22+7-LTS, mixed mode, sharing)
修改neo4j配置文件
设置neo4j外部可访问
# With default configuration Neo4j only accepts local connections.
# To accept non-local connections, uncomment this line:
dbms.connectors.default_listen_address=0.0.0.0
- bolt config
# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=DISABLED
dbms.connector.bolt.listen_address=:7687
#dbms.connector.bolt.advertised_address=:7687
- http config
# HTTP Connector. There can be zero or one HTTP connectors.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=0.0.0.0:7474
#dbms.connector.http.advertised_address=:7474
启动neo4j命令行
neo4j start
neo4j stop
neo4j restart
neo4j初始用户名和密码为 neo4j neo4j。
登录 web端neo4j可以更改neo4j默认密码。
8. 安装mysql
首先下载mysql的yum源配置
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
安装mysql的yum源
yum -y install mysql57-community-release-el7-11.noarch.rpm
通过yum安装mysql
yum -y install mysql-server --nogpgcheck
启动mysql
systemctl start mysqld.service
systemctl status mysqld.service
# 重启mysql
systemctl restart mysqld
命令行进入mysql
找到mysql临时密码
cat /var/log/mysqld.log| grep password
通过临时密码进入mysql
mysql -uroot -p
修改mysql默认密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
修改密码可能会遇到密码不符合安全策略
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxxxxxxxx';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
修改密码级别
mysql> set global validate_password_policy=0;
修改其他机器访问mysql授权
# 基本格式如下
grant all privileges on 数据库名.表名 to '新用户名'@'指定ip' identified by '新用户密码' ;
# 添加授权
grant all privileges on *.* to 'root'@'%' identified by '123456Admin@123' with grant option;
# 立即刷新配置
flush privileges;
修改mysql默认端口 mysql配置文件默认放在/etc/my/cnf里
9. 安装nodejs
方案一 yum安装
NodeSource是一家致力于提供企业级Node支持的公司。
curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
sudo yum install nodejs
方案二 源码安装
下载源码,在nodejs.org/en/download… 下载适合版本的nodejs
# 跳转至安装目录
cd /usr/local/src/
# 下载源码
wget https://nodejs.org/dist/latest-v16.x/node-v16.20.2-linux-x64.tar.gz
# 解压源码
tar -zxvf node-v16.20.2-linux-x64.tar.gz
# 进入源码文件夹
cd node-v16.20.2-linux-x64.tar.gz
# 查看解压后文件夹下内容
[root@VM-8-16-centos node-v16.20.2-linux-x64]# ls
bin CHANGELOG.md include lib LICENSE README.md share
# 进入bin文件夹
[root@VM-8-16-centos node-v16.20.2-linux-x64]# cd bin
# 查看bin目录下内容
[root@VM-8-16-centos bin]# ls
corepack node npm npx
# 测试node是否可用
[root@VM-8-16-centos bin]# ./node -v
v16.20.2
# 测试npm是否可用
[root@VM-8-16-centos bin]# ./node npm -v
8.19.4
# 查看当前路径
[root@VM-8-16-centos bin]# pwd
/usr/local/src/node-v16.20.2-linux-x64/bin
# 编辑环境变量
sudo vi /etc/profile
# 输入 `i` 即可对文件进行编辑。
#在文件底部添加环境变量
export NODEJS_HOME=/usr/local/lib/node/nodejs
export PATH=$NODEJS_HOME/bin:$PATH
# 更新配置
source /etc/profile
tar.zx和tar.gz有什么区别?两种文件都是压缩了的tar文件,只是压缩算法不同。 tar.gz使用的是gzip压缩工具,tar.xz使用的是xz工具。但对于使用者来说,二者的解压没有区别。 解压
进目录
测试是否安装成功
创建node npm 软链接
ln -s /www/node-vxx.xx.x-linux-x64/bin/node /usr/local/bin/node
ln -s /www/node-vxx.xx.x-linux-x64/bin/npm /usr/local/bin/npm
10. 安装git
在Linux上使用yum安装Git,非常简单,只需要一行命令
# 安装命令
yum -y install git
# 查看是否可用
[root@VM-8-16-centos etc]# git --version
git version 1.8.3.1