參考鏈接
nginx
安裝命令
brew install nginx
執行結果:
nginx 默認監聽 8080
端口,啟動成功之后,在瀏覽器訪問 http://localhost:8080 可以看到 nginx 的歡迎界面。
默認服務路徑,項目根目錄
/usr/local/var/www
配置文件路徑
nginx安裝好后,只有對應的默認配置文件。
/usr/local/etc/nginx/nginx.conf.default
需要手動拷貝一份為nginx.conf。
執行命令
sudo cp /usr/local/etc/nginx/nginx.conf.default /usr/local/etc/nginx/nginx.conf
這樣就有默認配置文件了。
/usr/local/etc/nginx/nginx.conf
!!!服務啟動命令!!!
brew services start nginx
sudo nginx #啟動nginx服務
sudo nginx -s reload #重新載入配置文件
sudo nginx -s stop #停止nginx服務
!!!注意注意注意!!!
nginx 已經跑起來了,但是目前還不能解析 php,我們需要利用php-fpm
解析。php-fpm 和 php 一起安裝,我們先去安裝 php,再做相關配置。
php
關於php-fpm
Mac上默認安裝了php和php-fpm,所以暫沒使用brew進行php安裝。但需要注意的幾個點:
一、php-fpm對應的配置文件只有默認的。
/private/etc/php-fpm.conf.default
二、拷貝配置文件
sudo /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
三、修改配置
修改error_log 錯誤日志路徑,否則php-fpm會啟動失敗。
error_log = /usr/local/var/log/php-fpm.log
修改nginx配置
當nginx和php-fpm都按照上述配置完畢后,再進行nginx的配置:
一、找到server中的下面代碼,添加index.php
。
location / {
root html;
index index.html index.htm index.php;
}
二、在找到開啟FastCGI server
# 下面是針對Apache服務
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# 這里是針對nginx服務
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
!!!注意注意注意!!!
需要修改上面的配置
需要把1⃣️修改為2⃣️
1⃣️ fastcgi_param SCRIPT_FILENAME/scripts$fastcgi_script_name;
2⃣️ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
三、啟動nginx和php-fpm
sudo nginx -s reload
sudo php-fpm
四、驗證php服務
在/usr/local/var/www
下添加index.php文件,文件里面隨意寫些合法的驗證代碼即可。
在瀏覽器里面運行localhost:8080
,如果返回預期,則說明nginx和php-fpm配置OK,可以進行后續開發啦。
添加自己的servers配置
touch jasper.conf
添加servers配置(配置基本核心的即可)
server {
listen 8081;
index index.php index.html index.htm;
server_name jasper.tme.com;
root /Users/songzeyu/workspace/code/;
# charset utf - 8;
access_log /usr/local/etc/nginx/log/localhost.access.log;
error_log /usr/local/etc/nginx/log/localhost.error.log;
location / {
# if (!-f $request_filename) {
# rewrite ^ /(.*)$ /index.php last;
#}
index index.php;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location =
/50x.html {
}
#proxy the php scripts to php-fpm
location ~ .*\.(php)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
proxy_buffering off;
}
location ~ /\.ht {
deny all;
}
}
添加hosts配置
sodo vi /private/etc/hosts
# 添加一行
127.0.0.1 jasper.tme.com
然后就可以在/Users/songzeyu/workspace/code/
目錄進行開發啦。
其他常見問題
重啟php-fpm失敗1
/private/etc/php-fpm.conf
如果不修改error_log值,運行php-fpm的時候會提示log文件輸出路徑不存在的錯誤。
修改如下:
error_log = /usr/local/var/log/php-fpm.log
無php.ini配置
在目錄下只有默認配置
/private/etc/php.ini.default
需要手動拷貝php.ini配置。
sudo cp /private/etc/php.ini.default /private/etc/php.ini
啟動nginx失敗(端口被占用)
sudo nginx
結果提示80端口被占用。
返回結果:
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: [emerg] still could not bind()
查詢到使用nginx的進程,進行kill掉。
netstat -ano|grep 80
ps aux | grep nginx
sudo kill -9 主進程號
啟動php-fpm失敗
sudo php-fpm
返回結果:
[13-Jul-2019 18:46:39] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48)
[13-Jul-2019 18:46:39] ERROR: FPM initialization failed
查詢使用進程
ps aux | grep php-fpm
返回結果:
songzeyu 56929 0.0 0.0 4298044 1584 s005 T 5:56下午 0:00.03 vi /private/etc/php-fpm.conf
nobody 41541 0.0 0.1 4312548 7784 ?? S 6:49下午 0:00.63 php-fpm
nobody 41540 0.0 0.1 4314684 9584 ?? S 6:49下午 0:00.82 php-fpm
nobody 41515 0.0 0.1 4314640 9568 ?? S 6:48下午 0:00.87 php-fpm
root 16452 0.0 0.0 4309868 300 ?? Ss 五01下午 0:01.04 php-fpm
songzeyu 78046 0.0 0.0 4297908 124 s004 T 四03下午 0:00.02 vi /private/etc/php-fpm.conf
songzeyu 77981 0.0 0.0 4298044 124 s004 T 四03下午 0:00.02 vi /private/etc/php-fpm.conf.default
songzeyu 60719 0.0 0.0 4286472 836 s005 S+ 6:47下午 0:00.00 grep php-fpm
拿到主進程號S,即上圖的41541, 41540,41515
,S+代表有子進程,即16452
。
sudo kill -9 主進程號(41541) // 如果有多個,需要執行多個。