My First Server
2021年11月8日
Nov 08

购买1核2G带宽5M腾讯云服务器¥48/年并进行备案

2021年11月12日
Nov 12

备案完成 部署博客 对博客进行魔改+整改

2021年11月25日
Nov 25

成功将SpringBoot项目部署在服务器上

2021年11月29日
Nov 29

通过配置Nginx服务解决前后端项目跨域问题

hexo博客部署

将Hexo部署到阿里云轻量服务器(保姆级教程) | HJX’s Site (hjxlog.com)

hexo部署腾讯云 | Fuchenchenle

浅谈vue项目部署到nginx - 雨中的博客 (coolchong.cn)

  • 连接远程服务器 打开控制台
1
2
3
4
5
6
7
8
9
# 切换用户
$ sudo su root
# 安装git
$ yum install git # Is this ok [y/d/N] $yes
# 创建账户 假设账户名为blog
$ adduser blog
# 添加git账户权限
$ chmod 740 /etc/sudoers
$ vim /etc/sudoers
  • 找到## Allow root to run any commands anywhere
1
2
3
4
5
6
# ......
## Allow root to run any commands anywhere
root ALL=(ALL) ALL # root账户
blog ALL=(ALL) ALL # 手动添加blog账户
# ......
# 点击i进行编辑,修改完成后ESC + :wq保存退出
  • 配置SSH Key
1
2
3
4
5
6
7
8
9
10
# 改回权限
$ chmod 400 /etc/sudoers
# 设置blog账户密码
$ sudo passwd blog
# 需要输入两次密码,在Linux下密码不会显示,输入完回车即可
# 切换至git账户
$ su git
$ mkdir ~/.ssh
$ vim ~/.ssh/authorized_keys
# 将本地计算机生成的公钥复制到文件中,保存退出
  • 赋予文件权限
1
2
chmod 600 /home/blog/.ssh/authorized_keys
chmod 700 /home/blog/.ssh
  • 本地终端测试
1
2
3
4
# 在本地电脑右键"Git Bash Here"
# 输入 ssh -v blog@SERVER_IP
# 其中SERVER_IP为服务器的IP地址
# 若连接成功说明配置正确
  • 在服务器创建博客目录
1
2
3
4
5
6
7
8
9
10
11
$ sudo su root
# 文件夹名称和路径可以自行设置
$ mkdir /blog/repo
# 赋予权限
$ chown -R blog:blog /blog/repo
$ chmod -R 755 /blog/repo
# 创建网站根目录
$ mkdir /blog/hexo
# 赋予权限
$ chown -R blog:blog /blog/hexo
$ chmod -R 755 /blog/hexo
  • 创建git仓库
1
2
3
4
$ cd /blog/repo
$ git init --bare hexo.git
# 新建post-receive文件
$ vim /blog/repo/hexo.git/hooks/post-receive
  • 进入编辑模式将下面的内容添加到文件中
1
2
#!/bin/bash
git --work-tree=/blog/hexo --git-dir=/blog/repo/hexo.git checkout -f
  • 修改权限
1
2
$ chown -R blog:blog /blog/repo/hexo.git/hooks/post-receive
$ chmod +x /blog/repo/hexo.git/hooks/post-receive
  • 配置Nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装Nginx
$ su root
$ yum install -y nginx
# 启动Nginx服务
$ systemctl start nginx.service
# 修改Nginx配置文件
$ vim /etc/nginx/nginx.conf
# ------- Nginx.conf -------
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name xxxxxxx.xxx # 域名
root /blog/hexo # 网站目录
}
# ------- ---------- -------
# 重启Nginx服务
$ systemctl restart nginx.service
  • 本地hexo配置文件
1
2
3
4
deploy: 
type: git
repository: blog@SERVER_IP:/blog/repo/hexo.git # 用户名@服务器IP地址:git仓库位置
branch: master
  • 一键三连&部署成功
1
2
3
$ hexo cl
$ hexo g
$ hexo d

  • 配置HTTPS

SpringBoot项目部署

Environment

  • Operating System:Windows 10
  • SDK version:1.8
  • Java version:8
  • IDEA version:2021.2.1(Ultimate Edition)
  • Server:Tencent CentOS 8

Step

  1. 首先通过IDEA创建Spring Boot项目
  • 填写相应字段后点击NextFinish
  • 注意Java和SDK版本不能高于服务器上的版本(!important)

1

  1. 写一个简单的接口
  • 新建ServerTestController.java文件
  • 文件内容如下所示
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
package com.example.servertest;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping(value = "/api/")
public class ServerTestController {

@Value("${name}")
private String name;

@RequestMapping(value = "/test/")
private Object ServerTest() {
Map<String,String> map=new HashMap<>();
map.put("Name",this.name);
map.put("Success","True");
map.put("Message","Test Passed!");
return map;
}

}
  1. 修改配置文件
  • 打开application.yml文件
  • 修改内容如下所示
  • 声明name变量 - 监听8080端口
