ubutun nginx 安装和解决端口占用问题

目录

一、删除已有nginx

二、安装nginx

三、端口占用问题

分析问题

解决方法:更换默认端口


nginx是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。

一、删除已有nginx

1)使用下列命令,来查找nginx的安装路径,

find / -name nginx 这个命令的作用是从根目录 / 开始,搜索系统中的所有文件和目录,查找名称为 nginx 的文件或目录。具体解释如下:

  • find:Linux 命令,用于在文件系统中搜索文件和目录。
  • /:指定从根目录开始搜索。
  • -name nginx:表示查找名称完全匹配 nginx 的文件或目录。

注意事项:

  • 由于从根目录开始搜索,这个命令可能需要一定的时间来完成,具体取决于文件系统的大小和复杂度。
  • 运行这个命令可能需要管理员权限(例如使用 sudo),以便能够访问所有目录。

如果你想查找与 nginx 相关的配置文件或执行文件,建议在找到后查看它们的路径,以便确认 Nginx 的安装和配置位置。

find / -name nginx

2)查找之后,对这些路径进行删除,

rm -rf /etc/nginx/
rm -rf /usr/local/nginx
rm -rf /etc/default/nginx/
rm -rf /root/nginx-1.20.2/objs/nginx

3)删除之后,再通过下列命令查看一下是不是已经删除nginx 了。

which nginx 这个命令用于查找并显示当前系统中 nginx 可执行文件的路径。具体解释如下:

  • which:这是一个命令行工具,用于定位可执行文件的路径。
  • nginx:要查找的命令或程序的名称。

结果:

执行 which nginx 后,如果 nginx 已正确安装并在系统的 $PATH 环境变量中,系统将返回 nginx 可执行文件的完整路径,例如 /usr/sbin/nginx/usr/bin/nginx。如果没有找到,系统将不会返回任何内容。

这个命令很有用,可以帮助你确认 Nginx 是否已安装以及它的安装位置。

which nginx

可以看到,nginx已经成功删除了。

二、安装nginx

1)本地浏览器打开下载地址Index of /download/,然后下载安装包,我下载的是1.20.2,

下载之后,上传到服务器上,使用命令解压缩,

tar -zxvf nginx-1.20.2.tar.gz

2)进入安装路径nginx-1.20.2/下,

./configure --prefix=/usr/local/nginx --with-http_ssl_module

3)执行编译命令,

make

编译完成:

然后执行安装命令,

make install

查看是否安装成功:

4)安装完成之后,使用以下命令启用和启动Nginx服务,

systemctl start nginx
systemctl status nginx

然后查看NFS服务状态,如下所示:

如果一切正常,输出应该是"Active: active (running)"或者类似的信息。

⚠️⚠️⚠️若发现以上错误,这是因为 80 端口已经被其他进行占用导致 Nginx 无法绑定到 80 端口上,可尝试查询端口占用进程并终止该进程。

三、端口占用问题

分析问题

两个命令的作用如下:

  1. netstat -tuln | grep LISTEN

    • netstat:用于显示网络连接、路由表、接口统计等信息。
    • -t:显示 TCP 连接。
    • -u:显示 UDP 连接。
    • -l:仅显示监听状态的端口。
    • -n:以数字形式显示地址和端口号,而不是尝试解析主机名。
    • | grep LISTEN:将 netstat 的输出通过管道传输给 grep,过滤出只包含"LISTEN"的行,表示当前正在监听的端口。

    这个命令的目的是查看系统中哪些端口处于监听状态,以便确认 Nginx 是否已正确绑定到预期的端口(例如 80 或 443)。

  2. ps aux | grep nginx

    • ps aux:列出系统上所有的进程及其详细信息。
      • a:显示所有用户的进程。
      • u:以用户格式显示。
      • x:显示没有控制终端的进程。
    • | grep nginx:通过管道过滤出包含"nginx"字符串的进程信息。

    这个命令的目的是检查 Nginx 进程是否在运行,以及它的相关信息(如进程 ID、CPU 和内存使用情况等)。

这两个命令通常用于排查服务的运行状态和端口占用情况。

1)使用下列命令,来查看系统中哪些端口处于监听状态,以便确认 Nginx 是否已正确绑定到预期的端口(例如 80 或 443)。

netstat -tuln | grep LISTEN

2) 检查 Nginx 进程是否在运行,以及它的相关信息(如进程 ID、CPU 和内存使用情况等)。

ps aux | grep nginx

可以看到,nginx确实没有成功启动,而且也能看到,80端口确实是被占用了。

解决方法:更换默认端口

1)查看nginx的安装路径,

whereis nginx

2)进入到这个路径下,通过vim命令查看conf文件夹下的nginx.conf配置文件,

cd  /usr/local/nginx
vim ./conf/nginx.conf

可以看到,默认nginx的监听端口是80,此处我改成了8022,

3)保存文件并退出,然后使用下列命令,重新加载nginx,

./nginx
./nginx -s reload

通过netstat命令可以看到,目前nginx在监听8022端口,

netstat -ntlp

并且,本地浏览器中输入"ip:8022"(此处你把80端口改成了什么就是什么,我改成了8022),就可以看到如下界面,

说明nginx已经正常启动了。

相关推荐
荒Huang6 分钟前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_201316 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能19 分钟前
气爪在自动化装配线中是如何应用的?
运维·自动化
九河云43 分钟前
如何选择适合的AWS EC2实例类型
服务器·云计算·aws
€☞扫地僧☜€2 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
hjjdebug2 小时前
linux 下 signal() 函数的用法,信号类型在哪里定义的?
linux·signal
其乐无涯2 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流2 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
写bug的小屁孩2 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
斑布斑布2 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习