nginx配置多个PHP项目

article/2025/3/16 17:23:37

部署项目 1、静态网页 2、laravel项目(含laravel-admin)

  1. 静态网页部署见文章域名备案完后网站部署

  2. 在上篇文章中nginx.conf中user 为root ,访问是成功的,后续看了一些文章,提示最好不要用root启动nginx

    • 指定其他用户(本人用户为nxm)启动nginx,如果你用root启动nginx,万一nginx有漏洞,被提权了,你服务器就GG了

    • 指定nxm用户,如果nginx沦陷,那么破坏者拥有的权限操作也只是nxm用户的权限

      adduser nxm 添加用户
      cat /etc/passwd 查看所有用户的列表
      cat /etc/group 查看用户组
      groups nxm 查看nxm用户所在的组,以及组内成员
      groups 查看当前登录用户的组内成员
      whoami 查看当前登录用户名
      usermod -a -G root nxm 将一个已有用户nxm 增加到一个已有用户组 root 中 而不必离开原有的其他用户组
      usermod -g root nxm  同时将 nxm 的主要用户组改为 root
      groupadd groupname  添加用户组
      groupdel groupname  删除用户组
      

      nxm赋予root权限
      修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

      ##Allow root to run any commands anywhere
      root    ALL=(ALL)     ALL
      nxm   ALL=(ALL)     ALL
      

      修改完毕,现在可以用nxm帐号登录,然后用命令 sudo – ,即可获得root权限进行操作

  3. 设置nginx.conf

    vim /etc/nginx/nginx.conf
    

    在这里插入图片描述
    4. 修改php-fpm 配置文件

    find / -name  www.conf 查找文件所在目录
    cd /usr/local/php/etc/php-fpm.d
    root@iZ8vbice4h2bcujon9zc00Z php-fpm.d]# ls -l
    -rwxrwxrwx 1 root root 19640 1113 18:21 www.conf
    -rwxrwxrwx 1 root root 19602 928 16:24 www.conf.default
    [root@iZ8vbice4h2bcujon9zc00Z php-fpm.d]# vim www.conf
    

    www.conf 配置文件,修改user=nxm group=nxm 与nginx user 一致

    在这里插入图片描述

设置完后,访问报错(/var/log/nginx/error.log),权限问题,于是更改相关文件用户组

```php
chown -R nxm:root 相关文件夹(-R 相关文件夹及文件夹中的文件)chmod -R 750 相关文件夹 (更改权限:r 可读(4) w 可写(2) x 可执行(1))
u 文件属主
g 文件属主同组的用户
o 其他用户
chmod a+x sort 文件属主(u) 增加执行权限
chmod ug+w,o-x text 文件属主(u) 增加写权限 与文件属主同组用户(g) 增加写权限 其他用户(o) 删除执行权限
```

重启nginx、php-fpm

systemctl restart nginx 或 service nginx restart
service php-fpm restart 或 service php-fpm restart

一通操作下来,访问还是权限问题。。。

在这里插入图片描述
原因是把项目放在了root目录里,其他用户没有操作权限,需要把项目移出来

mv  project/ ../project

vim /etc/nginx/conf.d/laravel.conf

由于特殊原因,多个项目放在同一个域名同一个端口下,一个项目是静态html,另一个项目是laravel(包括laravel-admin)

server {listen 8088;server_name localhost ;#纯静态htmllocation  / {alias   /project/webhtml/;index  index.html;}#laravel项目location  /back {root /project/laraveltest/public/;index index.php;try_files $uri $uri/ /index.php?$query_string;if (!-e $request_filename) {rewrite  ^(.*)$  /index.php?s=/$1  last;break;}}location ~ \.php$ {root /project/laraveltest/public/;#fastcgi_pass   127.0.0.1:9000;fastcgi_buffers      512 256K;fastcgi_buffer_size  256K;fastcgi_pass unix:/var/run/php-fpm/php7-fpm.sock;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;# 强制将某些非法地址交给 index.php 处理set $new_fastcgi_script_name $fastcgi_script_name;if (!-e $document_root$fastcgi_script_name) {set $new_fastcgi_script_name "/index.php";}include        fastcgi_params;}#静态资源location /public/ {root /project/laraveltest/;}location ~ /\.ht {deny all;}
}

配置完之后遇到一个问题,就是静态文件加载失败,eg: http://loaclhost:8088/vendor/laravel-admin/AdminLTE/bootstrap/css/bootstrap.min.css
该文件位置为在这里插入图片描述
由于访问路径是http://loaclhost:8088/ 所以匹配上的第一个静态项目的路径

