前后端-项目部署阿里云实践流程

0 阅读7分钟

项目部署阿里云

购买阿里云服务器

1.注册登录阿里云

[阿里云官网]  www.aliyun.com/ 

buyServe.png 2.进入后点击立即购买选择配置,可以自定义配置,个人新人用户建议快速购买一年99元那个,地域按需选择

serveOption.png

CentOS 6已于2020年11月30日停止维护,CentOS 8已于2021年12月31日停止维护,阿里云已同时停止对该操作系统的支持。

CentOS 7已于2024年06月30日停止维护,阿里云将同时停止对该操作系统的支持。

Alibaba Cloud Linux镜像是阿里自己维护的一种应对CentOS EOL(停止维护)的一种解决方案

Alibaba Cloud Linux 3开头 版本对应CentOS8,Alibaba Cloud Linux 2开头 版本对应CentOS7

连接远程服务器

购买完成后跳转工作台

1.初始化云盘重新设置云盘密码

工作台.png

initServe.png

setPwd.png

2.远程连接服务

connectServe.png

点击远程连接后登录账号密码进入服务器控制台

filetree.png

打开文件树可以稍微直观的看到文件目录

cd ..
#返回上级目录ls
#查看当前目录下的文件exit
#退出#如果想用本地cmd连接云服务: ssh -p 22 root@云服务器ip
#若提示需要生成ssh请自行查阅相关文档

部署Node环境(后端是java需要部署java环境)

#安装分布式版本管理系统git
sudo yum install git -y
​
#克隆nvm源码至~/(根目录)下,并检查最新版本
git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
​
#依次运行,配置nvm环境变量
sudo sh -c 'echo ". ~/.nvm/nvm.sh" >> /etc/profile'
source /etc/profile
​
#修改npm镜像
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
​
#查看可安装node版本
nvm list-remote
​
#安装需要的版本(可安装不同的版本)
nvm install v版本号
​
#检查已安装版本
nvm ls#使用版本
nvm use v版本号
​

Nginx安装配置

#安装依赖:
yum -y install pcre* #pcre用于处理正则表达式的开源库
yum -y install openssl* #开源的加密库,用于加密通信数据
安装nginx: sudo yum install nginx
启动nginx: sudo systemctl start nginx
查看nginx运行状态: sudo systemctl status nginx
查看nginx.conf配置文件: 到nginx目录下 vim nginx.conf
退出修改:  :q  
保存退出:  :wq
​
​
#启动后无法打开是因为服务器默认有防火墙,只允许22端口的访问,而http请求默认是80端口,https请求默认是443端口,请求直接被拦截到不了Nginx,所以需要配置通行
​
http通行:sudo firewall-cmd --permanent --zone=public --add-service=http
https通行:sudo firewall-cmd --permanent --zone=public --add-service=http
重启防火墙:sudo firewall-cmd --reload
查看防火墙状态:firewall-cmd --state
启动防火墙:systemctl start firewalld.service
​
参数含义:
--zone #作用域
--permanent #永久生效,没有此参数重启后失效

直接安装软件是安装在etc/nginx目录下的,可以选择下载压缩包的方式下到当前文件夹下

若安装nginx配置后还无法访问默认网页,请到安全组配置入方向流量

image-20240724164500311转存失败,建议直接上传图片文件

安装mysql

方案一:

#安装wget
sudo yum install wget
​
# 下载并安装 MySQL 源
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
​
sudo yum localinstall mysql80-community-release-el7-11.noarch.rpm
​
# 安装 MySQL
sudo yum install mysql-community-server -y
​
# 如果上一步报错 执行下面的语句 之后 再次执行一下上面的安装Mysql的语句
sudo yum module disable mysql
​
# 启动MySQL
sudo systemctl start mysqld
​
# 找到默认密码
# MySQL安装完毕之后会自动设置一个默认密码,我们需要找到默认密码
grep 'temporary password' /var/log/mysqld.log
​
# 连接到MySQL数据库,修改密码
mysql -uroot -p
​
​
ALTER USER 'root'@'localhost' IDENTIFIED BY '自定义密码';
​
#退出mysql
quit

方案二:

#(条件可选)当ECS实例操作系统为Alibaba Cloud Linux 3,需安装MySQL依赖包。 
sudo yum install -y compat-openssl10
​
#更新yum源。
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
​
#下载软件包索引信息。
yum makecache
​
#安装MySQL。
sudo yum -y install mysql-community-server
​
#查看MySQL版本号。
mysql -V

远程数据库连接

