在Ubuntu上部署Nginx服务器,保姆级教程!

零肚土喵 2024-09-30 09:37:06 阅读 85

在Ubuntu上部署Nginx服务器,保姆级教程!

前后端项目要想正常访问不可避免地就是部署服务器常见的Linux系统就有Ubuntu。对于一个新手就会遇到很多问题。

1.连接Xshell

如果不使用Xshell可以直接用命令行直接看下一步就行;

官网下载:https://www.xshell.com/zh/xshell/

下载完通过<code>IP+端口+登录用户+登录用户密码连接,通过ip a获取IP

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.安装Nginx

1.在安装任何软件之前,先更新你的软件包列表以确保你安装的是最新的版本。

我这里使用的是xshell远程使用命令行同样的可以直接在终端运行没有影响。

<code>sudo apt update

运行结果:

运行结果

2.直接通过命令安装

<code>sudo apt install nginx

安装效果大概是这样的

3.安装完成后通过<code>sudo systemctl status nginx检测Nginx运行状态;

效果如图:

运行状态

绿色表示正在运行

4.更新防火墙规则

<code>sudo ufw allow 'Nginx Full'

在这里插入图片描述

5.查看防火墙运行状态

<code>sudo ufw status

一般是不活动的

6.查看Nginx是否正常运行

首先我们需要获取本机的IP地址在命令行输入<code>ip a获取IP地址;

IP地址

我们会得到一段结果需要的是<code>192.168.xxx.xxx的内容就是我们的IP地址。

这时候我们就能直接在浏览器通过http://IP地址直接访问如果看到欢迎页表示成功。

在这里插入图片描述

3.设置Nginx配置文件

Nginx 的配置文件位于 /etc/nginx/ 目录下。主要配置文件是 nginx.conf,虚拟主机配置文件位于 /etc/nginx/sites-available/ 和 /etc/nginx/sites-enabled/。

我们先创建两个文件夹分别用于存放前端和后端的项目文件方便管理

前端路径<code>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/ 下原有的配置文件

在这里插入图片描述

<code>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

在这里插入图片描述

接着还是是通过<code>ip a获取电脑IP

在这里插入图片描述

步骤解释:

1.添加连接

2.输入IP

3.端口默认22

4.登录时使用的用户名

5.登录时用的密码

6.协议一定要选择SFTP

紧接着就是将你的前端与后端文件放入对应的文件夹,这一步需要赋予远程连接也就是软件连接数据库的权限否则没权限传文件,先通过<code>id 要给权限的用户来获取组然后就是通过指令给前后端文件夹远程设置权限。

使用 chown 命令将 /var/www 目录的所有者更改为 www 用户,并设置适当的组,为了确保 www 用户拥有完全控制权,而其他用户只有读取权限,可以设置目录的权限为 700,将用户名改为你的用户名

sudo chown -R 要给权限的用户名:组号 /var/www

sudo chmod -R 700 /var/www

再就是直接将文件拖过来

5.配置java环境

我是用的是java17根据自己的需求选择不同的java版本

sudo apt install openjdk-17-jdk

在这里插入图片描述

如果有不同的java版本可以i通过<code>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

在这里插入图片描述

通过<code>mysql -V来查看MySQL版本

在这里插入图片描述

启动服务

``sudo systemctl status mysql````

在这里插入图片描述

MySQL安装后,有一个安全性脚本可以用来移除默认的危险选项,设置root用户密码等。

<code>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;

在这里插入图片描述

改完记得先<code>exit退出MySQL,再用sudo systemctl restart mysql重启MySQL服务。

通过第三方软件远程连接软件我这里用的是DBeaver可以直接下载

在这里插入图片描述

在这里插入图片描述

选择把本地要迁移的数据库右键-工具-转储数据库,没有别的需求可以直接转储

在这里插入图片描述

位置根据具体需求来

在这里插入图片描述

提示完成就点取消

在这里插入图片描述

在远程数据库中创建一个名称相同的库然后右键工具-恢复数据库<code>--default-character-set=utf8mb4这个参数可以填一下,路径就是存放转储文件的位置

在这里插入图片描述

在这里插入图片描述

数据库恢复成功

在这里插入图片描述

回到虚拟机测试项目能否正常运行

<code>java -jar /var/www/springboot/creeper.jar替换为自己的路径

在这里插入图片描述

如果端口被占用就<code>sudo lsof -i :8300找到占用端口程序的PID,sudo kill -9 <PID>结束运行。

最后在浏览器输入http://IP(域名)/项目路由就能正常访问了。

本期文章到此结束,希望对你有所帮助,如果可以点个👍吧。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。