node后端项目部署服务器

centos7

centos安装node

  1. 安装 nvm, 方便 Node.js 多版本管理
yum install -y git
git clone https://github.com/cnpm/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
  1. 设置nvm环境变量,避免每次连接服务器nvm命令失效问题(可先重连服务器,验证是否还存在nvm命令)
mkdir /usr/local/nvm
vim /etc/profile.d/nvm.sh

# 输入
export NVM_DIR=/usr/local/nvm
source ~/.nvm/nvm.sh

# :wq 退出后
source ~/.bash_profile

# 重连服务器,测试nvm命令是否生效
  1. 安装node,选择需要的版本
nvm install v10.16.3
nvm install v12.18.0
nvm install v14.21.0
nvm install v16.20.0

nvm use v14.21.0
# 避免重连服务器default版本丢失,(可先重连服务器,验证`node -v`是否有效,再设置)
nvm alias default v14.21.0

centos安装nginx

参考 https://cloud.tencent.com/document/product/213/38056

  1. 下载
vi /etc/yum.repos.d/nginx.repo

# 写入
[nginx] 
name = nginx repo 
baseurl = https://nginx.org/packages/mainline/centos/7/$basearch/ 
gpgcheck = 0 
enabled = 1

:wq 保存

  1. 安装
yum install -y nginx

systemctl start nginx
systemctl enable nginx # 自启动

cd这些目录检查,可记录下来备用(目录不同存在,需自行查找安装在哪里) /usr/share/nginx/html

/etc/nginx/conf.d/

  1. 配置(可先跳过)
  • 编辑conf
    当前安装新版本,配置剥离但单独文件,不在nginx.conf文件中配置,
    可在目录 /etc/nginx/conf.d/ 下,编辑default.conf,或者cp复制一个再编辑,
    如 /etc/nginx/conf.d/demos.conf
  • 配置ssl证书,
    腾讯云服务器,对应证书管理 https://console.cloud.tencent.com/ssl
    域名没添加dns解析和备案, 配localhost + 公网ip访问,这里子域名demos.ackuikui.com也解析到该服务器,所以用的域名
     server_name ackuikui.com; 
     ssl_certificate ./ssl/ackuikui.com_bundle.crt; 
     ssl_certificate_key ./ssl/ackuikui.com.key;
  • 检查配置
    cd /usr/sbin/
    ./nginx -t./nginx -s reload 重启
  1. 测试nginx 浏览器访问服务器ip:80端口,看一眼是否为nginx默认页

centos安装mysql5.5

  • 1G内存带不动高版本mysql
  • 为什么没用自带的MariaDB,只是本地服务用的mysql
  1. 卸载自带的MariaDB
    rpm -qa|grep -i maria
    yum -y remove maria*

报错:MySQL-server-5.5.59-1.el7.x86_64 conflicts with file from package mariadb-libs-

MariaDB没卸载不能装mysql


报错:error: cannot open Packages database in /var/lib/rpm

删除这种文件__db.001
ls /var/lib/rpm/
rm -f /var/lib/rpm/__db*


报错:The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package

用这个修复
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022


如果有高版本mysql不能启动,也可卸载再装低版本

# 参考 https://www.cnblogs.com/ricklz/p/12269102.html
rpm -qa|grep -i  mysql
yum remove mysql-community-libs-5.7.44-1.el7.x86_64
# 其他没自动删的,也卸载删除
rpm -e --nodeps mysql57-community-release-el7-10.noarch

find / -name mysql
rm -rf /usr/share/mysql
  1. 下载安装mysql5.5
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/MySQL-server-5.5.59-1.el7.x86_64.rpm
wget https://dev.mysql.com/get/Downloads/MySQL-5.5/MySQL-client-5.5.59-1.el7.x86_64.rpm

rpm -ivh --nodeps MySQL-server-5.5.59-1.el7.x86_64.rpm
rpm -ivh --nodeps MySQL-client-5.5.59-1.el7.x86_64.rpm

service mysql start
service mysql restart
systemctl enable mysql
chkconfig --list|grep mysql

mysql -uroot
set password=password('*****'); # ****为自己要的密码,本地保存下

# 授权, 让本地可远程连接该数据库
grant all privileges on *.* to 'root'@'%' identified by '*****';
flush privileges;

默认自动断开时间调整

mysqld --help --verbose | grep -A 1 'Default options'
# 查看默认配置

vi /etc/my.cnf

# 修改后重启
service mysql restart
[mysqld]
# 10天
wait_timeout=864000
interactive_timeout=864000

mysql查询

show global variables like '%time%' ;

启动node服务

查看端口情况

# vue-project
lsof -i:3000
cd /usr/local/project/node-express
nohup npm start > log.out 2>&1 &

# websocket项目
lsof -i:3332
cd /usr/local/project/im-bd
nohup npm start > log.out 2>&1 &

# text to img,ai项目
lsof -i:3444
cd /usr/local/project/text-ai-serve  
nohup node index.js > log.out 2>&1 &

kill 111 # 关闭某pid进程

问题:前端html上传后,无权限访问

chown -R nginx:nginx /usr/share/nginx/html

服务器开放端口

https://cloud.tencent.com/document/product/213/38237

本地证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./selfsigned.key -out selfsigned.crt