location  / {alias   /project/webhtml/;index  index.html;}

于是添加一个静态资源访问的路径:http://loaclhost:8088/public/,对应

#静态资源
location /public/ {root /project/laraveltest/;}访问路径是/project/laraveltest/public/

如果是laravel项目,更改默认访问路径,记得改默认路由

在这里插入图片描述
在这里插入图片描述
laravel-admin 路由更改 .env 文件增加

.env 
# 资源路由
ASSET_URL=http://jvzhe.com.cn:8088/public
# laravel-admin 路由前缀
ADMIN_ROUTE_PREFIX=/back/admin

最后一点,修改配置,或移动文件夹,记得更新缓存
项目根目录下:

#清除更新配置缓存
php artisan config:cache
#清除视图缓存
php artisan view:clear

最后碰到一个坑,laravel-admin中用到了柱状图,chartjs,本地运行没问题,但服务器上却运行不了,报错Uncaught ReferenceError: Chart is not defined,度娘了半天,说是可能自动加载器缓存问题,在项目根目录执行composer dump-autoload -o,执行之后运行正常了
在这里插入图片描述

Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Socket.
其中TCPIP加端口,可以跨服务器.UNIX Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一服务器的场景.用哪种取决于你的PHP-FPM配置:
方式1:
php-fpm.conf: listen = 127.0.0.1:9000
nginx.conf: fastcgi_pass 127.0.0.1:9000;
方式2:
php-fpm.conf: listen = /tmp/php-fpm.sock
nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock;
其中php-fpm.sock是一个文件,由php-fpm生成,类型是srw-rw----.

-----------------------------------------遇到的其他问题-------------------------------------------------------
频繁更改nginx配置文件,导致

nginx: [emerg] bind() to 0.0.0.0:8088 failed (98: Address already in use)错误

查看8088是那个进程在占用netstat -ntpl如果是nginx进程,则杀死该进程,执行如下命令:killall -9 nginx

nginx: [error] open() “/var/run/nginx.pid” failed (2: No such file or directory)

nginx -c /etc/nginx/nginx.conf
nginx -s reload

try_files:
location /images/ {
root /opt/html/;
try_files $uri $uri/ /images/default.gif;
}
比如 请求 127.0.0.1/images/test.gif 会依次查找 1.文件/opt/html/images/test.gif 2.文件夹 /opt/html/images/test.gif/下的index文件 3. 请求127.0.0.1/images/default.gif


http://chatgpt.dhexx.cn/article/7UL3A0aS.shtml

相关文章

CentOS7 --详细配置Nginx支持PHP程序

为了弄好php和nginx,耗费了我不少时间,哎。整体来说过程不是很难,主要是中间出的问题让人头疼。 第一步:selinux和防火墙设置 (之前安装好nginx,启动成功后,仍旧访问不了页面。发现是防火墙和s…

配置Nginx来支持PHP

人工手动安装好了LNMP环境,但在网站上打开php网页都变成了下载。研究了一下,原来是Nginx还没配置好以支持php。 修改Nginx的配置文件 我的Nginx安装目录是 /usr/local/nginx,切换到该目录: cd /usr/local/nginx打开nginx.conf配…

Ubuntu 20.04 安装配置nginx + PHP

步骤 ## 先清除干净相关的软件,例如apache、php、nginx本身 sudo apt update sudo apt-get autoremove --purge php-fpm sudo apt-get autoremove --purge apache2 sudo apt-get autoremove --purge nginx ## 开始安装nginx sudo apt-get install nginx ## 设置U…

配置Linux+Nginx+php环境搭建

1.安装pcre。pcre是一个perl库,Nginx的HTTP模块使用pcre来解析正则表达式。 2.安装zlib。zlib是一个文件压缩和解压缩的库,Nginx使用zlib对HTTP数据包进行gzip压缩和解压。 yum -y install gcc pcre-devel.x86_64 zlib-devel.x86_64 已安装:gcc.x86_64…

安装PHP解析环境 nginx配置php 实现mysql的连接

什么是PHP:1、PHP是一种被广泛应用的开源通用脚本语言,尤其适用于 Web 开发。 2、拥有快速,灵活,实用的特点,PHP能做任何事,包括你的个人博客甚至是全球性的大型站点系统。 下面实例操作安装PHP软件包 首…

ubuntu22.4配置nginx和php

实验操作步骤 安装ngix 这里使用命令: sudo apt install nginx 2. icestoneicestone-nb:~$ sudo apt install nginx 3. [sudo] icestone 的密码: 4. 正在读取软件包列表... 完成 5. 正在分析软件包的依赖关系树... 完成 6. 正在读取状态信息... 完成 …

Nginx(十九)nginx配置php

一 了解的基础知识 1) nginx本身不能处理PHP,它只是个web服务器-->只能处理静态请求,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给web服务器,最后再给客户端备注: nginx默认并不支持php等动态语言,nginx是服务器主要用来处理…

