G
N
I
D
A
O
L

本文档是记录使用阿里云服务器搭建自己的网站和应用的使用记录

系统:Centos7.6

内核:3.10.0-1160.49.1.el7.x86_64

# 1. 配置 PS1 及命令别名

在自己的家目录下的 .bashrc 文件里添加:

# 定制自己的快捷命令
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias cls='clear'
# 设置提示符
PS1="[\[\e[36;40m\]\u@\[\e[31;40m\]\h \[\e[33;40m\]\w\[\e[0m\]]\$ "

运行一下该文件:

source ~/.bashrc

# 2. 安装 jdk8

# 2.1 官网下载 jdk8

  • 清华大学镜像:OpenJDK
  • Oracle 官网,需登录:OracleJDK

# 2.2 解压

tar -zxvf [压缩包] -C [解压目录]

# 2.3 配置环境变量

vim /etc/profile,在最后添加以下内容:

JAVA_HOME=[解压后的jdk根目录]
PATH=${JAVA_HOME}/bin:$PATH
export JAVA_HOME PATH

运行 profile 文件:

source /etc/profile

# 3. 安装 docker 容器

参考链接: https://www.cnblogs.com/yufeng218/p/8370670.html

安装 docker 需要使用 root 权限

  • 先更新 yum 包
sudo yum update
  • 卸载旧版本
sudo yum remove docker  docker-common docker-selinux docker-engine
  • 安装需要的软件包, yum-util 提供 yum-config-manager 功能,另外两个是 devicemapper 驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  • 设置 yum 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 可以先查看所有仓库中所有 docker 版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
  • 安装 docker
#由于 repo 中默认只开启 stable 仓库,故这里安装的是最新稳定版
sudo yum install docker-ce
  • 启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
  • 查看 docker 的版本
docker version
  • 至此,docker 安装成功!
    1639722769217

# 4. 使用 docker 安装 mysql

docker 命令参考:https://www.runoob.com/docker/docker-command-manual.html

  • 安装
docker search mysql #搜索 mysql 库中的版本
docker pull mysql   #安装最新版稳定版的 mysql
docker iamges       #查看 docker 已安装的镜像(软件)
  • 启动 mysql,并映射到本地的 3306 端口
# 通过镜像运行软件
docker run mysql[:版本号,默认为最新版] -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=[你的密码]
# 查看 docker 中正在运行的软件
docker ps
  • 进入 mysql,并配置远程登录用户
# 以交互模式进入 mysql
docker exec -it mysql bash
# 以下命令都是在 docker 控制台运行的
mysql -u root -p # 回车后,输入你刚刚设置的额 mysql root 用户的密码即可
# 创建 mysql user,并设置成远程可登录及远程登录密码
create user '用户名'@'%' identified by '用户密码';
# 赋予权限
grant all on *.* to '用户名'@'%' identified by '用户密码';
#刷新权限池
flush privileges;
  • 至此,就可以通过【本机的 ip + 3306 端口 + 远程登录用户和密码】就能远程连接 MySQL 了!
    1639723789905

# 5. 运行 jar

nohup java -jar [你的jar包] > [输出文件(日志)] 2>&1 &
  • 2>&1 解释:
    1639724589863

  • 查看输出文件:

tail -f [输出文件]
  • 验证服务是否启动成功:
ps aux | grep java

# 6. 安装 nginx

nginx 服务器是一个轻量级的、操作方便,可实现正向和反向代理,基本每个开发者都不会陌生的一个 web 服务器。本文以压缩包安装为例!

官网:https://nginx.org/en/

中文文档:https://www.nginx.cn/doc/

# 6.1 安装

yum install nginx

# 6.2 配置

配置代理,找到配置文件 /etc/nginx/nginx.conf ,找到 server 模块:
1640678397202

# 6.3 相关命令

