1.服务器购买 国内服务器: 阿里云 ECS(Elastic Compute Service) , 腾讯云 CVM(Cloud Virtual Machine) 等
国外服务器:日本[Vultr] ,美国 Linode,谷歌云,微软 Azure,亚马逊 AWS 等
这一步需要创建好服务器实例,分配好公网 IP 地址。
2.域名购买 国内:阿里、腾讯等
国外:Godaddy
3.域名解析(配置 DNS) 注册好域名后需要将域名映射到自己服务器对应的 ip 地址,这样别人才能通过域名访问到我们的服务器。
这个步骤叫做域名解析,通过域名服务商提供的后台就可以操作,一般域名解析会有延迟,不是及时生效的。
4.服务器环境搭建 这里我选择的是CentOS操作系统(其他系统命令不同)
配置服务器, Mac 系统下直接使用终端就 ok
windows 系统下需要用到 git bash,或者别的工具(Putty)
需要用到的 Linux 系统操作命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 远程连接命令 ssh root@域名 # 展示当前文件夹路径 pwd # 切换文件夹目录 cd 目录 # 展示当前文件夹中内容 ls # 编辑文件 vim 文件路径 # 传输文件 scp 本地文件路径 root@域名:远程路径 # 解压文件命令 unzipjs
4.1 安装 CentOS 开发人员相关包 1 yum groupinstall 'Development tools'
4.2 配置免密登录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ssh-keygen -t rsa mkdir .ssh cd .sshtouch authorized_keys echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDP0Ur7rojMdFqTDUQx56QuxeNbqbeCO6lQz9t3KZAWjjJhSG5v1TMhElunJg7HJtovIGlTDwrco9U36gF/nJ+66Gwzeme4eSwUYAu8D7XjFEfFvUPHwtSUDZKV9jtPPsoujUM9LnxvJ09buU0+xpOCE6LAR7e3vPRmrlolQc88b/JbH2A4lsXGIhGNNK/Z6M5LagD8KTNePLv7jc3kA2GZdUUze1wIVBjO21BTK90hfVbEGL0WREVh9RKR33jl7L5s8mnBbLJbsuk/Jk0C5ZNSKKCpFfDBsDQWYodyw1wI7gdpWuV8cH0CYz4xTRuOcIOv7sUjx9gbW09eNZnNOkDxpTvzPuP9CqKFSBma1xtnhhJYdw6b+xnoVPthUKhWzvp9ElQUtAGK+Xzauk5CxHyESZGGoA/YZQZ0U0rmoTrvG5JvnYOclDFMAIfe/pBJR5Ue6tlfBSMBWaHs61b334kAAUbtgF8TW9owH6lSZYsz2mS8nPF6a47bIwZwwsXmoWM= hua'wei@LAPTOP-4NR7HM4G" >> authorized_keysexit
4.3 安装 nginx 1 2 3 4 5 6 7 8 9 10 11 12 13 # 添加nginx 源 sudo yum install epel-release # 安装nginx sudo yum install nginx # 启动nginx sudo systemctl start nginx # 配置防火墙规则 sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
4.4 安装 JDK(后端是 java 运行的) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 1. 在你的本地Windows系统中下载 Linux系统下的jdk,jdk下载官网https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。 下载你需要的jdk版本,我用的是 jdk-8u221-linux-x64.tar.gz # 2.下载完成后将安装包上传服务器 使用winscp上传文件至 /usr/java # 3.解压文件 tar -zxvf /usr/java/jdk-8u221-linux-x64.tar.gz # 4.配置path cd /etc vim profile 在profile文件中添加如下代码 export JAVA_HOME=/usr/java/jdk1.8.0_221 # jdk解压后的路径 export CLASSPATH=$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin export PATH JAVA_HOME CLASSPATH # 5.查看是否安装成功 java -version
4.5 安装 MySQL(数据库) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 # 下载并安装MySQL 源 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm # 验证仓库是否添加成功 yum repolist enabled | grep "mysql.*-community.*" # 安装MySQL sudo yum install mysql-community-server -y # 如果上一步报错,执行下面的命令后再次执行上面的安装Mysql命令 sudo yum module disable mysql # 修改配置 lower_case_table_names=1 需要先修改配置文件, vi /etc/my.cnf [mysqld] 下增加 lower_case_table_names=1 注:如果不加这一行,mysql会区分数据库表的大小写。 0代表区分大小写,1代表不区分大小写。 # 启动MySQL systemctl start mysqld systemctl enable mysqld systemctl status mysqld # 找到默认密码 # MySQL安装完毕后会设置一个默认密码,我们需要找到默认密码 grep 'temporary password' /var/log/mysqld.log # 连接到MySQL数据库,修改密码 mysql -uroot -p # 修改数据库密码 密码要求有大小写英文字母和数字 ALTER USER 'root'@'localhost' IDENTIFIED BY 'Hehuang++0724'; # 允许远程连接 mysql> use mysql; mysql> select host,user,authentication_string,plugin from user; mysql> update user set host='%' where user='root' ; mysql> flush privileges; # 注:如果服务器防火墙未开,记得开放mysql的端口。另外安全组也需要开放mysql端口。
5.上传网站资源 可以使用 scp 命令,也可以安装 FTP(winSCP、vsftpd)工具。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # scp 命令运行在本地电脑 scp 本地文件 root@域名:远程路径 # 在服务器创建文件夹 mkdir /home/nginx # 把网页文件移动到创建好的文件夹里 mv ./dist.zip /home/nginx/ # 解压压缩文件 cd /home/nginx unzip ./dist.zip # 修改文件夹名字 mv dist 文件夹名
6.配置 nginx 创建一个配置文件 exam.conf (配置 nginx 服务)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 cd /etc/nginx/conf.d # 创建配置文件 touch exam.conf vim exam.conf # 按i键 进入编辑模式 # 输入如下配置内容 server { listen 80; server_name www.yourdomain.com; # 服务器地址/域名地址 location / { root /home/nginx/exam; # 静态页面文件的路径 index index.html index.htm; } } # 保存退出 :wq # 重新启动nginx服务 sudo systemctl reload nginx # 或 以下命令 nginx -s reload # 查看nginx状态 sudo systemctl status nginx # 停止nginx服务 sudo systemctl stop nginx
7. 接口项目部署(java 项目) 1 2 3 4 5 6 7 8 9 10 11 # 启动jar包 java -jar /home/java/exam.jar # 关闭后就停止运行了 nohup java -jar /home/java/exam.jar >exam.log 2>&1 & # 后台不停止运行 # 查看日志 cat exam.log # 关闭防火墙才能访问springboot项目 查看其防火墙的状态: systemctl status firewalld.service # 关闭后就可以正常访问页面 systemctl stop firewalld.service # 重启防火墙 service iptables restart
Node 作为服务端: 8.安装 Node.js (后端是 Node 运行的) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # yum自带源中没有Node.js,所以首先要获取Node.js资源 curl --silent --location https://rpm.nodesource.com/setup_14.x |bash - # 安装Node.js yum install -y nodejs # 安装完成后使用如下指令测试安装是否成功 node -v # 安装pm2 启动node.js项目 pm2 start 文件名/id # 停止 pm2 stop 文件名/id # 从pm2列表 删除 pm2 delete 文件名/id
9.Node 项目部署步骤(Node 项目) 1.修改配置项文件中的 mysql 数据库密码为服务器中数据库的密码 2.上传项目压缩文件到服务器 3.再服务器上解压项目文件到 /home/nginx/hlj 4.为项目安装依赖 npm i 5.修改 mysql 数据库 密码规则
1 2 3 4 5 6 use mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'Hehuang++0724' PASSWORD EXPIRE NEVER; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Hehuang++0724'; # 查看是否以及修改成功 select user,host plugin from user where user='root';
6.创建新的数据库
1 2 # 登录数据口执行命令 create database 数据库名称
7.在之前的 nginx 配置文件中添加反向代理的配置:
1 2 3 4 location ^~ /api/ { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://127.0.0.1:3000; # 服务端配置的默认端口 }
8.新增一个服务端配置文件
admin.conf
1 2 3 4 5 6 7 8 9 10 11 cd /etc/nginx/conf.d touch admin.conf # 在文件中输入以下内容 server { listen 80; server_name admin.hehuang724.cn; # 域名前加admin location / { proxy_pass http://127.0.0.1:3000; } }
部署过程遇到的问题: 1.linux 上部署 springboot 项目启动成功本地无法访问 1 2 3 4 5 6 7 # 关闭防火墙才能访问springboot项目 # 系统是centos8 ,查看其防火墙的状态: systemctl status firewalld.service # 关闭后就可以正常访问页面 systemctl stop firewalld.service # 重启防火墙 service iptables restart
2.linux 服务器 mysql 区分表名大小写解决办法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 在mysql安装目录(/etc/my.cnf)中的my.cnf文件中[mysqld]下面添加一行配置, lower_case_table_names=1 # 重启mysql服务 service mysql restart # 重启mysql服务发现报错,原因是只有在初始化的时候设置 lower_case_table_names=1才有效 # 解决办法:卸载mysql,按下操作 # 卸载完mysql后,重新安装,安装完成后,首先立马修改配置文件 vi /etc/my.cnf [mysqld] 下增加 lower_case_table_names=1 # 配置完后重启mysql systemctl start mysqld systemctl enable mysqld systemctl status mysqld # 随后按上面的操作重新修改数据库密码
3.卸载 mysql 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 1、关闭mysql service mysqld stop 2、查看安装的mysql rpm -qa|grep -i mysql $ > [root@vultrguest ~] $ > mysql-community-libs-8.0.23-1.el7.x86_64 $ > mysql80-community-release-el7-1.noarch $ > mysql-community-client-8.0.23-1.el7.x86_64 $ > mysql-community-common-8.0.23-1.el7.x86_64 $ > mysql-community-server-8.0.23-1.el7.x86_64 $ > mysql-community-client-plugins-8.0.23-1.el7.x86_64 3、卸载mysql $ > rpm -ev mysql-community-libs-8.0.23-1.el7.x86_64 --nodeps $ > rpm -ev mysql80-community-release-el7-1.noarch --nodeps $ > rpm -ev mysql-community-client-8.0.23-1.el7.x86_64 --nodeps $ > rpm -ev mysql-community-common-8.0.23-1.el7.x86_64 --nodeps $ > rpm -ev mysql-community-server-8.0.23-1.el7.x86_64 --nodeps $ > rpm -ev mysql-community-client-plugins-8.0.23-1.el7.x86_64 --nodeps 4、找出并删除mysql相关目录 find / -name mysql $ > [root@vultrguest ~] $ > /var/lib/mysql $ > /var/lib/mysql/mysql $ > /usr/bin/mysql $ > /usr/lib64/mysql $ > /etc/logrotate.d/mysql rm -rf /var/lib/mysql rm -rf /var/lib/mysql/mysql rm -rf /usr/bin/mysql rm -rf /usr/lib64/mysql rm -rf /etc/logrotate.d/mysql 5、删除my.cnf rm -rf /etc/my.cnf 6、检查卸载情况 rpm -qa|grep -i mysql 显示为空,卸载完毕。 卸载完成后参考以下博客进行重新安装mysql并配置不区分大小写: https://blog.csdn.net/qq_35845339/article/details/106547742
Linux 下安装 mysql8(并设置不区分数据库表大小写)
4.nginx 解决前端跨域问题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 server { listen 80; server_name www.yourdomain.com; location / { root /usr/share/nginx/exam; index index.html index.htm; add_header 'Access-Control-Allow-Origin' *; add_header 'Access-Control-Allow-Credentials' 'true' ; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' ; add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type' ; } location /api { include uwsgi_params; proxy_pass http://localhost:3033/api; } }
注意: 设置 proxy_pass 有可能访问当前域名页面会提示 502BadGate 解决办法: 查看系统 httpd 配置:
1 getsebool -a | grep httpd
设置 httpd 可以连接到网络,执行命令:
1 setsebool httpd_can_network_connect on -P
其他: 1.Linux 相关命令: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # 端口进程相关 netstat -anp # 查看端口信息 netstat -anp | grep 3306 # 查看端口信息,过滤3306端口 sudo kill -9 pid号 # 杀死pid对应进程 # springboot相关 nohup java -jar /home/java/exam.jar >exam.log 2>&1 & # 需修改jar包的路径 # nohup:不挂断地运行命令,退出帐户之后继续运行相应的进程。 # exam.log:是nohup把command 的输出重定向到当前目录的指定的“日志文件名.log ”文件中,即输出内容不打印到屏幕上,而是输出到"exam.log" 文件中。不指定文件名会在当前目录创建nohup.out,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME /nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。 # 2>&1:2就是标准错误,1是标准输出,该命令相当于把标准错误重定向到标准输出么。这里&相当于标准错误等效于标准输出,即把标准错误和标准输出同时输出到指定的“exam.log”文件中。 # 最后的&:让该作业在后台运行 # mysql相关 whereis mysql # 显示mysql的安装和文件目录等 systemctl start mysqld # 启动mysql服务 systemctl enable mysqld # 开启mysql服务 systemctl status mysqld # 显示mysql的状态
本人将毕业设计在线考试系统已部署到以下地址:
在线考试系统