解决Nginx启动错误:nginx.pid文件缺失及开机自动启动配置方法

安装nginx并配置

解决Nginx启动错误:nginx.pid文件缺失及开机自动启动配置方法

命令如下

brew install nginx

测试修改是否成功

sudo nginx -t

启动

sudo nginx

重新启动

sudo nginx -s reload

安装NGINX后,运行nginx -s重新加载将导致以下错误:

此错误的原因是没有nginx.pid文件。根据在线找到的信息,当NGINX启动时,将在目录/usr/local/var/run/run//directory/usr/usr/usr/local/var/run/run/中创建一个名为nginx.pid的文件。执行nginx -s停止时,将删除此文件。然后,当您执行nginx -s重新加载以重新启动时,它将首先删除然后创建。此处错误的原因是该文件不存在,也无法删除。

解决方案:运行启动命令

sudo nginx

自动启动

方法1

确认存在Homebrew.mxcl.nginx.plist文件

ln -sfv /usr/local/opt/nginx/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

方法2:

sudo brew services start nginx

配置主机

修改本地主机文件

sudo vim /etc/hosts

添加一个127.0.0.1 Localhost指针,然后在浏览器中输入LocalHost:8080以访问它。以下图像出现在最初已成功配置的NGINX表面上。

NGINX的初始端口为8080;

修改Nginx的端口

vim /usr/local/etc/nginx/nginx.conf

只需将8080的听众修改为80; server_name是主机域名,这是Localhost。您可以在 /etc /hosts中添加本地IP域名指针,然后在NGINX中添加域名,并且可以通过输入域名地址通过浏览器访问它;

nginx.conf文件配置

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

修改后的nginx.conf代码如下

