mac安装nginx+php
<h2 id="参考链接">参考链接</h2><ul>
<li>nginx安装指南-1</li>
<li>nginx安装指南-2</li>
<li>安装指南-3</li>
</ul>
<h2 id="nginx">nginx</h2>
<p>安装命令</p>
<pre><code>brew install nginx
</code></pre>
<p>执行结果:<br>
<img src="https://img2018.cnblogs.com/blog/668985/201907/668985-20190713192035535-1927785059.png"></p>
<p><strong>nginx 默认监听 <code>8080</code> 端口,启动成功之后,在浏览器访问 http://localhost:8080 可以看到 nginx 的欢迎界面。</strong></p>
<p><strong>默认服务路径,项目根目录</strong></p>
<pre><code>/usr/local/var/www
</code></pre>
<p><strong>配置文件路径</strong></p>
<p>nginx安装好后,只有对应的默认配置文件。</p>
<pre><code>/usr/local/etc/nginx/nginx.conf.default
</code></pre>
<p>需要手动拷贝一份为nginx.conf。</p>
<p>执行命令</p>
<pre><code>sudo cp /usr/local/etc/nginx/nginx.conf.default/usr/local/etc/nginx/nginx.conf
</code></pre>
<p>这样就有默认配置文件了。</p>
<pre><code>/usr/local/etc/nginx/nginx.conf
</code></pre>
<p><strong>!!!服务启动命令!!!</strong></p>
<pre><code>brew services start nginx
</code></pre>
<pre><code>sudo nginx #启动nginx服务
sudo nginx -s reload #重新载入配置文件
sudo nginx -s stop #停止nginx服务
</code></pre>
<p><strong>!!!注意注意注意!!!</strong></p>
<p>nginx 已经跑起来了,但是目前还不能解析 php,我们需要利用<code>php-fpm</code>解析。php-fpm 和 php 一起安装,我们先去安装 php,再做相关配置。</p>
<h2 id="php">php</h2>
<h3 id="关于php-fpm">关于php-fpm</h3>
<p>Mac上默认安装了php和php-fpm,所以暂没使用brew进行php安装。但需要注意的几个点:</p>
<p>一、php-fpm对应的配置文件只有默认的。</p>
<pre><code>/private/etc/php-fpm.conf.default
</code></pre>
<p>二、拷贝配置文件</p>
<pre><code>sudo /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
</code></pre>
<p>三、修改配置</p>
<p>修改error_log 错误日志路径,否则php-fpm会启动失败。</p>
<pre><code>error_log = /usr/local/var/log/php-fpm.log
</code></pre>
<h2 id="修改nginx配置">修改nginx配置</h2>
<p>当nginx和php-fpm都按照上述配置完毕后,再进行nginx的配置:</p>
<p>一、找到server中的下面代码,添加<code>index.php</code>。</p>
<pre><code>location / {
root html;
indexindex.html index.htm index.php;
}
</code></pre>
<p>二、在找到开启<code>FastCGI server</code></p>
<pre><code># 下面是针对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_indexindex.php;
#fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
</code></pre>
<p><strong>!!!注意注意注意!!!</strong></p>
<p>需要修改上面的配置</p>
<pre><code>需要把1⃣️修改为2⃣️
1⃣️ fastcgi_param SCRIPT_FILENAME/scripts$fastcgi_script_name;
2⃣️ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
</code></pre>
<p>三、启动nginx和php-fpm</p>
<pre><code>sudo nginx -s reload
sudo php-fpm
</code></pre>
<p>四、验证php服务</p>
<p>在<code>/usr/local/var/www</code>下添加index.php文件,文件里面随意写些合法的验证代码即可。</p>
<p>在浏览器里面运行<code>localhost:8080</code>,如果返回预期,则说明nginx和php-fpm配置OK,可以进行后续开发啦。</p>
<h3 id="添加自己的servers配置"><strong>添加自己的servers配置</strong></h3>
<pre><code>touch jasper.conf
</code></pre>
<p>添加servers配置(配置基本核心的即可)</p>
<pre><code>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_indexindex.php;
include fastcgi.conf;
proxy_buffering off;
}
location ~ /\.ht {
deny all;
}
}
</code></pre>
<p>添加hosts配置</p>
<pre><code>sodo vi /private/etc/hosts
# 添加一行
127.0.0.1jasper.tme.com
</code></pre>
<p>然后就可以在<code>/Users/songzeyu/workspace/code/</code>目录进行开发啦。</p>
<h2 id="其他常见问题">其他常见问题</h2>
<h3 id="重启php-fpm失败1">重启php-fpm失败1</h3>
<pre><code>/private/etc/php-fpm.conf
</code></pre>
<p>如果不修改error_log值,运行php-fpm的时候会提示log文件输出路径不存在的错误。</p>
<p>修改如下:</p>
<pre><code>error_log = /usr/local/var/log/php-fpm.log
</code></pre>
<h3 id="无phpini配置">无php.ini配置</h3>
<p>在目录下只有默认配置</p>
<pre><code>/private/etc/php.ini.default
</code></pre>
<p>需要手动拷贝php.ini配置。</p>
<pre><code>sudo cp /private/etc/php.ini.default/private/etc/php.ini
</code></pre>
<h3 id="启动nginx失败端口被占用">启动nginx失败(端口被占用)</h3>
<pre><code>sudo nginx
</code></pre>
<p>结果提示80端口被占用。</p>
<p>返回结果:</p>
<pre><code>nginx: bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8080 failed (48: Address already in use)
nginx: bind() to 0.0.0.0:8081 failed (48: Address already in use)
nginx: still could not bind()
</code></pre>
<p>查询到使用nginx的进程,进行kill掉。</p>
<pre><code>netstat -ano|grep 80
ps aux | grep nginx
sudo kill -9主进程号
</code></pre>
<h3 id="启动php-fpm失败">启动php-fpm失败</h3>
<pre><code>sudo php-fpm
</code></pre>
<p>返回结果:</p>
<pre><code> ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48)
ERROR: FPM initialization failed
</code></pre>
<p>查询使用进程</p>
<pre><code>ps aux | grep php-fpm
</code></pre>
<p>返回结果:</p>
<pre><code>songzeyu 56929 0.00.04298044 1584 s005T 5:56下午 0:00.03 vi /private/etc/php-fpm.conf
nobody 41541 0.00.14312548 7784 ??S 6:49下午 0:00.63 php-fpm
nobody 41540 0.00.14314684 9584 ??S 6:49下午 0:00.82 php-fpm
nobody 41515 0.00.14314640 9568 ??S 6:48下午 0:00.87 php-fpm
root 16452 0.00.04309868 300 ??Ss 五01下午 0:01.04 php-fpm
songzeyu 78046 0.00.04297908 124 s004T 四03下午 0:00.02 vi /private/etc/php-fpm.conf
songzeyu 77981 0.00.04298044 124 s004T 四03下午 0:00.02 vi /private/etc/php-fpm.conf.default
songzeyu 60719 0.00.04286472 836 s005S+ 6:47下午 0:00.00 grep php-fpm
</code></pre>
<p>拿到主进程号S,即上图的<code>41541, 41540,41515</code>,S+代表有子进程,即<code>16452</code>。</p>
<pre><code>sudo kill -9主进程号(41541) // 如果有多个,需要执行多个。
</code></pre><br><br>
来源:https://www.cnblogs.com/jaspersong/p/11181769.html
頁:
[1]