一、开启指定防火墙端口
-
查看firewalld服务状态
systemctl status firewalld
-
开启防火墙(如果开启,请忽略)
systemctl start firewalld
-
查询、开放、关闭端口
-
查询所有开放端口列表
firewall-cmd --list-ports
-
查询端口是否开放
firewall-cmd --query-port=8080/tcp
-
开放指定端口
firewall-cmd --permanent --add-port=8080/tcp
-
关闭指定端口
firewall-cmd --permanent --remove-port=8080/tcp
-
重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
-
参数解释
1)firwall-cmd:是Linux提供的操作firewall的一个工具;
2)–permanent:表示设置为持久;
3)–add-port:标识添加的端口;netstat是一个常用的网络工具,用于显示网络连接、路由表和网络接口等相关信息。在netstat命令中,选项"-n"表示显示数值形式的IP地址和端口号,“-t"表示只显示TCP连接,”-u"表示只显示UDP连接,“-l"表示只显示监听状态的连接,”-p"表示显示进程/程序名称。
-
-
开放指定端口(比如8080,跟上面方法二选一)
firewall-cmd --zone=public --add-port=8080/tcp --permanent
命令含义: --zone #作用域 --add-port=1935/tcp #添加端口,格式为:端口/通讯协议 --permanent #永久生效,没有此参数重启后失效
-
重启防火墙(跟上述方法二选一)
firewall-cmd --reload
-
查看端口号
netstat -ntlp #查看当前所有tcp端口 netstat -ntulp |grep 1935 #查看所有1935端口使用情况
-n:这个选项告诉 netstat 使用数字形式而不是主机名来显示网络地址和端口。这将使输出更易读,因为它不需要进行DNS解析。
-t:这个选项告诉 netstat 只显示TCP协议的相关信息,过滤掉其他协议的信息。
-l:这个选项告诉 netstat 只显示监听状态的端口。
-p:这个选项告诉 netstat 显示与每个端口关联的进程信息,包括进程的PID(进程标识符)。
-
强制关闭进程
kill -9 xxxx #(进程号 PID)
同时,若服务器处于某个安全组内,也要开放相应端口,外网才可访问。
相关问题:
如果单个物理服务器开放防火墙指定端口,但是相关联的安全组没有开放相关端口,外部环境可以进行访问吗?
如果单个物理服务器在其防火墙上开放了指定端口,但是与之关联的安全组没有相应的规则来开放该端口,外部环境仍然无法访问该服务器的指定端口。
安全组是在虚拟化环境或云计算平台中进行网络访问控制的一种机制,它会过滤和限制流入和流出虚拟机或云实例的网络流量。如果安全组没有相应的规则来允许外部环境访问指定端口,那么无论物理服务器上的防火墙是否开放了该端口,都无法建立与该服务器的网络连接。
安全组起到的是额外的一道网络安全防线,即使在物理服务器上开放了端口,但如果安全组没有相应的规则,网络流量将被安全组拦截并阻止进入服务器。这样做的目的是增强服务器的安全性,只有经过授权的网络流量才能进入服务器。
因此,要允许外部环境访问指定端口,你需要在与该物理服务器相关联的安全组中添加规则,以允许外部环境的IP地址、端口和协议访问服务器。只有在安全组规则中配置了允许的访问规则,外部环境才能与服务器建立连接。
二、后端部署
1. 将java项目打包
2. 传输jar包并运行
将生成的jar包传输至物理服务器指定位置,在对应位置下执行一下命令:
nohup java -jar xxx.jar &
-
&:使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。
-
nohub:nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。默认让程序控制台输出转移到nohub.out文件,位置在当前命令所在目录。
-
你也可以更改nohub.out文件为其他,比如:
nohup java -jar xxx.jar >out.file 2>&1 &
out.file 是将前面命令的输出重定向到 out.file 文件,即输出内容不打印到屏幕上,而是输出到 out.file 文件中。
2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个&, 是让该命令在后台执行。
三、前端部署
1. 前端项目打包
前端项目使用一下命令进行打包,但是要注意 webpack-dev-server 相关配置。
以 vue 项目为例(若有自定义配置,请根据运行自定义指定命令):
npm run build
执行完命令之后,通常会在执行命令的文件目录下生成一个dist文件夹,里面即为打包好的项目资源文件。
2. Nginx 配置
-
通常使用 Nginx 做请求转发,已处理前端请求以及跨域问题。请确保物理服务器上有 Nginx 应用(安装、配置 Nginx 请自行查询相关资料,此处略过)。
修改 Nginx 配置文件,通常为 /etc/nginx/nginx.conf,请根据自己安装 Nginx 路径进行查找。
-
在配置文件中找到
server
部分,并根据你的项目需要进行修改。以下是一个示例配置,假设你的前端项目打包后的文件位于/var/www/html
目录:server { listen 80; server_name your-domain.com; root /var/www/html; index index.html; location / { try_files $uri $uri/ /index.html; } location /prod-api/ { proxy_pass http://127.0.0.1:8181/; } }
listen
指定 Nginx 监听的端口,默认为 80。server_name
指定你的域名或服务器 IP 地址。root
指定前端项目打包后的文件所在的根目录。index
指定默认的入口文件,通常为index.html
。location /
部分将请求重定向到前端应用的入口文件,其中匹配规则为正则表达式。它会尝试匹配请求的文件,如果找不到则重定向到index.html
。- 对于前端有 base_url,公共前缀的请求,也要使用类似于
location /prod-api/
进行请求转发。 - 注意:开放 nginx 监听的端口;安全组也要开放相关端口,否则外部网络将无法访问!
修改完配置文件后,保存退出
wq!
即可。然后可以使用命令nginx -t
进行配置文件校验,看配置文件格式是否正确,若无错误,执行命令nginx -s reload
重新加载文件,使得修改后的配置文件生效。
现在,你可以通过访问你的域名或服务器 IP 地址来验证前端项目的部署。Nginx 会将请求转发到前端项目的入口文件,从而展示你的网页应用!
祝一切顺利!