报错:Host 'xxx.xx.xx.xx' is not allowed to connect to this MySQL server

因为阿里云中安装的mysql默认只能本机连接无法远程连接

解决办法
​
#安全组配置3306端口的入站连接
#查看数据库监听端口
netstat -tulnp | grep mysql
​
#登录数据库
#查看所有系统用户
SELECT User, Host FROM mysql.user;
​
#创建角色
CREATE USER '用户名称'@'用户ip' IDENTIFIED BY '密码';
#添加权限
GRANT ALL PRIVILEGES ON *.* TO '用户名称'@'用户ip' WITH GRANT OPTION;
#撤销旧权限
REVOKE ALL PRIVILEGES ON *.* FROM '用户名'@'旧的IP地址';
​
#刷新权限
flush privileges;
​
操作结束后,重新连接
ps:navicat建立连接失败后上述步骤操作完毕需要删掉错误的链接再创建新链接

上传前端项目至服务器

前台项目(用户使用)

首先将前后端项目进行打包,然后压缩成压缩包

方案一:
#在当前压缩包目录下打开cmd
#上传压缩包
scp 压缩包路径 root@远端服务器ip:上传至目录路径
示例:scp ./dist.zip root@0.0.0.0:~/
​
#查看根目录是否有home(用户根目录)文件夹,没有就创建一个
mkdir /home/nginx
​
#将dist移动到上述文件夹中
mv dist.zip /home/nginx
​
#进入文件夹
cd /home/nginx
​
#解压文件
upzip dist.zip
​
#解压成功可删除压缩包
rm dist.zip
​
#可根据喜好修改文件名字,这个无所谓
mv dist 名字
​
​
方案二:
也可以使用xshel配合xftp进行可视化操作,需要下载xshell与xftp
使用xftp连接远程服务器,直接拖动文件上传

后台项目(内部人员使用)

没有就不传

上传操作同前台项目一致

ps: 针对同一服务器同一端口的代理配置情况需要在两个项目的vue.config.js文件做以下操作

第一个项目
module.exports = {
  // 静态文件打包名称修改是为了防止请求静态文件时被nginx转发至同名的后端请求上
  assetsDir: 'webstatic',
}
​
第二个项目
module.exports = {
  //第一个项目的这里是 '/',域名匹配跟目录就是第一个项目
  //配置成自定义的路径,在访问这个路径的时候才会匹配上第二个项目,nginx中也要做相应配置
  publicPath: '/system',
}

配置Nginx使项目可以被访问

#进入nginx配置文件夹创建配置文件
cd /etc/nginx/conf.d
touch 项目名.conf

#编辑配置文件
vim 项目名.conf
#按i键进入插入模式插入以下内容
server {
        listen       80;
        listen       [::]:80; #IPv6 简写
        server_name  服务名称;
		location / {
			root /home/nginx/项目名;
			index index.html index.htm;
			try_files $uri $uri/ /index.html;
		}
		
    }
#保存退出
:wq

#重启nginx
nginx -s reload

上传后端项目至服务器

1.修改文件中的数据库密码

2.没有打包步骤直接将代码压缩上传同前端项目上传操作步骤(记得删除node_modules文件夹)

3.为项目安装依赖 npm i

4.若后端代码不兼容数据库密码规则可选择给数据库密码规则降级
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '数据库密码' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '数据库密码';

# 查看是否已经修改成功
select user,host,plugin from user where user='root'; 
#创建数据库(建议工具远程连接创建)

#退出
quit

启动后端项目(node后端启动)

#使用进程管理工具pm2
pm2 start 入口文件
​
​
安装pm2进程守护:
​
全局安装:sudo npm install pm2 -g
验证版本:pm2 --version

java与之不同请查找相关资料

配置反向代理

#进入,编辑前端nginx配置文件,添加下面代码
location ^~ /api/ {
  	rewrite  ^/api/(.*)$ /$1 break;
    proxy_pass  http://127.0.0.1:3000;
}
#退出
#重启nginx
nginx -s reload

如果是前后端不分离就写成

所有请求全部转发给后端
 server {
    listen       80;
    server_name  域名;
    
    location / {
    	proxy_pass  http://127.0.0.1:3000;
		}
}

购买域名

[万网阿里云]  wanwang.aliyun.com/ 

如果你的域名使用了云服务商(如阿里云)的DNS解析服务,并且未开启任何安全防护,那么理论上,针对您域名的大规模恶意查询确实可能导致费用增加,或者至少对你的DNS服务稳定性构成威胁。因此如果是自用可以先不考虑域名的事情