ubuntu22安装redis、pg数据库并配置

103 阅读4分钟

服务器环境

华为云服务器,ubuntu(22.04.4)

Macos nano操作快捷键

ctrl + w 搜索

option + w 向后搜索

option + q 向前搜索

ctrl + a 跳到行首

ctrl + e 跳到行尾

ctrl + y 翻页上一页

ctrl + v 翻页下一页

ctrl + s 保存

ctrl + x 退出

ctrl + k 删除光标行

ctrl + 6 光标标记开始,滑动鼠标 ctrl + k 就可以实现选中删除了

安装nodejs

访问nodesource进行安装,比如下面的node20版本:

deb.nodesource.com/

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs

安装pnpm

# 安装pnpm
npm i -g pnpm 

# 设置pnpm环境变量
pnpm setup PNPM_HOME=/pnpm

# 环境变量生效
source /root/.bashrc

安装turbo-cli

pnpm i -g turbo

强密码生成

1password.com/zh-cn/passw…

安装pg

# 更新包列表
sudo apt update

# 安装PostgreSQL和postgresql-contrib(包含一些额外的实用工具和功能)
sudo apt install postgresql postgresql-contrib

# 启动PostgreSQL服务
sudo systemctl start postgresql.service

# 设置PostgreSQL在系统启动时自动启动
sudo systemctl enable postgresql.service

1.配置pg用户

# 1.切换到postgres用户
sudo -i -u postgres

# 2.访问PostgreSQL命令行界面
psql

# 3. 为'postgres'用户设置密码
ALTER USER postgres PASSWORD 'your_strong_password';

# 4. 创建新用户并设置密码(可选)
CREATE USER your_username WITH PASSWORD 'your_strong_password'; 

# 如果您想让这个新用户成为超级用户,可以使用(可选): 
ALTER USER your_username WITH SUPERUSER;

# 5.退出PostgreSQL命令行界面
\q

# 6.返回到你的普通用户
exit

# 7.重启 PostgreSQL 服务以应用更改 
sudo systemctl restart postgresql

2.配置Pg远程连接

# 1.编辑PostgreSQL配置文件 
sudo nano /etc/postgresql/[version]/main/postgresql.conf 

# 2.在配置文件中找到并修改以下行: 
listen_addresses = '*'

# 3.编辑pg_hba.conf文件以允许远程连接 
sudo nano /etc/postgresql/[version]/main/pg_hba.conf

# 4.在文件末尾添加以下行(根据需要调整IP地址范围): 
# 主机  用户   数据库   地址       验证方式
host   all   all    0.0.0.0/0    md5

# 5.保存、退出

# 6.重启PostgreSQL服务 
sudo systemctl restart postgresql

# 7.在客户端使用psql连接(替换为您的实际值): 
psql -h [服务器IP] -U [用户名] -d [数据库名]

安装redis

# 更新包列表
sudo apt update

# 安装Redis
sudo apt install redis-server

# 启动Redis服务
sudo systemctl start redis-server

# 设置Redis在系统启动时自动启动
sudo systemctl enable redis-server

# 检查Redis是否正在运行
sudo systemctl status redis-server

# 使用Redis命令行界面
redis-cli

# 测试Redis是否正常工作
ping

# 如果返回PONG,则说明Redis正常工作
# 退出Redis命令行界面
exit

配置redis远程连接

# 编辑Redis配置文件
sudo nano /etc/redis/redis.conf

# 找到并修改以下行:
bind 127.0.0.1

# 将其改为:
bind 0.0.0.0

# 如果您想增加安全性,设置密码:
requirepass [your_strong_password]

# 保存并退出

# 重启Redis服务
sudo systemctl restart redis-server

# 确保防火墙允许Redis端口(默认6379)
sudo ufw allow 6379/tcp

# 在客户端使用redis-cli连接(替换为您的实际值):
redis-cli -h [服务器IP] -p 6379 -a [your_password]

安装minio

# 下载MinIO
wget https://dl.min.io/server/minio/release/linux-amd64/minio

# 使MinIO可执行
chmod +x minio

# 移动MinIO到/usr/local/bin/
sudo mv minio /usr/local/bin/

