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
加入開機啟動這樣試試呢,我自己是看後盾人的教學視頻自己學的希望給你個參考,加油