惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
L
LangChain Blog
博客园_首页
Recent Announcements
Recent Announcements
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Hackread – Cybersecurity News, Data Breaches, AI and More
爱范儿
爱范儿
博客园 - 叶小钗
博客园 - 【当耐特】
The Cloudflare Blog
J
Java Code Geeks
G
Google Developers Blog
云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans

Chenxu's Blog

写出一份好的代码 linux 的基本操作 启动我的服务 更舒适地写代码(含学生白嫖指南) RAG检索优化:从 68% 到 82.2% 学习深度学习 北邮计算机研究生选课指北 学习机器学习 上海篇 提出一个好问题 写代码的环境 选购一台合适的设备 计算机的第零课 序言 内蒙古篇 山东篇 一篇对transformers的疑惑 浅析GPUStack 浅谈后端项目分层 浙江篇 河南篇 一些三端协同的开发工具记录 浅谈编程语言中的 GC 在 Windows 上安装 Rust 美化博客 消息队列 MyBatis 现代交换原理2024年题目 回忆版 北邮计科本科课程指北 ClkLog埋点用户分析系统研究报告 大数据梧桐实验分享
服务器环境配置
Chenxu · 2024-04-03 · via Chenxu's Blog

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

系统环境: 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 取消注释

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

重启一下

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 安装

使用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 即可