1. 如何正确配置 Nginx 和 php
直接贴上代码逐行进行讲解,此处贴出一个能正常启动php脚本的最简nginx vhost配置:
[plain] view plain
server {
listen 8011;
server_name test.cn;
location ~ \.php?.*$ {
root /share/test;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
1、第一个大括号 server{ }:不必多说,代表一个独立的server,
2、listen 8011:代表该server监听8011端口
3、location ~ \.php?.*${
}:代表一个能匹配对应uri的location,用于匹配一类uri,并对所匹配的uri请求做自定义的逻辑、配置。这里的location,匹配了所有带.php的uri请求,例如:http://192.168.244.128:8011/test.php/asdasd
http://192.168.244.128:8011/index.php等
4、root /share/test:请求资源根目录,告诉匹配到该location下的uri到/share/teset文件夹下去寻找同名资源。
5、fastcgi_pass 127.0.0.1:9000:这行开始是本文的重点:这行代码的意思是,将进入到该location内的uri请求看做是cgi程序,并将请求发送到9000端口,交由php-fpm处理。
6、fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
:这行配置意思是:动态添加了一行fastcgi配置,配置内容为SCRIPT_FILENAME,告知管理进程,cgi脚本名称。由于我的nginx中只有fastcgi_params文件,没有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具体值,就必须要动态的添加这行配置。
7、include fastcgi_params; 引入fastcgi配置文件
以上就是最简洁版的nginx启动php脚本的最简配置,当重启nginx之后,在/share/test目录下创建一个xx.php文件,输入<?php
echo "hello world"; ?>保存,然后在浏览器中访问localhost:8011/xx.php
就可以在网页上显示hello world了。
2. 如何正确配置Nginx+PHP
其实没多复杂
1. 将nginx和php都装好了
2. 然后配置nginx,将php请求分发给php-fpm处理
linux下的配置文件一般在/usr/local/nginx/conf/nginx.conf
找到下面字样,并取消注释,且注意这个$document_root这个地方(原本应为$script***的,改成$document_root)
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;
}
3.启动nginx和php-fpm,然后写个phpinfo脚本测试下成功与否就可以了
3. mac怎么配置php7+nginx
安装好brew之后,先安装php7。安装php7之前,要先更新一下brew的源并加入一些第三方的库:
brew update
brew tap homebrew/pes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
然后就可以使用brew搜索php70的包并安装了!
4. mac 怎么用nginx支持php后台
Nginx一般都会运行多个域名,因此这里参考了@fish的方法,按Ubuntu的文件夹结构来存放Nginx的配置文件
mkdir -p /usr/local/var/logs/nginx
mkdir -p /usr/local/etc/nginx/sites-available
mkdir -p /usr/local/etc/nginx/sites-enabled
mkdir -p /usr/local/etc/nginx/conf.d
mkdir -p /usr/local/etc/nginx/ssl
编辑Nginx全局配置
vim /usr/local/etc/nginx/nginx.conf
worker_processes 1;
error_log /usr/local/var/logs/nginx/error.log debug;
pid /usr/local/var/run/nginx.pid;
events {
worker_connections 256;
}
这样试试呢,我在后盾人看过教材,我把他们讲的最相近的题目加讲解发给你了,希望能帮到你
5. mac 权限的nginx怎么支持php
Mac OSX下配置nginx和php
首先安装nginx, 其次需要HomeBrew, 按照官网说明安装
然后安装PHP,以下的命令在终端执行:
更新下brew的库,加入php支持:
brew tap homebrew/pes
brew tap josegonzalez/homebrew-php
然后执行:
# 需要mysql,就把--without-mysql改为--with-mysql
brew install --without-apache --with-fpm --without-mysql php55
执行上面的命令后,brew就开始下载php源码并编译安装,大概几分钟时间。
安装完成后,配置php/bin到终端环境(未验证,貌似跟mac本身自带的php有冲突?):
#这一步成不成功没关系,这步的目的只是让终端可以执行PHP命令,不影响web服务器使用
echo 'export PATH="$(brew --prefix josegonzalez/php/php55)/bin:$PATH"' >> ~/.bash_profile
设置随系统自动启动:
mkdir -p ~/Library/LaunchAgents
#注意文件homebrew.mxcl.php55.plist的路径,需要根据实际情况改成自己的目录和文件名
cp /usr/local/Cellar/php55/5.5.13/homebrew.mxcl.php55.plist ~/Library/LaunchAgents/
上面只是设置了自启动,但是还没真正启动,所以执行以下命令手动启动PHP-FPM:
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist
php的配置和启动工作已经结束了,然后验证一下,执行
lsof -Pni4 | grep LISTEN | grep php
如果输出以下类似内容,那就表示成功了,否则。。。自找原因吧:
php-fpm 69659 frdmn 6u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 69660 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 69661 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
php-fpm 69662 frdmn 0u IPv4 0x8d8ebe505a1ae01 0t0 TCP 127.0.0.1:9000 (LISTEN)
最后就是配置nginx虚拟机:
server {
listen 80;
server_name php.cssor.com;
root /var/www;
location / {
index index.html index.shtml;
}
#配置后缀为.php的就交给php引擎处理
#如果需要整站都托管给php,就把location ~ \.php$ 替换为location / ,同时上面的location / 配置就不需要了
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
6. 如何在mac上搭建nginx+mysql+php
homebrew是mac下非常好用的包管理器,会自动安装相关的依赖包,将你从繁琐的软件依赖安装中解放出来。
安装homebrew也非常简单,只要在终端中输入:
<!-- lang: shell -->
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
homebrew的常用命令:
<!-- lang: shell -->
brew update #更新可安装包的最新信息,建议每次安装前都运行下
brew search pkg_name #搜索相关的包信息
brew install pkg_name #安装包
7. 如何在 OSX 上架设 Nginx+MariaDB+PHP 服务器
打开“Mac App Store”下载并安装“Xcode”。
打开“Xcode”,按下同意并接受Xcode的使用条款。
打开“终端机(Terminal)”,输入下面的指令并且安装Homebrew。
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
输入下面的指令让其他程式知道Xcode的位置。
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
之后,“按此”下载最新版本的X11并且安装。
之后建立X11的符号链接(软链接)。
sudo ln -s /opt/X11 /usr/X11
之后使用下面的指令查看透过Homebrew安装的套件。
brew list
之后输入下面指令查看当前系统变数。
$PATH
打开“.bash_profile”并修改系统变数。
vim ~/.bash_profile
将“/usr/local/bin”放在“/usr/local/sbin”之前。例如︰
export PATH=~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/git/bin:/opt/local/bin
接着,请参考文章“[教学] 在 OSX 10.8 上设定 Postfix 邮件传送代理 (MTA)”设定Postfix。
启用Postfix。
sudo postfix start
安装 dnsmasq 设定 DNS
透过Homebrew安装dnsmasq,以加速网路存取速度。
brew install dnsmasq
复制和编辑dnsmasq.conf。
mkdir /usr/local/etc
cp $(brew --prefix dnsmasq)/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
vim /usr/local/etc/dnsmasq.conf
更改dnsmasq.conf内的数值。
resolv-file=/etc/resolv.dnsmasq.conf
address=/.ld/127.0.0.1
listen-address=127.0.0.1
建立并编辑DNS解析文件。
sudo vim /etc/resolv.dnsmasq.conf
在“resolv.dnsmasq.conf”文件内贴上以下内容。
# Google DNS IPv6:
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
# OpenDNS IPv6:
nameserver 2620:0:ccd::2
nameserver 2620:0:ccc::2
# Google DNS:
nameserver 8.8.8.8
nameserver 8.8.4.4
# OpenDNS:
nameserver 208.67.222.222
nameserver 208.67.220.220
设定开机自动执行dnsmasq。
sudo cp $(brew --prefix dnsmasq)/homebrew.mxcl.dnsmasq.plist /Library/LaunchDaemons
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
设定你的Hostname。
sudo scutil --set HostName foolegg
打开“系统设定”,在“网络”内分别选择“Wi-fi”和“Ethernet”,在“进阶”内设定“127.0.0.1”为DNS服务器。
安装 Nginx
输入下面指令关闭自动启用Apache。
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
之后透过Homebrew安装Nginx。
brew install nginx
安装完成后,复制和备份nginx.conf。
cp /usr/local/etc/nginx/nginx.conf /usr/local/etc/nginx/nginx.conf.bak
打开nginx.conf,删除所有内容,使用下面的内容取代。
# Nginx web server main configuration file nginx.conf
#
user www-data staff;
worker_processes 4;
worker_rlimit_nofile 8192;
error_log /usr/local/var/log/nginx/error.log;
#pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 10;
tcp_nodelay on;
gzip on;
client_max_body_size 100M;
#access_log /usr/local/var/log/nginx/access.log main;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
## FastCGI.
include /usr/local/etc/nginx/fastcgi.conf;
## For the filefield_nginx_progress mole to work. From the
## README. Reserve 1MB under the name 'uploads' to track uploads.
#upload_progress uploads 1m;
#include /etc/nginx/conf.d/*.conf;
#include /usr/local/etc/nginx/aegir.conf;
server {
listen 80;
server_name localhost;
server_tokens off;
#access_log /usr/local/var/log/nginx/access.log main;
root /usr/share/nginx/www/public_html;
location / {
root /usr/share/nginx/www/public_html;
index index.html index.htm;
##### Use this if you're going to install wordpress #####
#if (-f $request_filename/index.html) {
# rewrite (.*) $1/index.html break;
#}
#if (-f $request_filename/index.php) {
# rewrite (.*) $1/index.php;
#}
#if (-f $request_filename) {
# rewrite (.*) /index.php;
#}
#if (!-e $request_filename) {
# rewrite ^.+?(/wp-.*) $1 last;
# rewrite ^.+?(/.*\.php)$ $1 last;
# rewrite ^ /index.php last;
#}
#rewrite /wp-admin$ $scheme://$host$uri/ permanent;
##### End #####
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www/public_html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
之后建立Nginx的log资料夹和其它必要的目录。
sudo mkdir -p /usr/local/var/log/nginx/
touch /usr/local/var/log/nginx/error.log
touch /usr/local/var/log/nginx/access.log
sudo mkdir -p /usr/share/nginx/www/public_html
安装 MariaDB
透过Homebrew安装MariaDB。
brew install mariadb --use-llvm --env=std
取消TMPDIR设定。
unset TMPDIR
初始化MySQL数据库。请将5.5.30更改为你当前使用的版本编号。
cd /usr/local/Cellar/mariadb/5.5.30/scripts
mysql_install_db --user=`whoami` --basedir="$(brew --prefix mariadb)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
系统会提示错误,请忽略有关错误。下面的教学设定会更正错误。
安装 PHP
虽然OSX上已经安装了PHP,但是我们不会使用Apple的PHP。
输入下面的指令安装PHP。
brew tap josegonzalez/homebrew-php
brew tap homebrew/pes
brew install php53 --with-mysql --with-fpm --with-imap
brew install php53-xhprof
brew install php53-xdebug
brew install php53-uploadprogress
brew install php53-memcached
brew install php53-imagick
打开并修改php.ini。
vim /usr/local/etc/php/5.3/php.ini
搜索
extension=php_zip.dll
在下面加上以下内容,请更改版本编号。
extension="/usr/local/Cellar/php53-xhprof/0.9.2/xhprof.so"
extension="/usr/local/Cellar/php53-uploadprogress/1.0.3.1/uploadprogress.so"
extension="/usr/local/Cellar/php53-memcached/2.1.0/memcached.so"
extension="/usr/local/Cellar/php55-imagick/3.1.0RC2/imagick.so"
zend_extension="/usr/local/Cellar/php53-xdebug/2.2.1/xdebug.so"
到“PHP手册”寻找你身处地区的时区。修改php.ini内的“date.timezone”变数的数值。
date.timezone = Asia/Hong_Kong
寻找以下3个变数的数值。如果找不到,请在档案的最尾部份加上3个变数和数值。
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off
修改记忆体和上传限制的数值。如果变量前出现分号“;”,请将之删除。
memory_limit = 256M
post_max_size = 100M
upload_max_filesize = 100M
打开并修改php-fpm.conf档案。
vim /usr/local/etc/php/5.3/php-fpm.conf
搜索
pid = run/php-fpm.pid
在下面加上
pid = /usr/local/var/run/php-fpm.pid
之后删除下面4行变数和数值前的分号“;”。
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 5
pm.max_requests = 500
按照下面修改“error_log”的数值。
error_log = /usr/local/var/log/php-fpm.log
之后建立log的符号链接(软链接)。
sudo ln -s $(brew --prefix josegonzalez/php/php53)/var/log/php-fpm.log /usr/local/var/log/php-fpm.log
开机启用服务
设定Nginx的启用服务。
sudo cp $(brew --prefix nginx)/homebrew.mxcl.nginx.plist /Library/LaunchDaemons/
sudo chown root:wheel /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
打开并修改“homebrew.mxcl.nginx.plist”。
sudo vim /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
在“homebrew.mxcl.nginx.plist”内删除以下内容。
<key>KeepAlive</key>
<true/>
<key>UserName</key>
<string>[YourUserName]</string>
开启Nginx。
launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
为软件建立资料夹。
mkdir -p ~/Library/LaunchAgents
设定MariaDB的启用服务。
cp $(brew --prefix mariadb)/homebrew.mxcl.mariadb.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
设定PHP的启用服务。
cp $(brew --prefix josegonzalez/php/php53)/homebrew-php.josegonzalez.php53.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php53.plist
完成MariaDB的设定。
sudo $(brew --prefix mariadb)/bin/mysql_secure_installation
为MySQL设定密码。
Enter current password for root (enter for none): [Enter]
Set root password? [Y/n] y
New password: [password]
Re-enter new password: [password]
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
测试PHP
建立并修改index.php。
vim /usr/share/nginx/www/public_html/index.php
输入并储存以下内容。
<?php phpinfo(); ?>
从新启动Nginx。
sudo nginx -s reload
打开浏览器,输入“http://localhost/index.php”查看是否成功运行PHP。
启动或停止MNMP
在桌面或其他位置建立Shell Script“mnmp.sh”。
vim mnmp.sh
在Shell Script“mnmp.sh”内加入以下内容,然后储存档案。
#!/bin/bash
case "$1" in
start)
# Start MariaDB
echo -e "Starting mariadb..."
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
# Start PHP
echo -e "Starting php..."
launchctl load -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php53.plist
# Start Nginx
echo -e "Starting nginx..."
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
;;
stop)
# Stop MariaDB
echo -e "Stopping mariadb..."
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mariadb.plist
# Stop PHP
echo -e "Stopping php..."
launchctl unload -w ~/Library/LaunchAgents/homebrew-php.josegonzalez.php53.plist
# Stop Nginx
echo -e "Stopping nginx..."
sudo launchctl unload -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist
;;
esac
exit 0
为Shell Script“mnmp.sh”加入可执行权限。
chmod 700 mnmp.sh
使用以下指令启动MNMP。
./mnmp.sh start
使用以下指令停止MNMP。
./mnmp.sh stop
PHP档案存取错误
有部份读者反映在存取PHP档案时出现错误。大家可以打开档案“/usr/local/var/log/nginx/error.log”查看错误的原因。
如果出现下面的原因,可能是因为php-fpm的问题。
[error] <NUMBER>#0: *<NUMBER> kevent() reported that connect() fa iled (<NUMBER>: Connection refused) while connecting to upstream, client: 127.0.0. 1, server: localhost, request: “GET /index.php HTTP/1.1″, upstream: “fastcgi ://127.0.0.1:9000″, host: “127.0.0.1″
大家可以使用“netstat -anp tcp | grep 9000”或者“lsof -i tcp:9000”查看占用Port 9000的进程,并且将其终止。之后使用下面指令开启php-fpm。
sudo /usr/local/sbin/php-fpm --fpm-config /usr/local/etc/php/5.3/php-fpm.conf
请再次测试是否成功存取php。如果成功,请依照下面设定自动启动php-fpm。
设定自动启动php-fpm
建立文件“~/Library/LaunchAgents/org.php-fpm.plist”。
8. 安装nginx+php后,Php页面访问时提示404,但页面是存在的.
安装nginx+php后,Php页面访问时提示404,但页面是存在的,应该是下面的原因造成的:
这个是因为index.html 文件目录是nginx默认安装目录 /usr/local/nginx/html,而info.php 把它放到了 /data/web 下造成的,可以在nginx.conf配置文档里面找到相应的问题。
可以按照下面测试更改:
location ~ .php$ {
root /data/web;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
nginx -t && nginx -s reload
9. 怎么在nginx中运行php文件
nginx本身不能处理php,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。
nginx一般是把请求发fastcgi管理进程处理,fascgi管理进程选择cgi子进程处理结果并返回给nginx本文以php-fpm为例介绍如何使nginx支持php.
10. brew 安装php5.6 怎么修改php.ini
卸载mac自带的apache和php,有用集成环境,建议也删掉
先停掉apache:
sudo apachectl stop
然后统统删掉
sudo rm /usr/sbin/httpd
sudo rm -r /etc/apache2/
2.安装nginx
brew install nginx
安装完后,先不急着修改配置文件
先设置权限
sudo chown root:wheel/usr/local/opt/nginx/bin/nginx
sudo chmod u+s/usr/local/opt/nginx/bin/nginx
如果想设开机启动的话
mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist(取消开机启动)
nginx命令
sudo nginx #打开 nginx
nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出 nginx
nginx -t #测试配置是否有语法错误
如果提示pid丢失的话,就用这句话
nginx -c "/usr/local/etc/nginx/nginx.conf"
好了nginx安装完毕,大家可以localhost一下,就可以看到nginx的信息了
3.安装mysql
brew install mysql
加入开机启动这样试试呢,我自己是看后盾人的教学视频自己学的希望给你个参考,加油