文章目录
一个http请求基本流程
客户端通过发起域名资源请求 -> DNS解析获得IP -> 寻找服务器获得资源域名和ip的关系
DNS作用
DNS:Domain Name Server 域名服务器 域名虽然便于人们记忆,但网络中的计算机之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器
什么是cname和a记录
a记录:用户可以在此设置域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器(也叫ip指向域名配置)
cname:别名指向,可以为一个主机设置别名。比如设置open1024.com,用来指向一个主机 xdclass.net 那么以后就可以用open1024.com来代替访问 xdclass.net 了
流程
- 购买服务器,阿里云,腾讯云,亚马逊云aws
- 购买域名,备案:阿里云备案地址:https://beian.aliyun.com/
- 安装项目依赖的基本环境,比如java、nginx等软件(看项目)
- 配置域名解析到服务器
备注:后端项目一般部署Linux服务器,前端静态资源可以部署Linux也可以部署在CDN上
租用阿里云服务器
阿里云新用户地址:https://www.aliyun.com/minisite/goods?userCode=r5saexap&share_source=copy_link
我已经不是新用户了,新用户价格很低,建议第一次多买几年↓
建议,其他的根据实际情况选择即可:
阿里云服务器远程登录
购买完毕后,控制台修改阿里云远程连接密码
修改完密码后要重启实例才能生效
Windows远程连接工具:Putty/Xshell
Windows下linux图形操作工具(用于远程连接上传文件):winscp
关于这两个软件的安装可以自己找教程
远程登录winscp,并将 jdk17 和 nginx 压缩包上传到/usr/lcoal/software
目录下:
putty远程登录:
阿里云服务器Centos7安装环境
安装jdk17环境
解压:tar -zxvf jdk-17_linux-x64_bin.tar.gz
配置全局环境变量:vim /etc/profile
# 放到文件的最后
JAVA_HOME=/usr/local/software/jdk-17.0.6
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
环境变量立刻生效:source /etc/profile
查看安装情况:java -version
安装ngnix环境
安装依赖:yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
把上传的安装包放到新建的单独文件夹nginx中:
解压:tar -zxvf nginx-1.13.7.tar.gz
# 依次执行
./configure
make
make install
默认安装路径:/usr/local/nginx
(自动生成)
访问配置:
cd /usr/local/nginx/sbin
./nginx
此时使用服务器公网ip可以访问验证:
阿里云服务器Mysql安装和导入数据
- 安装Mysql 5.7 (注意,Mysql和系统务必保持一致,不然存在不一致)
- 开启mysql远程连接(如果是准线上,建议不要开启远程连接)
- 开放阿里云网络安全组配置 3306 端口
- 导入测试数据到Mysql
#下载mysql的Yum仓库
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
#安装 mysql服务
yum -y install mysql-community-server
#启动数据库服务, systemctl 该命令可用于查看系统状态和管理系统及服务,centos7上开始使用
systemctl start mysqld.service
#查看状态
systemctl status mysqld.service
#在日志文件中查看初始密码
grep "password" /var/log/mysqld.log
#进入修改Mysql密码
mysql -uroot -p
#新密码设置必须由大小写字母、数字和特殊符号组成
ALTER USER 'root'@'localhost' IDENTIFIED BY '123123';
#开启mysql的远程访问, %是指全部
grant all privileges on *.* to 'root'@'%' identified by '123123' with grant option;
#刷新权限
flush privileges;
阿里云域名备案、解析A记录配置
域名注册:https://wanwang.aliyun.com/domain/
备案地址:https://beian.aliyun.com/
备案周期大概在一周左右
备案成功后需要进行解析:
解析地址:https://dns.console.aliyun.com/
添加两条记录,记录值填写云服务器公网ip:
可以通过配置的域名访问云服务器:
后端Java API项目阿里云服务器部署
项目打包、上传
打包成功后,在项目目录的target文件夹下会有一个jar包:
上传到云服务器/usr/local/software/api
目录下:
创建application.properties文件,把项目中的配置文件ip地址改为服务器公网ip,数据库密码改为部署在服务器上的mysql的密码:
启动应用指定外部文件,执行: nohup java -jar -Dspring.config.location=./application.properties demo-0.0.1-SNAPSHOT.jar &
ctrl+c终止,可以看到生成了nohup.out文件
执行:tail -f nohup.out
此时启动成功
回退到software目录下,将api目录复制一个api2,删除nohup.out文件,将application.properties文件中的端口更换一个新的,重复执行nohup java -jar -Dspring.config.location=./application.properties demo-0.0.1-SNAPSHOT.jar &
和tail -f nohup.out
检验是否启动成功:curl 127.0.0.1:8088/api/v1/pub/video/banner
(端口后的接口路径是我自己项目中设置的接口)
在安全组中配置application.properties中的端口,可以通过公网ip访问内容:
前端项目打包上传阿里云服务器
前端项目运行cnpm run build
打包
在项目目录中生成一个dist文件夹,上传到云服务器的/usr/local/software/front
目录下
前端配置Nginx:打开ngnix的nginx.conf配置文件,修改root对应的值为dist文件的路径
重启nginx:./nginx -s reload
等待两三分钟后可以通过域名搜索到配置的项目: 因为api没有配置,所以还都是空的内容
后端API多节点集群部署
**多节点启动:**节点1:部署在/usr/local/software/api
;节点2:部署在/usr/local/software/api2
配置nginx集群访问:
# lbs可以自定义成其他
upstream lbs {
server 172.18.216.171:8081;
server 172.18.216.171:8088;
}
location /api/ {
proxy_pass http://lbs;
proxy_redirect default;
}
进入nginx的sbin目录重启nginx,刷新网页,验证部署成功: