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

笔记:MAC使用brew配置nginx、php、mysql、phpfpm、redis

之前在mac上使用自带的apache、php配置过,都是百度东拼西凑弄,都没记录。这次修改成nginx环境,写个笔记记录一下,

之前在mac上使用自带的apache、php配置过,都是百度东拼西凑弄,都没记录。这次修改成nginx环境,写个笔记记录一下,方便以后自己查看,也希望能借花献佛,帮助他人。内容都是网上拼凑的,感谢网络上各位无私奉献的大神们。

安装xcode-select

在通过brew安装某些应用时需要使用到此程序进行编译(用词如果不准确还请大家谅解),所以为了避免安装失败,建议先安装;

xcode-select --install

安装homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

[系统会在/usl/local/*这个目录下,添加一系列文件]

以上信息来源:

安装nginx及配置

命令如下

brew install nginx

测试修改是否成功

sudo nginx -t

启动

sudo nginx

重启

sudo nginx -s reload

安装好nginx后直接运行nginx -s reload会出现如下错误:

出现这个错误的原因是,没有nginx.pid这个文件;根据网上查到的资料,nginx在启动时候会在/usr/local/var/run/这个目录下创建一个名为nginx.pid的文件,在执行nginx -s stop的时候,会去删除这个文件。那么执行nginx -s reload 进行重启时,则会先删除,然后在创建。这里报错的原因,就是该文件不存在无法被删除;

解决办法: 运行启动命令

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

配置主机

修改本地hosts文件

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:9000location ~ \.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,新homebrew安装php的命令如下:

先安装php扩展

brew tap homebrew/homebrew-php

在安装php

brew install php@7.1

采用brew安装时,无需使用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

编辑/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

需要把系统自带的php更换为通过brew install php安装的版本,

方法一:(操作相对简单)

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

方法二:操作相对复杂

要么把这两个目录删除,或重命名,否则无法使用brew 安装的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 -vphp-fpm -v看下版本是否一致

重启php-fpm和nginx;(我直接重启的电脑)

开机自动启动php-fpm

创建自动启动文件

"1.0" encoding="UTF-8"?>
"-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
"1.0">
Labelorg.phpfpmRunAtLoad<true/>Program/usr/local/sbin/php-fpm


其中php-fpm的路径&#xff0c;可以通过whereis php-fpm&#xff0c;find / -name php-fpm,which php-fpm查看&#xff0c;务必保证对应目录下的版本&#xff0c;与php-fpm -v的版本一致&#xff1b;

配置开机自动启动

sudo chown messia:wheel ~/Library/LaunchAgents/org.php.php-fpm.plist
sudo chmod &#43;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安装

brew install redis

安装目录

/usr/local/bin

检查版本

redis-server -v
redis-cli -v

后台运行redis

brew services start redis

php安装redis的扩展

采用pecl命令进行安装&#xff1b; pecl命令&#xff0c;在使用brew 安装php时&#xff0c;已经为我们安装上了&#xff0c;这里我们直接使用即可。

我们先进入php的bin目录看下命令是否存在&#xff0c;对应路径如下&#xff1a; cd /usr/local/Celler/php&#64;7.1/7.1.26 这里的7.1.26为我通过brew install php&#64;7.1安装的php具体版本号&#xff0c;大家可以通过ls命令查看文件夹下是否存在pecl命令

mac系统是自带了php的&#xff0c;大家可以通过php -v检查当前的php 版本是否与自己安装的一致&#xff0c;或者也可以在 cd /usr/local/bin 目录&#xff0c;使用 ls -al 查看

如若为指向brew 安装后的目录&#xff0c;可以使用如下命令&#xff0c;重新进行软关联&#xff1b;

cd /usr/local/bin
ln -s ../Cellar/php&#64;7.1/7.1.26/bin/php php
ln -s ../Cellar/php&#64;7.1/7.1.26/bin/pecl pecl

重新软关联后&#xff0c;记得退出客户终端&#xff0c;然后在进入&#xff0c;运行php -v查看版本号&#xff1b; 修改pecl下载目录、缓存目录权限&#xff0c;不然有可能会失败&#xff1b;

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

安装redis的扩展依赖

pecl install igbinary

现在可以安装redis了&#xff0c;命令如下&#xff1a;

pecl install redis

静静等待安装完成&#xff0c;确认模块是否安装成功;

php -m|grep r

如图所示

在php.ini文件中确认

确定so文件的位置
查看文件
至此redis安装完毕

启动redis服务

redis-server

开机自动启动redis命令

brew services start redis

检查redis是否启动成功

ps -ef | grep -E &#39;php|nginx|redis&#39;

安装mysql

直接使用如下命令安装mysql即可;

brew install mysql

设置mysql密码&#xff0c;前提先要启动mysql&#xff0c;否则会报错。不过本地开发环境都没配置密码。

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[&#39;Servers&#39;][$i][&#39;host&#39;] &#61; &#39;127.0.0.1&#39;;
$cfg[&#39;Servers&#39;][$i][&#39;AllowNoPassword&#39;] &#61; true;

解决方法&#xff0c;貌似8.0的必须要求有密码&#xff1b; 修改my.cnf

cd /usr/local/etc
vim my.cnf
新增一行
default_authentication_plugin &#61; mysql_native_password

登陆数据库&#xff0c;修改密码

mysql -u root -p
mysql>use mysql;
ALTER USER root&#64;&#39;localhost&#39; IDENTIFIED WITH mysql_native_password BY &#39;您的密码&#39;;
mysql>FLUSH PRIVILEGES;

Laravel链接数据库错误处理

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

修改database.php

&#39;mysql&#39; &#61;> [&#39;modes&#39; &#61;> [&#39;ONLY_FULL_GROUP_BY&#39;,&#39;STRICT_TRANS_TABLES&#39;,&#39;NO_ZERO_IN_DATE&#39;,&#39;NO_ZERO_DATE&#39;,&#39;ERROR_FOR_DIVISION_BY_ZERO&#39;,&#39;NO_ENGINE_SUBSTITUTION&#39;,],],

即可修复&#xff1b;

转:https://juejin.im/post/5c8fb28a6fb9a07103548318



推荐阅读
  • Redis的默认端口、数据库使用和多端口配置
    本文介绍了Redis的默认端口、数据库使用和多端口配置的方法。通过选择不同的数据库和使用flushdb命令可以实现对不同数据库的访问和清除数据。同时,本文还介绍了在同一台机器上启用多个Redis实例的方法,并讨论了配置认证密码的步骤和注意事项。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 如何搭建服务器环境php(2023年最新解答)
    导读:本篇文章编程笔记来给大家介绍有关如何搭建服务器环境php的相关内容,希望对大家有所帮助,一起来看看吧。本文目录一览:1、怎么搭建p ... [详细]
  • charles3.11.1抓https包
    结论先行:用的是安卓测试机,没加固之前的生产环境的安装包,可以抓到https请求加固之后的包【也就是要上应用市场的包】,抓不到https请求电脑上的操作:1.安装证书【电脑上安装了 ... [详细]
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社区 版权所有