Loading... <div class="tip share">请注意,本文编写于 1162 天前,最后修改于 592 天前,其中某些信息可能已经过时。</div> ## 前言 搭建网站,就是折腾过来折腾过去,但不可能再生产环境上折腾,否则折腾坏了,岂不是又得全部推倒重来。所以需要在本地搭建一个网站环境,由于我平时不用我的台式机,主力机是苹果,这里便记录一下`mac`系统上的搭建过程。 ## 准备工作 新版的 `Mac OS` 内置了`Apache` 和 `PHP`,我的系统版本是`OS X 10.14.3`,可以通过以下命令查看`Apache`和`PHP`的版本号: ```bash $ httpd -v Server version: Apache/2.4.34 (Unix) Server built: Aug 17 2018 18:35:43 $ php -version PHP 7.1.23 (cli) (built: Nov 7 2018 18:20:35) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies ``` 因为我们要自己动手来安装 `Nginx`,因此首先来关闭系统自带的`apache`: ```bash sudo apachectl stop #关闭apache,如果事先没开启过,可以忽略报错信息 ``` 如果你的apache已经加入了launchctl,使用下面的命令来关闭: ```bash sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist ``` 为什么选择关闭`apache`?因为`mac os x`系统自带的`apache`是没有优雅的`remove/uninstall`的方式的... 对于“洁癖”比较严重的童鞋,可以选择直接删除相关的文件!(千万不要手抖删错目录...) ```bash sudo rm /usr/sbin/apachectl sudo rm /usr/sbin/httpd sudo rm -r /etc/apache2/ ``` 删除自带的`php` ```bash sudo rm -r /usr/bin/php ``` 如果没有安装`brew`,可以参照 <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://blog.ruixiaolu.com/archives/16/" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://blog.ruixiaolu.com/usr/uploads/20200312022439.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">Homebrew——MacOS下的包管理神器</p> <div class="inster-summary text-muted"> 前言Homebrew(简称为brew)是Mac下的一个包管理工具,可以用它来安装管理许多Mac没有预装的软件程序,... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> ## `php`(`php7.3`)的安装与配置 运行命令 ```bash brew search php brew info php ``` 查看是否有7.3版本的`php`,正常是存在的,不存在的话请更新`brew`, ```bash brew update ``` 然后执行安装 ```bash brew install php ``` 安装后`cd`到该版本`php`的执行目录下, ```bash cd /usr/local/Cellar/php/7.3.3/bin ``` 发现已经安装好了`pear`、`pecl`和`phpize` 然后可以查看下`php`中已经启用的扩展信息,当前目录下执行 ```bash ./php -m ``` 为`php`设置一个未使用的端口,编辑`php`启动文件(注意,`php7`之前是`php-fpm.conf`文件,php7后的启动项配置是`www.conf`文件) ```bash $ vim /usr/local/etc/php/7.3/php-fpm.d/www.conf #修改监听端口为未使用的端口,默认为9000 listen=127.0.0.1:9000 ``` 开启守护进程,打开 ```bash $ vim /usr/local/etc/php/7.3/php-fpm.conf #修改no为yes daemonize=yes ``` 这样在临时启动`php`的时候就可以在后台运行而不必中断后在执行其他命令了,设置软连接 ```bash ln -s /usr/local/Cellar/php/7.3.3/sbin/php-fpm /usr/local/bin/php-fpm73 ``` 这样之后再启动php7.3时,只需要执行php-fpm73就可以再后台运行了,很方便吧,运行后可以用php自带的服务查看 将`php`路径加入`PATH` ```bash sudo vim ~/.bash_profile export PATH="$(brew --prefix php)/bin:$PATH" source ~/.bash_profile ``` 加入`launchctl`启动控制 ```bash mkdir -p ~/Library/LaunchAgents cp /usr/local/opt/php/homebrew.mxcl.php.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php.plist ``` ## `nginx`的安装与配置 安装`nginx` ```bash brew install nginx ``` 修改配置文件 ```bash sudo vim /usr/local/etc/nginx/nginx.conf #修改默认的8080端口为80 listen 80 #开启php支持,找到以下内容取消注释并修改 location / { root html; index index.php index.html index.htm; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ``` 给予管理员权限 ```bash sudo chown root:wheel /usr/local/opt/nginx/bin/nginx sudo chmod u+s /usr/local/opt/nginx/bin/nginx ``` 加入`launchctl`启动控制 ```bash mkdir -p ~/Library/LaunchAgents cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist ``` 开关`nginx`命令 ```bash sudo nginx #打开 nginx nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出 nginx nginx -t #测试配置是否有语法错误 ``` 用法详解 ```bash nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives] ``` 选项列表 ```bash -?,-h : 打开帮助信息 -v : 显示版本信息并退出 -V : 显示版本和配置选项信息,然后退出 -t : 检测配置文件是否有语法错误,然后退出 -q : 在检测配置文件期间屏蔽非错误信息 -s signal : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件) -p prefix : 设置前缀路径(默认是:/usr/local/Cellar/nginx/1.2.6/) -c filename : 设置配置文件(默认是:/usr/local/etc/nginx/nginx.conf) -g directives : 设置配置文件外的全局指令 ``` 添加虚拟主机`server`的目录`/usr/local/etc/nginx/servers`,新建文件 ```bash $ vim typecho #以下为typecho的配置文件 server { listen 80; charset utf-8; #access_log /var/log/nginx/log/weapp-access.log main; #error_log /var/log/nginx/log/weapp-error.log; root typecho; #网站的目录 index index.php index.html index.htm; #location / { # try_files $uri $uri/ /index.php?/$request_uri; # } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; #对应采用版本的php ip:端口 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } ``` 这里需要说明的是,我的`php7.3`的端口配置为了`9000`,所以在`fastcgi_pass`这里配置为`:9000` 重启`nginx`即可。 ## 安装`php`扩展`swoole,xdebug,igbinary,redis` `cd`到该版本`php`的执行目录下, ```bash cd /usr/local/Cellar/php/7.3.3/bin ``` <div class="tip inlineBlock warning"> 注意: 1. 执行哪个版本的php命令,就是把扩展安装在那个版本的php中(这里就是装在php7.3中) 2. 要使用sudo执行才会成功,否则报错。 </div> ### `swoole`安装 执行 ```bash sudo ./pecl install swoole ``` 如果想使用`socket`或者异步`redis`,可以在安装过程中的提示中对应项输入`yes`。 然后一路回车即可。可以参考知乎文章`https://zhuanlan.zhihu.com/p/35974610` ### `xdebug`安装 执行 ```bash sudo ./pecl install xdebug ``` ### `igbinary`安装 执行 ```bash sudo ./pecl install igbinary ``` ### `redis`安装 执行 ```bash sudo ./pecl install redis ``` 安装扩展后会自动写入配置,无需再修改配置文件 最后修改:2020 年 10 月 11 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
1 条评论
非常谢谢,找了很久终于找到了解决pcntl扩展的问题了,不知道为什么brew安装php7.2不带pcntl扩展,还是非常感谢,希望能和你交个朋友,我的qq是:1476982312,如果你也想交个朋友可以加一下我的qq,我是一个刚毕业的不知名PHP爱好者!!!