前言
搭建网站,就是折腾过来折腾过去,但不可能再生产环境上折腾,否则折腾坏了,岂不是又得全部推倒重来。所以需要在本地搭建一个网站环境,由于我平时不用我的台式机,主力机是苹果,这里便记录一下mac
系统上的搭建过程。
准备工作
新版的 Mac OS
内置了Apache
和 PHP
,我的系统版本是OS X 10.14.3
,可以通过以下命令查看Apache
和PHP
的版本号:
$ 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
:
sudo apachectl stop #关闭apache,如果事先没开启过,可以忽略报错信息
如果你的apache已经加入了launchctl,使用下面的命令来关闭:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
为什么选择关闭apache
?因为mac os x
系统自带的apache
是没有优雅的remove/uninstall
的方式的... 对于“洁癖”比较严重的童鞋,可以选择直接删除相关的文件!(千万不要手抖删错目录...)
sudo rm /usr/sbin/apachectl
sudo rm /usr/sbin/httpd
sudo rm -r /etc/apache2/
删除自带的php
sudo rm -r /usr/bin/php
如果没有安装brew
,可以参照
php
(php7.3
)的安装与配置
运行命令
brew search php
brew info php
查看是否有7.3版本的php
,正常是存在的,不存在的话请更新brew
,
brew update
然后执行安装
brew install php
安装后cd
到该版本php
的执行目录下,
cd /usr/local/Cellar/php/7.3.3/bin
发现已经安装好了pear
、pecl
和phpize
然后可以查看下php
中已经启用的扩展信息,当前目录下执行
./php -m
为php
设置一个未使用的端口,编辑php
启动文件(注意,php7
之前是php-fpm.conf
文件,php7后的启动项配置是www.conf
文件)
$ vim /usr/local/etc/php/7.3/php-fpm.d/www.conf
#修改监听端口为未使用的端口,默认为9000
listen=127.0.0.1:9000
开启守护进程,打开
$ vim /usr/local/etc/php/7.3/php-fpm.conf
#修改no为yes
daemonize=yes
这样在临时启动php
的时候就可以在后台运行而不必中断后在执行其他命令了,设置软连接
ln -s /usr/local/Cellar/php/7.3.3/sbin/php-fpm /usr/local/bin/php-fpm73
这样之后再启动php7.3时,只需要执行php-fpm73就可以再后台运行了,很方便吧,运行后可以用php自带的服务查看
将php
路径加入PATH
sudo vim ~/.bash_profile
export PATH="$(brew --prefix php)/bin:$PATH"
source ~/.bash_profile
加入launchctl
启动控制
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
brew install nginx
修改配置文件
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;
}
给予管理员权限
sudo chown root:wheel /usr/local/opt/nginx/bin/nginx
sudo chmod u+s /usr/local/opt/nginx/bin/nginx
加入launchctl
启动控制
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
命令
sudo nginx #打开 nginx
nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出 nginx
nginx -t #测试配置是否有语法错误
用法详解
nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
选项列表
-?,-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
,新建文件
$ 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
的执行目录下,
cd /usr/local/Cellar/php/7.3.3/bin
- 执行哪个版本的php命令,就是把扩展安装在那个版本的php中(这里就是装在php7.3中)
- 要使用sudo执行才会成功,否则报错。
swoole
安装
执行
sudo ./pecl install swoole
如果想使用socket
或者异步redis
,可以在安装过程中的提示中对应项输入yes
。
然后一路回车即可。可以参考知乎文章https://zhuanlan.zhihu.com/p/35974610
xdebug
安装
执行
sudo ./pecl install xdebug
igbinary
安装
执行
sudo ./pecl install igbinary
redis
安装
执行
sudo ./pecl install redis
安装扩展后会自动写入配置,无需再修改配置文件
1 条评论
非常谢谢,找了很久终于找到了解决pcntl扩展的问题了,不知道为什么brew安装php7.2不带pcntl扩展,还是非常感谢,希望能和你交个朋友,我的qq是:1476982312,如果你也想交个朋友可以加一下我的qq,我是一个刚毕业的不知名PHP爱好者!!!