NGINX配置PHP网站

NGINX配置PHP网站 NGINX配置PHP网站源码安装NGINX安装PHP修改PHP参数重启PHP修改nginx配置文件重启NGINX测试解决报错问题 NGINX配置PHP网站 源码安装NGINX 脚本一键安装: 安装路径:/opt/nginx 源码路径:/root/ #!/bin/bash useradd -s /sb…

【Nginx和PHP教程(一)】安装、配置及初步使用

1. nginx基本介绍 2. nginx安装和环境配置 3. php基本介绍 4. php的安装和环境配置 5. JavaScript、php、html等的区别 6. ubuntu系统中php的安装和环境配置 1. nginx基本介绍 Nginx(发音为“engine X”)是一款高性能的、轻量级的Web服务器软件&am…

JADE开发求助

求助:JADE创建Agent时遇到这种情况是怎么回事?

Jade入门学习

title: Jade入门学习 date: 2018-05-17 20:09:31 tags: [jade, pug] jade是超高性能的node JavaScript模板引擎,有着非常强大的API和大量杰出的特性。它主要针对node的服务端。由于商标的原因,改为Pug,哈巴狗。Pug有它本身的缺点——可移植性…

Jade linux 位置,jade 6.5 安装教程

简介: MDI Jade是一款XRD分析软件,可以分析X射线衍射,分析出衍射图谱,获得材料的成分、材料内部原子或分子的结构或形态等信息的研究手段。 MDI Jade可以对X射线衍射进行分析,通过分析得到的结果,软件可以判…

jade支持html,Jade !HTML框架

1.电脑要有nodejs npm install jade -g 3.pwd 4.subl .打开编译器 格式为jade的文件 5.jade jadetut.jade 编译 安装 $ npm install jade --global -usage $ jade [options] [dir|file ...] Options: -h, --help output usage information pads pagers set-top boxes 语法 incl…

MDI Jade6.5安装教程-附安装包

安装软件前,请退出360、腾讯电脑管家等安全和杀毒软件。 1.双击setup.exe 2.选择是 3.下一步 4.同意许可协议,下一步 5.下一步(默认不要改),如果需要更改,希望只更改盘符&am…

java模板引擎 jade_jade模板引擎

jade是使用JavaScript实现,可供nodejs使用的高性能模板引擎(性能高不高,有些争议。姑且称之为高性能吧!)。模板引擎有很多,主要使用比较广泛的是jade和ejs,modejs项目默认使用jade作为模板引擎,我也就不多说…

jade java_JADE提升篇

以下如果未特殊声明,都在JADE管理器中运行,然后再Eclipse控制台中查看! JADE行为类 在前面的例子中,Agent所作的工作都定义在了setup方法中,实际上它具有的行为和执行的动作都应该定义在Behavious类中,我们…

Windows系统缺失jade6.dll文件导致程序无法运行解决办法

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下…

JADE平台搭建

首先从下列官方网站下载必要的软件或文件。 JADE官方网站:http://jade.tilab.com/; JAVA环境搭建之JDK官网:http://www.oracle.com/technetwork/java/javase/downloads/index.html eclipse软件下载:https://www.eclipse.org/do…

html jade文件,Jade模板

Express框架里内嵌了Jade模板引擎。正好项目里也要用到,本篇整理了下Jade的相关用法。 安装与执行 标签和属性 多行文本 变量 语句 Mixin 模板 注释 过滤器 安装与执行 安装很简单: npm install jade –global 安装后本地随便新建一个sample.jade文件&am…

MDI Jade6的安装(含ocx控件的安装、PDF索引建立、修改注册表)

前言 关于介绍及安装jade的资料及教程,上小木虫、六维、百度等一搜一大堆,这里不再详细介绍及逐一列举。 这里只谈干货,里面很多问题需要仔细摸索解决,这里就一一说明了。 记住:不管是安装文件还是所需要的文件&…