# 创建MinIO的数据目录
sudo mkdir /minio

# 创建MinIO的配置目录
sudo mkdir /etc/minio

# 创建MinIO服务文件
sudo nano /etc/systemd/system/minio.service

# 在服务文件中添加以下内容:
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local/

User=minio-user
Group=minio-user

EnvironmentFile=/etc/default/minio
# 加载配置
ExecStart=/usr/local/bin/minio server $MINIO_OPTS /minio
# 或者不加载配置,直接跟参数
# ExecStart=/usr/local/bin/minio server /minio --console-address ":9001" 

Restart=always
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

# 创建MinIO的环境文件
sudo nano /etc/default/minio

# 在环境文件中添加以下内容:
# 9000是访问地址,9001是web ui访问地址
MINIO_OPTS="--address :9000 --console-address :9001"
MINIO_ROOT_USER=minioadmin(默认管理账号)
MINIO_ROOT_PASSWORD=minioadmin(默认管理账号)

# 创建MinIO用户
sudo useradd -r minio-user -s /sbin/nologin

# 更改MinIO数据目录的所有权
sudo chown minio-user:minio-user /minio

# 启动MinIO服务
sudo systemctl start minio

# 设置MinIO服务开机自启
sudo systemctl enable minio

nginx反向代理

需要注意:如果想一个域名代理下面2个端口,我自己测试是9001端口会访问不到资源,后面拆分为2个域名(或者只代理9001端口后就正常了)

还有个小问题就是配置好https以后,访问9001端口的域名,发现控制台一直提示ws的连接失败,但是用http的ip+端口访问就没问题。后来查询资料,是需要配置一下ws支持。参考链接:github.com/minio/minio…

# 安装Nginx (如果尚未安装)
sudo apt update
sudo apt install nginx

# 创建Nginx配置文件
sudo nano /etc/nginx/sites-available/minio

# 在配置文件中添加以下内容:
server {
    listen 80;
    # your_domain.com修改为自己的服务器域名
    server_name your_domain.com(需要修改);

    # 将HTTP请求重定向到HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain.com(需要修改);

    # SSL证书配置
    ssl_certificate /path/to/your/fullchain.pem(需要修改);
    ssl_certificate_key /path/to/your/privkey.key(需要修改);

    # MinIO API
    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://localhost:9000;
    }

    # MinIO Console
    #location /minio {
        #proxy_set_header Host $http_host;
        #proxy_set_header X-Real-IP $remote_addr;
        #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #proxy_set_header X-Forwarded-Proto $scheme;
        #proxy_set_header X-NginX-Proxy true;

        # This is necessary to pass the correct IP to be hashed
        #real_ip_header X-Real-IP;

        #proxy_connect_timeout 300;
        
        # To support websocket
        #proxy_http_version 1.1;
        #proxy_set_header Upgrade $http_upgrade;
        #proxy_set_header Connection "upgrade";
        
        #chunked_transfer_encoding off;

        #proxy_pass http://localhost:9001;
    #}
}

### TODO: 注意:这里暂时是拆分9001端口给另一个域名处理:
server {
    listen 80;
    # your_domain.com修改为自己的服务器域名
    server_name your_domain.com(需要修改);

    # 将HTTP请求重定向到HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain.com(需要修改);

    # SSL证书配置
    ssl_certificate /path/to/your/fullchain.pem(需要修改);
    ssl_certificate_key /path/to/your/privkey.key(需要修改);

    # MinIO Console
    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-NginX-Proxy true;

        # This is necessary to pass the correct IP to be hashed
        real_ip_header X-Real-IP;

        proxy_connect_timeout 300;
        
        # TODO: 支持 websocket,不然可能会遇到控制台一直打印ws连接失败
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        chunked_transfer_encoding off;

        proxy_pass http://localhost:9001;
    }
}

# 创建符号链接以启用配置
sudo ln -s /etc/nginx/sites-available/minio /etc/nginx/sites-enabled/

# 测试Nginx配置
sudo nginx -t

# 如果测试通过,重启Nginx
sudo systemctl restart nginx