在配了四次环境后, 终于想起来记录一下环境的配置流程, 免得下次配置又全网乱搜资料

系统环境: ubuntu 20.04

需要打开的端口: 80, 443, 3306, 6379, 27017

创建用户

首先创建一个用户, 为了方便, 我们直接给这个新用户 sudo 权限

# 在root用户下
useradd -r -m -s /bin/bash guochenxu
adduser guochenxu sudo
passwd guochenxu

# 在新创建的账号下检查是否有sudo权限
sudo -l

安装 java

直接用 apt 安装即可, 先更新一下 apt 的包

sudo apt-get upgrade
sudo apt update

安装 java8

sudo apt install openjdk-8-jdk
java -version # 验证

安装 maven

sudo apt install maven
mvn -version

修改为国内镜像源

sudo vim /etc/maven/settings.xml

<mirrors> 标签内添加:

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>

安装 Mysql

先用 apt 安装 mysql8

sudo apt-get install mysql-server

设置 root 用户密码和远程登录

# 先进入mysql命令行, 第一次没有密码直接回车即可, 这里需要加个sudo
sudo mysql -u root -p

# mysql命令行下
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';
# 上述命令如果不行的话可以加个指定鉴权的插件
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

# 退出后再次登录, 这次输入密码
exit
mysql -u root -p

# mysql命令行下
use mysql;
update user set host='%' where user='root';
flush privileges;

如果还是无法远程登录的话可能需要改下配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf 并重启服务

bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0

安装 Redis

安装

sudo apt install redis-server

在配置文件/etc/redis/redis.conf中找到 # requirepass foobared 取消注释

requirepass 你的密码

同样在配置文件中找到 bind 127.0.0.1 ::1, 修改为

bind 0.0.0.0 ::0

重启一下

sudo systemctl restart redis-server

安装 MongoDB

mongodb 的安装比较麻烦, 需要先导入公钥和添加软件源,这里我们安装的 mongo6,其他版本和操作系统参见清华源

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/mongodb/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

再次更新 apt 软件包并安装

sudo apt-get update
sudo apt-get install -y mongodb-org

先设置可以远程连接, 找到/etc/mongod.conf, 修改配置

net:
    port: 27017
    bindIp: 0.0.0.0

然后重启

sudo systemctl restart mongod

重启以后查看一下状态, 如果启动失败且报错代码为 14, 可以试一下将下列文件夹所有者改为 mongodb

sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chown -R mongodb:mongodb /var/log/mongodb
sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

远程使用 idea(或者其他工具)连接后, 进入 mongo 命令行界面, 创建管理员账户并设置密码

use admin
db.createUser({ user: "admin", pwd: "密码", roles: [ { role: "root", db: "admin" } ] })

再去配置文件中修改使用密码验证

security:
    authorization: enabled

再次重启

sudo systemctl restart mongod

安装 Nginx

依旧是简单的 apt 安装

sudo apt install nginx

使用ip:80在浏览器访问, 看到欢迎页面即为安装成功

以配置test.chenxutalk.top域名为例,在/etc/nginx/conf.d目录下创建对应配置文件test.conf,具体配置如下:

server {
    listen       80;
    listen       [::]:80;
    server_name test.chenxutalk.top;

    root /home/front/test; # 映射目录

    include /etc/nginx/default.d/*.conf;

    # 设置跨域配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS always;
    add_header Access-Control-Allow-Credentials true always;
    add_header Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token always;
    add_header Access-Control-Max-Age 1728000 always;

    # 预检请求处理
    if ($request_method = OPTIONS) {
        return 204;
    }

    location / {
        root /home/front/test;
        try_files $uri $uri/ /index.html; # 解决页面刷新404问题
        index  index.html index.htm;
    }

    location /api {
        # 设置 Nginx 不对 SSE 响应进行缓冲,直接透传给客户端
        proxy_buffering off;
        # 设置代理读取服务器响应的超时时间
        proxy_read_timeout 24h;
        # 设置客户端连接的超时时间
        proxy_connect_timeout 1h;
        # 设置 HTTP 版本,SSE 需要 HTTP/1.1
        proxy_http_version 1.1;
        # 保持连接活性,不发送连接关闭的信号
        proxy_set_header Connection '';
        # 配置代理传递的头部,确保 Host 头部正确传递
        proxy_set_header Host $host;
        # 设置代理的响应头部,保持传输编码为 chunked
        proxy_set_header X-Accel-Buffering no;
        proxy_pass  http://localhost:26830; # 这里是设置反向代理到对应的后端
    }

    error_page 404 /404.html;
    location = /40x.html {
        root   /home/front/test;
    }

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

在上述配置文件中的映射目录下放置一个index.html文件,然后可以使用certbot 配置 ssl 即可