1
2
3
name: CheeseburgerIM - ServerTest
server:
port: 8080
  1. 本地运行测试
  • IDEA中启动项目

2

  • 使用浏览器测试接口

3

  1. 使用Maven进行打包
  • 打包后生成的JAR包在target路径下

4

  1. 使用XFTPJAR包放在服务器上
  2. 使用XSHELL启动后端项目
  • 第一个路径填JAR包的路径
  • 第二个路径填输出日志的存放路径
1
$ nohup java -jar /pyz/api/ServerTest.jar >/pyz/api/ServerTestLog.txt 2>&1 &
  1. 使用浏览器进行测试
  • 在浏览器输入IP+:+PORT+/api/test/
  • 若日志文件无报错但是输入接口地址看不到信息,可能是因为服务器的8080端口未开放,去腾讯云官网设置一下就好了

5

至此就成功在服务器上运行了以Spring Boot为框架的简易后端项目

Optional

此处为选做 - 可以将接口所用的IP地址IP地址+端口号用域名来代替

  1. 首先到腾讯云官网添加一个二级域名解析
  • 我这里使用了api.+根域名作为二级域名
  1. 在服务器配置Nginx
  • 打开nginx.conf文件
  • 添加如下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 80;
listen [::]:80;
server_name api.cheeseburgerim.space;
root /pyz/api;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
# proxy to backend project port
proxy_pass http://localhost:8080;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
  1. 重启Nginx服务
1
$ systemctl restart nginx.conf
  1. 现在就可以通过域名访问了
  • 在浏览器输入http://api.cheeseburgerim.space/api/test/

6

Tips

  1. 后台不挂断的运行JAR
1
$ nohup java -jar fileName.jar
  1. 停止运行并无条件关闭进程
1
2
3
4
# 查看8080端口的进程
$ netstat -anp|grep 8080
# 通过进程号关闭进程 xxxxxxx/java
$ kill -9 xxxxxxx
  1. 服务器配置JDK
  • 下载安装
1
$ yum install -y java-1.8.0-openjdk-devel.x86_64
  • 查看路径
1
$ rpm -ql java-1.8.0-openjdk
  • 配置环境变量
1
2
3
4
5
6
7
$ vim /etc/profile
# shift + g 跳转到最后一行
#unset -f pathmunqe 下添加如下内容
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.e17_8.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
# 保存退出
  • 查看版本
1
$ java -version

Nginx解决跨域问题

项目开发中常常将前后端分离,会遇到跨域问题,配置服务器上的Nginx服务可以解决此问题

假设后端项目部署在服务器的8080端口上,并设置了访问域名为api.cheeseburgerim.space

那么在Nginx配置中会包含下面的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80;
listen [::]:80;
server_name api.cheeseburgerim.space;
root /pyz/api;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
proxy_pass http://localhost:8080;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

此时在前端调用接口会遇到跨域问题

location中的添加一条语句即可,修改后的配置文件如下所示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 80;
listen [::]:80;
server_name api.cheeseburgerim.space;
root /pyz/api;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
proxy_pass http://localhost:8080;
add_header Access-Control-Allow-Origin *;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}

搭建Docker环境

转自腾讯云官网——搭建Docker

1
2
# 添加Docker软件源
$ dnf config-manager --add-repo=http://mirrors.tencent.com/docker-ce/linux/centos/docker-ce.repo

7

1
2
# 查看已添加的Docker软件源
$ dnf list docker-ce

8

1
2
# 安装Docker
$ dnf install -y docker-ce --nobest

9

1
2
# 运行Docker
$ systemctl start docker

10

1
2
# 查看安装结果
$ docker info

11

1
2
3
4
# 停止Docker服务
$ systemctl stop docker
# 重启Docker服务
$ systemctl restart docker

配置MySQL环境

使用Docker容器

参考雨中博客——Docker入门笔记2

通过Docker搭建MySQL数据库,暴露在服务器8081端口

1
2
# 下载MySQL最新版本镜像
$ docker pull mysql:latest

12

1
2
3
4
5
6
7
# 创建Docker容器
$ docker run -d -p 8081:3306 -v /pyz/mysql/conf.d:/etc/mysql/conf.d -v /pyz/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1029384756 --name mysqltest mysql
# -d 后台运行
# -p 端口映射
# -v 数据卷挂载
# -e 环境配置,这里配置了mysql的账户密码
# --name 容器命名

13

之后可以在本地使用navicatIDEA尝试连接数据库

14

连接成功

原生MySQL配置