热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

云服务器使用nginx部署web项目(ubuntu操作系统)

ubuntu系统下使用apt-get安装的nginx,其他系统或安装方式会有差异。nginx各目录分布1.配置文件目录:etcnginx其中etcnginxnginx

ubuntu系统下使用apt-get安装的nginx,其他系统或安装方式会有差异。
nginx各目录分布
1.配置文件目录:/etc/nginx
在这里插入图片描述
其中/etc/nginx/nginx.conf为主配置文件,sites-available主要用于配置server段,后面会有介绍
2.启动/重启/关闭文件:/etc/init.d/nginx

/etc/init.d/nginx stop
/etc/init.d/nginx start
/etc/init.d/nginx reload

3.执行文件:/usr/sbin/nginx
4.web目录:/var/www


一:多端口部署项目

1.打开安全组添加入方向规则
在这里插入图片描述
这里以自定义了7000端口为例
2.防火墙中开启对应端口
进入linux命令之后,首次使用需要安装firewall

sudo apt install firewalld

查看所有打开的端口:

firewall-cmd --zOne=public --list-ports

添加自定义的端口:

firewall-cmd --zOne=public --add-port=7000/tcp --permanent (–permanent永久生效,没有此参数重启后失效)

注意,添加后需要重新载入才能生效

firewall-cmd --reload

查看是否生效:

firewall-cmd --zOne=public --query-port=7000/tcp

3.web目录与sites-enabled
前面我们提到web存放目录是:/var/www,里面默认有一个html目录,在我们安装完nginx时直接再浏览器输入ip或域名,默认会到80端口,并展示一个welcom to nginx的界面,就是来自于/var/www/html/index.nginx-debian.html这个文件。为什么会默认到这个文件,是在哪里配置的呢,打开/etc/nginx/nginx.conf主配置文件会发现在http内有这么一句代码:
在这里插入图片描述
如果所有server配置都写在 nginx.conf 主配置文件中,项目都哦了难免会显得杂乱与臃肿。为了方便配置文件的维护,所以需要进行拆分配置。
include /etc/nginx/sites-enabled/ 的作用就是引入/etc/nginx/sites-available/下的所有server文件,使用xftp工具查看会发现其实sites-enabled下其实是server配置文件的软链接。而实际配置其实是在/etc/nginx/sites-available/下
在这里插入图片描述
4.sites-available中自定义文件并部署项目
如果我们要在web7000这个目录下部署多个web项目,web1,web2。让浏览器访问localhost:7000/web1时响应web1的项目,访问localhost:7000/web2时响应web2的项目
(1) 切换到/etc/nginx/sites-available目录下,ls查看当前目录的配置,默认是有一个default案例。将default复制一份,并起名为任意名字以.conf结尾的文件,注意不要使用_连接的方式,例如我当初使用web_7000.conf,发现文件执行不了。
在这里插入图片描述
(2) vim进入自定义的.conf文件中进行编辑,我的目录中已经自定义了web7000.conf这个文件:
在这里插入图片描述
以7000端口为例,如果你在安全组中配置了并且防火墙开放了7000端口,就可以在这里监听。listen 7000表示监听7000端口,server_name和location先不管,我们看root /var/www/web7000表示会去/var/www/web7000这个项目目录下找,我们在该目录下放一个index.html文件作为测试。
接下来保存退出创建软连接,切换到sites-enabled目录下,执行

ln -s /etc/nginx/sites-available/cust.conf

在这里插入图片描述
然后再执行以下代码重启nginx:

/etc/init.d/nginx reload

在浏览器中输入ip:7000则会显示我们放在/var/www/web7000下的index.html文件。这样就完成了一个基本的web项目部署。
5.一个端口下部署多个项目
以上操作我们只能在7000端口下,/var/www/web7000目录下部署一个项目,如果要部署多个项目又该如何实现呢?例如浏览器输入ip:7000/web1显示项目web1,输入ip:7000/web2显示项目web2,我们的/var/www/web7000目录结构是这样
在这里插入图片描述
(1)更改/etc/nginx/sites-available/web7000.conf文件为:
在这里插入图片描述
location = /web1表示浏览器输入ip:7000/web1进入此规则,location = web2同理。里面的try_files $uri $uri/ =404存在优先级,首先找 uri是否存在,不存在响应404,uri是否存在,不存在响应404,uri404uri又代表什么意思呢,浏览器输入ip:7000/web2, $uri代表的就是/web2文件,注意是web1文件; $uri/代表的是/web2目录,如果存在则会结合root去找/var/www/web7000/web2下的index.html并响应. 所以我们做了以上配置会发现浏览器中输入ip:7000/web1响应404,输入ip:7000/web2才会响应对应web2项目下的html文件。那是不是try_files $uri就没啥用了呢,我们可以用 $uri的特性去访问
我们在浏览器端输入ip:7000/web1/index.html时, $uri解析成了web1/index.html,所以这样时能访问的,利用这个特性,我们还可以访问web1下的其他资源,比如有一张test.png图片,则可ip:7000/web1/test.png
这样我们就实现了一个端口下部署多个项目.

参考到了https://www.cnblogs.com/oklizz/p/11336151.html这篇博客,写的很详细很全面,很适合刚解除nginx的同志。在弄通这一块知识之前找了各种博客,参差不齐,也有下载方式不一样nginx相关目录不一样,走了很多弯路,直到看到这篇博客介绍nginx各项目录解释这块一下子豁然开朗。当然还有其他知识点也很值得学习。


推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 在Ubuntu 18.04上使用Nginx搭建RTMP流媒体服务器
    本文详细介绍了如何在Ubuntu 18.04上使用Nginx和nginx-rtmp-module模块搭建RTMP流媒体服务器,包括环境搭建、配置文件修改和推流拉流操作。适用于需要搭建流媒体服务器的技术人员。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文介绍了如何在Linux系统中获取库源码,并在从源代码编译软件时收集所需的依赖项列表。 ... [详细]
  • MITM(中间人攻击)原理及防范初探(二)
    上一篇文章MITM(中间人攻击)原理及防范初探(一)给大家介绍了利用ettercap进行arp欺骗及劫持明文口令,后来我发现好友rootoorotor的文章介绍比我写的更透彻,所以基础利用大家可以参看 ... [详细]
  • 在测试软件或进行系统维护时,有时会遇到电脑蓝屏的情况,即便使用了沙盒环境也无法完全避免。本文将详细介绍常见的蓝屏错误代码及其解决方案,帮助用户快速定位并解决问题。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • 问题描述现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能;在实际开发过程中 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
author-avatar
流年时光云
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有