SpringBoot项目部署到服务器
1.购买服务器
由于我是自己玩,所以我领了一个月的使用华为云。如果你们也想领取的话可以去华为云官网抢(每天9点开始发放)
这是我领取的华为云服务器,镜像的话建议大家选择CentOS,版本任意即可。
2.终端工具连接服务器
由于重置过系统,所以当你用ssh命令去连接服务器的时候产生一个warning。所以我们要用另外一条指令。
当然如果你是刚购买的,是不需要用下面的命令去获取认证的。
#使用ssh登录服务器
➜ ~ ssh root@124.70.212.164
# ssh-keygen -R 你的服务器地址(公网地址),来帮你获取认证
➜ ~ ssh-keygen -R 124.70.212.164
➜ ~ ssh root@124.70.212.164
[root@hecs-x-medium-2-linux-20200722093047 ~]#
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gB0eOg2r-1596952980417)(/Users/macro/Library/Application Support/typora-user-images/image-20200808155412572.png)]
3.YUM安装JAVA环境
当然新购买的服务器是没有安装JDK的,所以我们就直接跳过检测安装java环境
# 使用yum安装安装jdk1.8.0的所有文件
[root@hecs-x-medium-2-linux-20200722093047 ~]# yum install -y java-1.8.0-openjdk*
# 查看安装的java是否成功,并且安装的java版本,如果跟我一样有下面的提示那么就安装成功了
[root@hecs-x-medium-2-linux-20200722093047 ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
4.YUM安装MYSQL
系统: CentOS 7(在CentOS 7中默认有安装MariaDB,这个是mysql的分支,一般来说还是使用自己安装的MySQL比较好)
4.1 下载并安装MySQL
# wget下载MySQL的rpm包
wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 安装MySQL的rpm
yum -y install mysql80-community-release-el7-3.noarch.rpm
# 安装MySQL的server
yum -y install mysql-community-server
4.2 启动MySQL
# 启动MySQL服务
systemctl start mysqld.service
# 查看MySQL服务
systemctl status mysqld.service
4.3 查看登陆MYSQL的root密码
grep "password" /var/log/mysqld.log
4.4 登陆MySQL
mysql -uroot -p
此时,你需要给你的MySql重新设置密码,因为MySQL默认的就是必须修改密码后才能操作数据库。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Left@zuo123.';
设置密码的时候需要遵守MySQL密码设置规范,如果不符合规范是不能修改成功的。
如下图,我将密码设置为123456,它提示我 密码不符合规范
总之呢,我们先将密码设置成比较复杂的就好,比如 Abc@123…,先登录了再说。
如果想要设置简单好记的密码,可以修改密码设置规范,毕竟你不登录你就不能修改规范。
查看密码规范
SHOW VARIABLES LIKE 'validate_password%';
密码的长度是由validate_password_length决定的,而validate_password_length的计算公式是:
validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
这时候我们将密码设置规范修改一下:
set global validate_password.policy=0;
set global validate_password.length=1;
最后一步,设置允许远程连接。
如果直接使用命令:GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY 'password**’;** 会提示一个语法错误,有人说是mysql8的分配权限不能带密码隐士创建账号了,要先创建账号再设置权限。也有的说8.0.11之后移除了grant 添加用户的功能。
创建新用户 admin
创建用户:CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
允许远程连接:GRANT ALL ON *.* TO 'admin'@'%';
本人测试过,使用 update user set host = '%' where user = 'root'; 也可以修改
如果使用客户端连接提示了plugin caching_sha2_password错误,这是因为MySQL8.0的密码策略默认为caching_sha2_password
使用命令修改策略
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
箭头指的两个用户是我修改过的
然后关闭防火墙,测试连接成功!!
5. YUM安装Nginx
5.1 安装依赖
#gcc安装,nginx源码编译需要
yum install gcc-c++
#PCRE pcre-devel 安装,nginx 的 http 模块使用 pcre 来解析正则表达式
yum install -y pcre pcre-devel
#zlib安装,nginx 使用zlib对http包的内容进行gzip
yum install -y zlib zlib-devel
#OpenSSL 安装,强大的安全套接字层密码库,nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http)
yum install -y openssl openssl-devel
5.2 下载Nginx
#下载版本号可根据目前官网最新稳定版自行调整
wget -c https://nginx.org/download/nginx-1.16.1.tar.gz
5.3 安装Nginx
#根目录使用ls命令可以看到下载的nginx压缩包,然后解压
tar -zxvf nginx-1.16.1.tar.gz
#解压后进入目录
cd nginx-1.16.1
#使用默认配置
./configure
#编译安装
make
make install
#查找安装路径,默认都是这个路径
[root@VM_0_12_centos ~]# whereis nginx
nginx: /usr/local/nginx
#启动、停止nginx
cd /usr/local/nginx/sbin/
./nginx #启动
./nginx -s stop #停止,直接查找nginx进程id再使用kill命令强制杀掉进程
./nginx -s quit #退出停止,等待nginx进程处理完任务再进行停止
./nginx -s reload #重新加载配置文件,修改nginx.conf后使用该命令,新配置即可生效
#重启nginx,建议先停止,再启动
./nginx -s stop
./nginx
#查看nginx进程,如下返回,即为成功
[root@VM_0_12_centos ~]# ps aux|grep nginx
root 5984 0.0 0.0 112708 976 pts/1 R+ 14:41 0:00 grep --color=auto nginx
root 18198 0.0 0.0 20552 612 ? Ss 11:28 0:00 nginx: master process ./nginx
nobody 18199 0.0 0.0 23088 1632 ? S 11:28 0:00 nginx: worker process
直接访问服务器的IP,如果出现如上画面说明成功
5.4 查看nginx.conf配置文件
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
#监听80端口
listen 80;
#域名配置
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
5.5 修改nginx.conf文件,配置多级域名
server {
listen 80;
server_name www.jhappylife.cn;
location / {
root http://127.0.0.1:9002;
index index.html index.htm;
}
}
server {
listen 80;
server_name blog.jhappylife.cn;
location / {
root /root/webapp/blog;
index index.html index.htm;
}
}
server {
listen 80;
server_name blogadmin.jhappylife.cn;
location / {
root /root/webapp/blogadmin;
index index.html index.htm;
}
}
5.6Nginx配置Vue项目
server {
listen 80;#默认端口是80,如果端口没被占用可以不用修改
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
root E:/vue/my_project/dist;#vue项目的打包后的dist
location / {
try_files $uri $uri/ @router;#需要指向下面的@router否则会出现vue的路由在nginx中刷新出现404
index index.html index.htm;
}
#对应上面的@router,主要原因是路由的路径资源并不是一个真实的路径,所以无法找到具体的文件
#因此需要rewrite到index.html中,然后交给路由在处理请求资源
location @router {
rewrite ^.*$ /index.html last;
}
}
5.7配置https
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
server {
listen 80;
listen 443 ssl;
server_name www.51kk.live;
#ssl on;
ssl_certificate /etc/letsencrypt/live/www.51kk.live/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.51kk.live/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:9002;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server{
listen 80;
listen 443 ssl;
server_name admin.51kk.live;
#ssl on;
ssl_certificate /etc/letsencrypt/live/admin.51kk.live/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/admin.51kk.live/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
root /home/apps/vuecliprj/dist;
location / {
try_files $uri $uri/ @router;
index index.html index.htm;
}
location @router{
rewrite ^.*$/index.html last;
}
location /admin/{
rewrite ^/admin/(.*) /$1 break;
proxy_pass http://127.0.0.1:9002;
}
}
server{
listen 80;
listen 443 ssl;
server_name images.51kk.live;
#ssl on;
ssl_certificate /etc/letsencrypt/live/images.51kk.live/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/images.51kk.live/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location /{
root /home/projects/wohuo/;
autoindex on;
}
}
server{
listen 80;
server_name *.51kk.live;
rewrite ^(.*)$ https://$host$1 permanent;
}
}