user  root owner;
worker_processes  4;
error_log  /usr/local/var/log/nginx/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid   /usr/local/var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /usr/local/var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    include servers/*;
    include vhosts/*;
}

nginx.conf有一个备份文件,文件名nginx.conf.default

是否存在是否存在,需要预先确认access_log,error_log和PID的相应文件位置;否则,nginx将报告错误,并且无法启动;

修改nginx.conf,保存和退出后,您可以运行

sudo nginx -t

执行测试以检查错误;

这意味着配置成功;

配置虚拟主机

cd /usr/local/etc/nginx
mkdir vhosts
cd vhosts
vim www.test.com.conf

虚拟主机代码如下

server {
    #监听端口
    listen    80;
 
    #虚拟主机域名
    server_name  www.test.com;
    #网站根目录
    root /Users/aaa/wroot/test;
    #定义路径下默认访问的文件名
    index index.php index.html;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        #打开目录浏览功能,可以列出整个目录
        #autoindex on;
    }
    access_log /usr/local/var/log/www.test.com-access.log main;
    error_log /usr/local/var/log/www.test.com-error.log error;
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        fastcgi_pass     127.0.0.1:9000;
        fastcgi_index    index.php;
        include          fastcgi_params;
        fastcgi_param    SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    }
}

独立运行的辅助列的分析

过去,我使用Apache来解析辅助列,只需要在相应的目录中添加.htaccess文件并在文件中配置规则。 nginx不支持.htaccess。因此,将其直接配置在相应的主机文件中

location /a {
    index index.php index.html;
    try_files $uri $uri/ /a/index.php?query_string;
}

安装PHP

我的Mac使用PHP7.1安装。在新型自制的新型自制中安装PHP的命令如下:

首先安装PHP扩展

brew tap homebrew/homebrew-php

安装PHP

brew install php@7.1

安装酿造时,您无需使用sudo命令或通过sudo输入超级管理员模式。现在,使用第二个命令安装时,将自动安装一些基于PHP的扩展;

安装PHP并配置主机后,通过浏览器使用PHP代码访问页面文件时将出现以下错误;

根据搜索日志,发现这是PHP-FPM配置问题。

#0: *70 kevent() reported that connect() failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: www.test.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.test.com"

此错误是由未启动PHP-FPM引起的,但是如果您在命令终端中输入PHP-FPM以启动PHP-FPM,则以下错误也将出现

我们首先以以下方式配置PHP-FPM,以解决错误;

配置PHP-FPM

修改文件

sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf

edit/private/etc/php-fpm.conf文件

如图所示,修改错误日志的存储路径,请先在此路径下实现该文件;

输入php-fpm.d目录

cd /private/etc/php-fpm.d
sudo cp www.conf.default www.conf
cd ..
sudo vim php-fpm.conf

设置PID文件的位置,这是我在此处放置的绝对路径。

修改完成后,请记住启动PHP-FPM命令终端并直接运行。

此时,NGINX可以正常解析PHP文件,并且502错误已消失。

发现页面上Phpinfo()生产的版本与PHP -V和PHP -FPM -V的版本不一致。检查信息后,我发现

通过Brew安装PHP后,相应的PHP和PHP-FPM存储目录如下:

php目录 /usr/local/Cellar/php@7.1/版本号/bin
php-fpm目录 /usr/local/Cellar/php@7.1/版本号/sbin
配置目录 /usr/local/etc/php/7.1

Mac系统带有PHP,安装目录位置

php /usr/bin/php
php-fpm /user/sbin/php-fpm

您需要使用通过Brew Install PHP安装的版本来替换系统随附的PHP。

方法1 :(该操作相对简单)

brew link --force php@7.1

使用此方法时,出现以下提示

这应该是一个许可问题,我在网上找到了一个解决方案

$ sudo mkdir /usr/local/sbin
$ sudo chown -R whoami:admin /usr/local/sbin
$ brew link php71

请记住,用您当前登录的用户名替换Whoami,最后运行后没有错误。真的哭了起来! ~~

然后按照提示运行以下命令;

echo 'export PATH="/usr/local/opt/php@7.1/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.1/sbin:$PATH"' >> ~/.bash_profile

方法2:操作相对复杂

删除或重命名这两个目录,否则您无法使用已安装的Brew Spand PHP。 REDIS使用软链方法来重新定位PHP,其结果是PHP -V和PHPINFO()版本不一致。

cd /usr/local/bin
ln -s ../Cellar/php@7.1/7.1.26/bin/php php

通常,在Brew安装PHP之后,它将自动在/usr/local/bin目录中与PHP建立软连接。 PHP-FPM要求我们手动将其关联;

ln -s /usr/local/Cellar/php\@7.1/7.1.26/sbin/php-fpm  /usr/local/bin/php-fpm

创建软连接后,分别关闭终端,重新输入并运行PHP -V和PHP -FPM -V,以查看版本是否一致。

重新启动php-fpm和nginx; (我直接重新启动计算机)

自动在启动上启动PHP-FPM

创建一个自动启动文件





	Label
	org.phpfpm
	RunAtLoad
	
	Program
	/usr/local/sbin/php-fpm

可以通过php-fpm的位置查看php-fpm的路径,查找 / -Name php-fpm,php-fpm。确保确保相应目录中的版本与PHP -FPM -V版本一致;

配置自动启动

sudo chown messia:wheel ~/Library/LaunchAgents/org.php.php-fpm.plist
sudo chmod +x ~/Library/LaunchAgents/org.php.php-fpm.plist
launchctl load -w ~/Library/LaunchAgents/org.php.php-fpm.plist

检查初创公司是否成功

launchctl list | grep php
复制代码

安装Redis和PHP相应的REDIS扩展

使用啤酒安装

brew install redis

安装目录

/usr/local/bin

检查版本

redis-server -v
redis-cli -v

在后台运行redis

brew services start redis

PHP安装了Redis的扩展

使用PECL命令安装;使用Brew安装PHP时,PECL命令已为我们安装,因此我们可以在此处直接使用它。

让我们首先输入php bin目录,以查看命令是否存在。相应的路径如下:cd/usr/local/celler/php@7.1/7.1.1.26这里7.1.26是我通过brew install php@7.1我安装的PHP的特定版本通过LS命令的文件夹

MAC系统带有PHP。您可以检查当前的PHP版本是否与您通过PHP -V安装的安装是否一致,也可以使用LS -AL在CD/USR/LOCAL/BIN/BIN目录中查看它是一致的

如果是在Brew安装后的目录,则可以使用以下命令来重新启动关联;

cd /usr/local/bin
ln -s ../Cellar/php@7.1/7.1.26/bin/php php
ln -s ../Cellar/php@7.1/7.1.26/bin/pecl pecl

重新启动关联后,请记住退出客户端终端,然后输入并运行PHP -V以查看版本号。修改PECL下载目录和高速缓存目录的权限,否则可能会失败;

sudo chown -R 自己账号:分组 目录
sudo chown -R messia:wheel /private/tmp/pear/

安装Redis的扩展依赖关系

pecl install igbinary

现在您可以安装redis,命令如下:

pecl install redis

安静地等待安装完成并确认是否成功安装了该模块;

php -m|grep r

如图所示

在php.ini文件中确认

确定SO文件的位置

查看文件

REDIS安装现已完成

开始重新服务

redis-server

自动启动redis命令

brew services start redis

检查Redis是否成功开始

ps -ef | grep -E 'php|nginx|redis'

安装mysql

只需使用以下命令安装mySQL即可;

brew install mysql

设置MySQL密码,先决条件是首先启动MySQL,否则将报告错误。但是,本地开发环境没有配置密码。

sudo mysql_secure_installation

MySQL启动命令

sudo mysql.server start

启动mysql

sudo brew services start mysql

重新启动

brew services restart mysql

phpmyadmin相关配置

config.sample.inc.php 另存文 config.inc.php
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['AllowNoPassword'] = true;

解决方案:似乎8.0必须需要密码;修改my.cnf

cd /usr/local/etc
vim my.cnf
新增一行
default_authentication_plugin = mysql_native_password

登录到数据库并修改密码

mysql -u root -p
mysql>use mysql;
ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY '您的密码';
mysql>FLUSH PRIVILEGES;

Laravel链接数据库错误处理

SQLSTATE[42000]: Syntax error or access violation: 1231 Variable 'sql_mode'  
   can't be set to the value of 'NO_AUTO_CREATE_USER'

修改Database.php

'mysql' => [
            'modes'  => [
                'ONLY_FULL_GROUP_BY',
                'STRICT_TRANS_TABLES',
                'NO_ZERO_IN_DATE',
                'NO_ZERO_DATE',
                'ERROR_FOR_DIVISION_BY_ZERO',
                'NO_ENGINE_SUBSTITUTION',
            ],
        ],

可以修复;

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

44阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读