在Linux上开发一个Web项目,使用nginx作为Web服务器。在nginx的配置文件中添加一个serverroot路径写的是放在home目录中的项目目录的路径。打开浏览器访问,提示错误:403 Forbidden。

查看nginx的错误日志/var/log/nginx/error.log,关键信息:

  1. 2021/09/03 16:21:00 [error] 18755#18755: *1 "/home/youshilife/project/index.html" is forbidden (13: Permission denied), client: 127.0.0.1, server: project.test, request: "GET / HTTP/1.1", host: "project.test"

可见,是访问文件/home/youshilife/project/index.html权限不足导致的问题。

经检查,发现问题的根源出在home目录的权限设置上。/home/下每个用户的家目录权限为700,即让每个用户的家目录仅允许被该用户自己访问。nginx运行时使用的用户显然不是youshilife,当然就没有权限访问到里面的文件。

几个可行的解决方案:

  • chmod o+x /home/<用户名>,即允许其他用户访问自己home目录中的文件列表。

    多用户场景下一般不要这么做,因为有安全风险。
  • 将项目目录直接放在其他nginx可访问的目录中(如/srv//var/www/)。

    开发环境中可以将项目目录的所属用户设置为自己,以便修改。

另外,我尝试了将home目录中的项目目录做软链接到其他可访问的目录中(如/srv/),结果发现不行,这是因为软链接相当于一个指针,实际访问时还是按原始路径访问,所以仍然受原始路径的权限设置影响。而对于目录,Linux不允许做硬链接。

Linux上项目部署在home目录中无法访问的问题的更多相关文章

  1. 把Mvc4项目部署到虚拟目录之后找不到control想到的文件路径规范的问题

    最近部署的项目的时候由于端口不够用,想到了把Mvc项目部署到虚拟目录中,结果发现图片,js设置control都找不到了.项目是mvc4+easyui开发的,大量的代码都是在js中调用control,写 ...

  2. Kibana在Linux上安装部署及使用说明

    Kibana安装及使用说明 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索.查看交互存储在Elasticsearch索引中的数据. 官方地址:https://www. ...

  3. 怎么在linux上安装部署jenkins

    怎么在linux上安装部署jenkins 作为一个非科班出身自学的小白,踩过很多的坑,特此留下记录 以下在虚拟机上示例 系统:linux(centos7) 操作方式:xshell连接终端操作 教程之前 ...

  4. Node.js~在linux上的部署~pm2管理工具的使用

    之前写了两篇关于在linux上部署nodejs的文章,大家如果没有基础可以先看前两篇<Node.js~在linux上的部署>,<Node.js~在linux上的部署~外网不能访问no ...

  5. django项目部署在Apache服务器中,静态文件路径的注意点

    django Apache部署静态文件的路径注意点 静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中. 当 DEBUG = True 时, ...

  6. Linux上Tomcat部署JavaWeb项目

    一.安装JDK 配置java的环境变量,修改/etc/profile文件:vi /etc/profile 然后按下字母i进入插入模式, shift+insert粘贴; esc退出编辑; :wq保存退出 ...

  7. 在Linux上从零开始部署前后端分离的Vue+Spring boot项目

    最近做了一个前后端分离的商城项目来熟悉开发的整个流程,最后希望能有个正式的部署流程,于是试着把项目放在云服务器上,做了一下发现遇到了不少问题,借此记录一下整个部署的过程. 使用的技术栈如标题所说大体上 ...

  8. linux系统上项目部署

    步骤:(特别注意:虚拟机安装的一般是32位的操作系统,jdk也必须使用32位的)查看虚拟机版本:sudo uname --m i686 //表示是32位 x86_64 // 表示是64位 查看是否已经 ...

  9. Flask 教程 第十七章:Linux上的部署

    本文翻译自The Flask Mega-Tutorial Part XVII: Deployment on Linux 这是Flask Mega-Tutorial系列的第十七部分,我将把Microbl ...

随机推荐

  1. Spring WebFlux 基础教程:参数校验

    请求参数校验,在实际的应用中很常见,网上的文章大部分提供的使用注解的方式做参数校验.本文主要介绍 Spring Webflux Function Endpoint 使用 Spring Validati ...

  2. 计算机网络笔记Part1 概述

    总目录 1.计算机网络的功能.组成.分类 1.1功能 数据通信 资源共享 分布式处理 提高可靠性 负载均衡 1.2组成部分 硬件 软件 协议 1.3分类 按分布范围 广域网 WAN 城域网 MAN 局 ...

  3. 《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath.xpath 的定位方法, 非常强大.  使用这种方法几乎可以定位到页面上的任意元素. ...

  4. 使用VNC远程安装CentOS 7操作系统

    使用VNC远程安装CentOS 7操作系统 by 无若 数据中心一般都不在本地,如果希望重新安装系统,难道还要跑到数据中心...所以必须要有一种方式来远程解决这个问题. 目前CentOS 7主要使用的 ...

  5. Spring Security中实现微信网页授权

    微信公众号提供了微信支付.微信优惠券.微信H5红包.微信红包封面等等促销工具来帮助我们的应用拉新保活.但是这些福利要想正确地发放到用户的手里就必须拿到用户特定的(微信应用)微信标识openid甚至是用 ...

  6. uname指令

    以下是一台Solaris 10服务器的配置信息, bash-3.00$ uname -a SunOS NOP2-HWXX 5.10 Generic_138888-03 sun4u sparc SUNW ...

  7. Vue 实现微信提示浏览器转跳功能

    <template> <div class="main"> <div :class="show==true ? 'block':'block ...

  8. DDD领域驱动理解

    在理解领域驱动的时候,网上很多大谈理论的文章,这种对于初学者不是太容易接受.根据我自己的学习经历,建议按照如下几个步骤学习: 粗略的看一遍领域驱动的理论,做到心中有形,知道领域驱动是什么,解决什么问题 ...

  9. CleanArchitecture Application代码生成插件-让程序员告别CURD Ctrl+C Ctrl+V

    这是一个根据Domain项目中定义的实体对象(Entity)生成符合Clean Architecture原则的Application项目所需要的功能代码,包括常用的Commands,Queries,V ...

  10. Windows内核基础知识-2-段描述符

    Windows内核基础知识-2-段描述符 比如: ES 002B 0(FFFFFFFF) 意思就是es段寄存器,段选择子/段选择符 为002B, 起始地址base为0, 限制范围Limit地址最大能寻 ...