# 重启 / 启动 / 停止 / 查看状态
systemctl restart/start/stop/status nginx
# 重新加载配置文件
nginx -s reload 
nginx -s reopen #重启 Nginx
nginx -s reload #重新加载 Nginx 配置文件,然后以优雅的方式重启 Nginx
nginx -s stop #强制停止 Nginx 服务
nginx -s quit #优雅地停止 Nginx 服务(即处理完所有请求后再停止服务)
nginx -t #检测配置文件是否有语法错误,然后退出
nginx -?,-h #打开帮助信息
nginx -v #显示版本信息并退出
nginx -V #显示版本和配置选项信息,然后退出
nginx -t #检测配置文件是否有语法错误,然后退出
nginx -T #检测配置文件是否有语法错误,转储并退出
nginx -q #在检测配置文件期间屏蔽非错误信息
nginx -p prefix #设置前缀路径 (默认是:/usr/share/nginx/)
nginx -c filename #设置配置文件 (默认是:/etc/nginx/nginx.conf)
nginx -g directives #设置配置文件外的全局指令
killall nginx #杀死所有 nginx 进程

# 6.4 可能遇到的问题

  • 能访问 index 页面,根据路由也进入下一个页面,但是在路由到的页面上刷新会出现 404,需要在 nginx 配置文件中加入,通过路由进行导航:
server {
  	listen       80;
      listen       [::]:80;
      server_name  _;
      root         /usr/share/nginx/html/guan-web;
      **try_files $uri $uri/ /index.html;** --- 防止刷新页面出现404
  
      # Load configuration files for the default server block.
      include /etc/nginx/default.d/*.conf;
  
      location /auth-local {
          proxy_pass      http://127.0.0.1:8000/;
  	}
  
      location /favorite-api {
          proxy_pass      http://127.0.0.1:9000/;
  	}
  
      error_page 404 /404.html;
          location = /404.html {
  	}
  
      error_page 500 502 503 504 /50x.html;
          location = /50x.html {
  	}
  }

# 7. 使用 docker 安装 redis

参考链接:https://cloud.tencent.com/developer/article/1670205

redis 官网:http://www.redis.cn/

# 获取镜像
docker pull redis
# 启动
docker run -p 6379:6379 --name redis -v /usr/local/soft/redis/redis.conf:/etc/redis/redis.conf  -v /usr/local/soft/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
#查看启动日志
docker logs redis
#交互运行
docker exec -it redis redis-cli

1642400521245

  • redis.conf 配置文件:
bind 127.0.0.1 			#注释掉这部分,使redis可以外部访问
daemonize no   			#用守护线程的方式启动
requirepass 你的密码	 #给redis设置密码
appendonly yes 		    #redis持久化  默认是no
tcp-keepalive 300       #防止出现远程主机强迫关闭了一个现有的连接的错误 默认是300

# 8. 配置 jar 包启动 | 关闭 | 重启的 shell 脚本

启动脚本在开发和测试阶段还是很方便的,可大大提升开发效率,因为这样可以不用每次提交代码后去手动敲复杂的启动命令

#!/bin/bash
#替换为你自己的执行 jar 包,其他代码无需更改
APP_NAME=guan-auth-1.0.jar
# 第三方 jar 包所在路径
CLASS_LIB_PATH=/root/workspace/myjars/lib/
JAR_PATH=/root/workspace/myjars/auth
OUT_FILE=/root/workspace/logs/auth/guan-auth.out
#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 脚本名.sh [start|stop|restart|status]"
    exit 1
}
#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回 1,存在返回 0
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}
#启动方法
start() {
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
  	# 因为在打包时,把所有的第三方 jar 全部抽取出来了(减少打包的体积),所以启动的时候需要加上 -Dloader.path 参数
    nohup java -Dloader.path=$CLASS_LIB_PATH -jar $JAR_PATH/$APP_NAME > $OUT_FILE 2>&1 &
    echo "${APP_NAME} start success"
  fi
}
#停止方法
stop() {
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi
}
#输出运行状态
status() {
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}
#重启
restart() {
  stop
  start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac
# 参考: https://www.cnblogs.com/chywx/p/10460061.html
  • 使用

    sh [你的脚本] [restart|stop|start|status]
  • 在 idea 中配置插件 Alibaba Cloud Tookit 自动部署运行如下图:
    1651286494771