在Ubuntu上部署Nginx服务器,保姆级教程!
前后端项目要想正常访问不可避免地就是部署服务器常见的Linux系统就有Ubuntu。对于一个新手就会遇到很多问题。
1.连接Xshell
如果不使用Xshell可以直接用命令行直接看下一步就行;
官网下载:https://www.xshell.com/zh/xshell/
下载完通过IP
+端口
+登录用户
+登录用户密码
连接,通过ip a
获取IP
2.安装Nginx
1.在安装任何软件之前,先更新你的软件包列表以确保你安装的是最新的版本。
我这里使用的是xshell远程使用命令行同样的可以直接在终端运行没有影响。
sudo apt update
运行结果:
2.直接通过命令安装
sudo apt install nginx
3.安装完成后通过sudo systemctl status nginx
检测Nginx运行状态;
效果如图:
绿色表示正在运行
4.更新防火墙规则
sudo ufw allow 'Nginx Full'
5.查看防火墙运行状态
sudo ufw status
6.查看Nginx是否正常运行
首先我们需要获取本机的IP地址在命令行输入ip a
获取IP地址;
我们会得到一段结果需要的是192.168.xxx.xxx
的内容就是我们的IP地址。
这时候我们就能直接在浏览器通过http://IP地址
直接访问如果看到欢迎页表示成功。
3.设置Nginx配置文件
Nginx 的配置文件位于 /etc/nginx/ 目录下。主要配置文件是 nginx.conf,虚拟主机配置文件位于 /etc/nginx/sites-available/ 和 /etc/nginx/sites-enabled/。
我们先创建两个文件夹分别用于存放前端和后端的项目文件方便管理
前端路径sudo mkdir -p /var/www/vue
后端路径sudo mkdir -p /var/www/springboot
再创建一个新的虚拟主机配置文件
在 /etc/nginx/sites-available/ 目录下创建一个新配置文件:
sudo nano /etc/nginx/sites-available/website.com
然后添加以下内容
我是直接使用/etc/nginx/sites-available/
下原有的配置文件
server { # 将项目反向代理到80端口这样前后端访问就不用添加端口号了 listen 80 default_server; listen [::]:80 default_server;# 前端文件路径 root /var/www/vue; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html;# 如果有域名就添加,没有域名就用下划线 # server_name example.com www.website.com; server_name _;# 前端配置 location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; }# 后端配置 location /api { # api用于规范后端 rewrite ^/api/(.*)$ /$1 break; # 有段获取数据不用加api但是前端获取数据加上api就要添加这行 proxy_pass http://localhost:8000; # 端口号根据application.yml中的端口号修改 proxy_set_header Host $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; }}
添加完就CTPL+X
然后选择Y
保存并退出界面
然后重启Nginx服务
sudo nginx -t
sudo systemctl reload nginx
添加SSL证书
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
4.将项目文件添加到服务器
这时候就要借助第三方工具来完成了我这边使用的是FileZilla 点击查看下载
下载完成安装SSH服务
sudo apt install openssh-server
安装完成查看状态同样绿色表示正常
sudo systemctl status ssh
接着还是是通过ip a
获取电脑IP
步骤解释:
1.添加连接
2.输入IP
3.端口默认22
4.登录时使用的用户名
5.登录时用的密码
6.协议一定要选择SFTP
紧接着就是将你的前端与后端文件放入对应的文件夹,这一步需要赋予远程连接也就是软件连接数据库的权限否则没权限传文件,先通过id 要给权限的用户
来获取组然后就是通过指令给前后端文件夹远程设置权限。
使用 chown 命令将 /var/www 目录的所有者更改为 www 用户,并设置适当的组,为了确保 www 用户拥有完全控制权,而其他用户只有读取权限,可以设置目录的权限为 700,将用户名改为你的用户名
。
sudo chown -R 要给权限的用户名:组号 /var/wwwsudo chmod -R 700 /var/www
再就是直接将文件拖过来
5.配置java环境
我是用的是java17根据自己的需求选择不同的java版本
sudo apt install openjdk-17-jdk
如果有不同的java版本可以i通过sudo update-alternatives --config java
切换默认版本
运行打包的java程序通过java -jar 需要运行的程序路径或者cd到对于路径下的.jar文件
比如java -jar /var/www/springboot/creeper.jar
6.安装MySQL
先安装MySQL服务器,如果需要MySQL客户端也可以运行sudo apt install mysql-client
sudo apt install mysql-server
通过mysql -V
来查看MySQL版本
启动服务
``sudo systemctl status mysql````
MySQL安装后,有一个安全性脚本可以用来移除默认的危险选项,设置root用户密码等。
sudo mysql_secure_installation
按照提示完成配置,建议设置root密码并移除匿名用户、禁止远程root登录、删除测试数据库并重新加载权限表。
以root身份登录数据库
mysql -u root -p
再就是创建用户并允许远程访问
CREATE USER 'www'@'%' IDENTIFIED BY '123456';
CREATE USER ‘用户名’@‘允许那个IP登录(设为%表示允许所有IP通过该IP访问)’ IDENTIFIED BY ‘用户密码’; 创建一个名为 www 的用户,并为其设置密码。
ALTER USER 'www'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改用户属性
GRANT ALL PRIVILEGES ON *.* TO 'www'@'%' WITH GRANT OPTION;
为用户 www 授予对所有数据库的所有权限,并允许该用户进一步授予权限给其他用户。
FLUSH PRIVILEGES;
刷新MySQL权限,使得更改立即生效。
如果创建失败可能是密码策略的问题对密码策略进行更改就行,比如
将密码策略更改为 LOW,这样就只要求密码长度至少为6个字符,而不要求混合大小写、数字和特殊字符。将混合大小写、数字和特殊字符的要求设置为0
SET GLOBAL validate_password.policy = LOW;SET GLOBAL validate_password.length = 6;SET GLOBAL validate_password.mixed_case_count = 0;SET GLOBAL validate_password.number_count = 0;SET GLOBAL validate_password.special_char_count = 0;
改完记得先exit
退出MySQL,再用sudo systemctl restart mysql
重启MySQL服务。
通过第三方软件远程连接软件我这里用的是DBeaver可以直接下载
选择把本地要迁移的数据库右键-工具-转储数据库,没有别的需求可以直接转储
位置根据具体需求来
提示完成就点取消
在远程数据库中创建一个名称相同的库然后右键工具-恢复数据库--default-character-set=utf8mb4
这个参数可以填一下,路径就是存放转储文件的位置
数据库恢复成功
回到虚拟机测试项目能否正常运行
java -jar /var/www/springboot/creeper.jar
替换为自己的路径
如果端口被占用就sudo lsof -i :8300
找到占用端口程序的PID,sudo kill -9 <PID>
结束运行。
最后在浏览器输入http://IP(域名)/项目路由
就能正常访问了。
本期文章到此结束,希望对你有所帮助,如果可以点个?
吧。