技术笔记close
技术笔记技术笔记
2026-05-22

Ubuntu服务器部署

## ✍️ Ubuntu 服务器上部署个人网站 ##### 1. 首先切换到 root 超级管理员用户,输入管理员密码 ```bash su root ``` ##### 2. 创建用户,设置密码,赋予 sudo 权限,切换到这个用户 ```bash adduser username usermod -aG sudo username su - username ``` ##### 3. 更新软件包 ```bash sudo apt update && sudo apt upgrade -y ``` ##### 4. 在 home 目录下创建文件夹,用于存储项目文件 ```bash mkdir -p /app/backend mkdir -p /app/frontend ``` ##### 5. 安装环境 ```bash # 安装build-essential,curl,git,vim编辑器 sudo apt install -y build-essential curl git vim # Linux可能内置python,先查看有没有python,有则跳过这一步 sudo apt install -y python3 python3-pip python3-venv # 安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash # nvm变量写入系统变量,执行后使nvm命令生效 source ~/.bashrc # 安装nodejs nvm install 22.14.0 # 使用22.14.0版本的node nvm use 22.14.0 # 全局安装pm2进程管理器 npm install -g pm2 # 设置pm2自动开机启动,执行命令后会生成一条命令,然后复制生成的命令执行即可 pm2 startup ``` ##### 6. 安装和配置 MySql ```bash # 安装MySQL sudo apt install -y mysql-server # 启动并设置开机自启 sudo systemctl start mysql sudo systemctl enable mysql # 查看mysql运行状态 sudo systemctl status mysql # 1. 安全初始化 sudo mysql_secure_installation # 1) 启动密码验证强度 N # 2) 设置root密码 Y 可能没有这一步 # 3) 移除匿名用户 Y # 4) 禁止root远程登录 Y # 5) 移除test数据库 Y # 6) 重新加载权限表 Y # 2. 登录MySQL # 执行后输入刚才设置的密码 sudo mysql -u root -p # 如果上面没有设置密码,则执行sudo mysql # 然后再给root用户设置密码 # ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; # 刷新权限 # FLUSH PRIVILEGES; # 退出 # exit; # 3. 创建数据库 创建用户 授权该用户 刷新权限 退出 CREATE DATABASE my_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 创建用户(只允许本地访问,更安全)如果想远程连接数据库 localhost设置成%即可 CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY '你的强密码'; # 授权该用户拥有 my_db 全部权限 GRANT ALL PRIVILEGES ON my_db.* TO 'myapp_user'@'localhost'; # 刷新权限 FLUSH PRIVILEGES; # 退出 exit; # 4. 测试连接 mysql -u myapp_user -p -h localhost my_db # 以下配置是开放MySQL远程连接 # 1. 放行防火墙端口 3306 sudo ufw allow 3306/tcp sudo ufw reload # 2. 修改配置文件 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 找到bind-address = 127.0.0.1 后面地址改为 0.0.0.0 # 3. 重启MySQL sudo systemctl restart mysql ``` ##### 7. 安装 Redis 和配置 Redis ```bash sudo apt update sudo apt install -y redis-server sudo systemctl status redis-server sudo vim /etc/redis/redis.conf # 让 systemd 管理(Ubuntu 必须) supervised systemd # 设置密码(最重要) requirepass foobared 改成 requirepass 你的Redis密码 # 保护模式(有密码可关闭,无密码必须开) protected-mode yes # 允许本地访问(安全) bind 127.0.0.1 ::1 bind 127.0.0.1 # 除非你要外网连 Redis,否则千万别改成 0.0.0.0,非常危险! # 关闭危险模式 protected-mode yes # 禁止外网访问(推荐) daemonize yes # 重启 Redis 让配置生效 sudo systemctl restart redis-server # 测试 Redis 是否正常 redis-cli # 进入后输入 auth 你的Redis密码 set test 123 get test # 能拿到 123 就说明正常 # 开机自启(服务器必开) sudo systemctl enable redis-server # 如果需要远程连接 Redis(不推荐暴露公网) sudo vim /etc/redis/redis.conf 把 bind 127.0.0.1 改成 bind 0.0.0.0 # 防火墙放行 6379 端口 sudo ufw allow 6379/tcp # 重启 sudo systemctl restart redis-server ``` ##### 8. 安装和配置 Nginx ```bash sudo apt install -y nginx # 启动并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx # 创建项目站点配置文件 sudo vim /etc/nginx/sites-available/app # 配置代码 server { listen 80; server_name xxx.com; location / { proxy_pass http://127.0.0.1:3000; # 前端端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } location /api/v1 { proxy_pass http://127.0.0.1:8000; # 后端端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } # 启用站点 sudo ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/ # 删除默认配置 sudo rm /etc/nginx/sites-enabled/default # 测试语法 sudo nginx -t # 如果输出 syntax is ok 则继续 # 重启Nginx sudo systemctl reload nginx # 访问网站,如果出现nginx,则说明nginx代理成功 # Nginx隐藏版本号 sudo vim /etc/nginx/nginx.conf # 修改下面内容 http { # 隐藏版本号 server_tokens off; ...原有配置不变 } # 测试 sudo nginx -t # 重启nginx sudo systemctl reload nginx ``` ##### 9. 配置 Git 拉取项目源代码(可选) ```bash ssh-keygen -t ed25519 -C "你的GitHub邮箱" # 如果提示不支持 ed25519,用这个: ssh-keygen -t rsa -b 4096 -C "你的GitHub邮箱" # 输出密钥后复制 cat ~/.ssh/id_ed25519.pub # 打开 GitHub → 右上角头像 → Settings,左侧 SSH and GPG keys # 点 New SSH key,Title 随便填(如:我的电脑),Key 类型选 Authentication key # 把刚才复制的公钥粘贴进去,点 Add SSH key # 测试连接github ssh -T git@github.com git clone git@github.com:用户名/仓库名.git # python创建虚拟环境 sudo python3 -m venv .venv # 激活虚拟环境 source .venv/bin/activate # 安装依赖 pip install -r requirements.txt ``` ##### 10. 配置 pm2 运行项目 ```bash # fastapi项目虚拟环境中执行 pm2 start "uvicorn main:app --host 0.0.0.0 --port 8000" --name "fastapi" # nextjs项目运行 # 打包 npm run build # 启动项目 pm2 start "npm start" --name "nextjs" ``` ##### 11. 配置 HTTPS  SSL证书 (免费) ```bash # 安装 Certbot apt install certbot python3-certbot-nginx # 获取 SSL 证书,自动配置 Nginx certbot --nginx -d your_domain.com # 测试自动更新功能,以确保证书定期更新 certbot renew --dry-run ```

标签Linux