[toc]
在公司的網(wǎng)站上推薦使用 docker 容器來安裝環(huán)境嗽桩,一個項目一個 docker 容器。
铲掐、豪硅、
百度百科:https://baike.baidu.com/item/Docker/13344470?fr=aladdin
```nginx
server {
? ? listen 80;
? ? server_name? example.com;
? ? index index.php index.html index.htm;
? ? client_max_body_size 50M;
? ? error_log /home/deploy/apps/logs/example.error.log;
? ? access_log /home/deploy/apps/logs/example.access.log;
? ? root? /home/deploy/apps/example.com/current/public;
? ? # Load configuration files for the default server block.
? ? include /etc/nginx/default.d/*.conf;
? ? location / {
? ? ? ? try_files $uri $uri/ /index.php$is_args$args;
? ? }
? ? location ~ \.php {
? ? ? ? try_files $uri /index.php =404;
? ? ? ? fastcgi_split_path_info ^(.+\.php)(/.+)$;
? ? ? ? fastcgi_param SCRIPT_NAME $fastcgi_script_name;
? ? ? ? fastcgi_index index.php;
? ? ? ? fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
? ? ? ? fastcgi_pass 127.0.0.1:9000;
? ? ? ? include fastcgi_params;
? ? }
}
````
#### 首先要安裝 epel、remi 源
地址:...
#### 安裝 PHP
現(xiàn)在丽旅,我們要從 EPEL 和 remi 倉庫中安裝最新版 PHP 椰棘。在安裝之前,我們要知道有哪些可用的 PHP 包,以及各自的作用榄笙,PHP 以兩種形式分發(fā)邪狞;一種是 CLI 包,目的是讓我們在命令行中使用 PHP(我們會以這種形式)茅撞,另外還有幾個 PHP 包帆卓,把 PHP 與 Apache或Nginx Web 服務(wù)器集成在一起。
##### 安裝 PHP CLI 包和 PHP-FPM:
Nginx本身不能處理PHP米丘,它只是個web服務(wù)器剑令,當(dāng)接收到請求后,如果是php請求拄查,則發(fā)給php解釋器處理吁津,并把結(jié)果返回給客戶端。
Nginx一般是把請求發(fā)fastcgi管理進(jìn)程處理靶累,fascgi管理進(jìn)程選擇cgi子進(jìn)程處理結(jié)果并返回給 nginx
一、編譯安裝php-fpm
什么是PHP-FPM
PHP-FPM是一個PHP FastCGI管理器癣疟,是只用于PHP的,可以在 http://php-fpm.org/download下載得到.
PHP-FPM其實是PHP源代碼的一個補丁挣柬,旨在將FastCGI進(jìn)程管理整合進(jìn)PHP包中。必須將它patch到你的PHP源代碼中睛挚,在編譯安裝PHP后才可以使用邪蛔。
新版PHP已經(jīng)集成php-fpm了,不再是第三方的包了扎狱,推薦使用侧到。PHP-FPM提供了更好的PHP進(jìn)程管理方式,可以有效控制內(nèi)存和進(jìn)程淤击、可以平滑重載PHP配置匠抗,比spawn-fcgi具有更多優(yōu)點,所以被PHP官方收錄了污抬。在./configure的時候帶 –enable-fpm參數(shù)即可開啟PHP-FPM汞贸,其它參數(shù)都是配置php的绳军,具體選項含義可以查看這里。
```
sudo yum -y --enablerepo=epel,remi,remi-php70 install php-fpm php-cli php-gb php-mbstring php-mcrypt php-mysqlnd php-opcache php-pdo php-devel php-xml;
// 或者是只使用 remi-php70 倉庫
sudo yum -y --enablerepo=remi-php70 install php-fpm php-cli php-gb php-mbstring php-mcrypt php-mysqlnd php-opcache php-pdo php-devel? php-xml;
```
`--enablerepo` 這個選項的作用是矢腻,告訴 `yum` 從 EPEL门驾、remi和remi-php70 倉庫中安裝指定的軟件包。沒有這個選項的話多柑,`yum` 只是使用默認(rèn)的軟件源奶是。`--enablerepo=remi` 意思是使用 `remi` 源】⒐啵或者修改 `/etc/yum.repos.d` 文件夾下面的 `epel.repo` 或 `remi.repo` 兩個文件中的 `enabled=0` 屬性聂沙,改為 `enabled=1`.
`-y` 是指全自動安裝。
##### 搜索 PHP 擴展
```
yum search php
```
找到 PHP 擴展列表之后帐偎,按照下面演示的方法安裝,你安裝的包或許有所不同
確認(rèn) PHP 是否安裝成功
```
php -v
```
##### 報錯
如果報以下錯誤:
```
PHP Warning:? PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/sqlite3.so' - /usr/lib64/php/modules/sqlite3.so: undefined symbol: sqlite3_errstr in Unknown on line 0
```
##### 解決方法
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.(您還可以在終端中運行`php --ini`逐纬,以查看PHP在CLI模式下使用的文件。)
```
php --'ini'
```
找到:`/etc/php.d/20-sqlite3.ini` 配置文件:把 `extension=sqlite3.so`注釋掉削樊。
##### EPEL 和 remi 下載 PHP 擴展
```
sudo yum -y --enablerepo=remi-php70 install 擴展名
// 例如:
sudo yum -y --enablerepo=remi-php70 install php-xdebug
```
##### 配置文件地址
- 擴展配置地址:`/etc/php.d`
? ? - 查看命令:`php --ini`
- 擴展存放目錄:`/usr/lib64/php/modules`
? ? - 查看命令:`php-config --extension-dir` 或 `php -i | grep extension_dir`
> 不啟用擴展在擴展配置文件里面注釋掉即可豁生。
##### 全局配置
在 Ubuntu 中 PHP-FPM 住配置文件所在:`etc/php7/fpm/php-fpm.conf`;
在 CentOS 中 PHP-FPM 住配置文件所在:`etc/php-fpm.conf`;
> PHP-FPM 的配置文件使用 INI 文件格式。
下面是 PHP-FPM 最重要的全局設(shè)置漫贞,我建議把默認(rèn)值改為下面列出的值甸箱,默認(rèn)情況下這兩個設(shè)置可能被注釋掉了,如果需要迅脐,去掉注釋芍殖。這兩個作用是:如果在指定的一段時間內(nèi)優(yōu)指定個子進(jìn)程失效了,讓 PHP-FPM 主進(jìn)程重啟谴蔑。這是 PHP-FPM 進(jìn)程的進(jìn)本安全保障豌骏,能解決簡單的問題,但是不能解決拙劣的 PHP 代碼引起的重大問題隐锭。
- 在指定的一段時間內(nèi)窃躲,如果實效的 PHP-FPM 子進(jìn)程數(shù)超過這個值,PHP-FPM 主進(jìn)程就優(yōu)雅重啟钦睡。
? ? ```
? ? emergency_restart_threshold = 10
? ? ```
- 設(shè)定 `emergency_restart_threshold` 設(shè)置采用的時間跨度
? ? ```
? ? emergency_restart_interval = 1m
? ? ```
> PHP-FPM 全局設(shè)置的詳細(xì)信息參見:https://php.net/manual/zh/install.fpm.configuration.php
##### 配置進(jìn)程池
PHP-FPM 配置文件其余的內(nèi)容是一個名為 Pool Definitions 的區(qū)域蒂窒。這個區(qū)域里的配置文件用于設(shè)置每個 PHP-FPM 進(jìn)程池。PHP-FPM 進(jìn)程池中是一系列相關(guān)的 PHP 子進(jìn)程荞怒。通常一個 PHP 應(yīng)用有自己的一個 PHP-FPM 進(jìn)程池洒琢。
##### Ubuntu
在 Ubuntu 中 Pool Definitions 區(qū)域只有下面一行內(nèi)容:
```
include=/etc/php7/fpm/pool.d/*.conf
```
##### CentOS
CentOS 則在 PHP-FPM 主配置文件的頂部使用下面的這樣代碼引人進(jìn)程池定義文件:
```
include=/etc/php-fpm.d/*.conf
```
_____
這行代碼的作用是讓 PHP-FPM 加載 `/etc/php7/fpm/pool.d/目錄`(Ubuntu) 或 `/etc/php-fpm.d/目錄`(CentOS) 中的各個進(jìn)程池定義文件。進(jìn)入這個目錄可以看到有個 `www.conf` 文件褐桌,這是默認(rèn)的 PHP-FPM 進(jìn)程池的配置文件衰抑。
> 每個 PHP-FPM 進(jìn)程池的配置文件開頭都是 "["? 符號,后跟進(jìn)程池的名稱,然后是 "]" 符號荧嵌。例如:在默認(rèn)的 PHP-FPM 進(jìn)程池的配置文件中停士,開頭是 "[www]"挖帘。
各個 PHP-FPM 進(jìn)程池都已制定的操作系統(tǒng)用戶和用戶組的身份運行。Modern 作者喜歡以非根用戶身份運行各個 PHP-FPM 進(jìn)程池,這樣在命令行中使用 `top` 或 `ps aux` 命令時便于識別每個 PHP 應(yīng)用的 PHP-FPM 進(jìn)程池恋技。這是個好習(xí)慣拇舀,因為每個 PHP-FPM 進(jìn)程池中的進(jìn)程都受相應(yīng)的操作系統(tǒng)用戶和用戶組的權(quán)限限制在沙盒中。
我們要配置默認(rèn)的 `www` PHP-FPM 進(jìn)程池蜻底,讓他以 `deploy` 用戶和用戶組的身份運行 (如果是 root 用戶請?zhí)^)骄崩。
==我建議把一下設(shè)置的默認(rèn)值改為下面設(shè)置的:==
- 擁有這個 PHP-FPM 進(jìn)程池中子進(jìn)程池的系統(tǒng)用戶,默認(rèn)為 `apache`,可以改為讓 `nginx` 去運行,在這里教程是設(shè)置為,非根用戶的用戶名
? ? ```
? ? user = deploy?
? ? ```
- 擁有這個 PHP-FPM 進(jìn)程池中子進(jìn)程池的系統(tǒng)用戶組薄辅,默認(rèn)為 `apache`,可以改為讓 `nginx` 去運行
? ? ```
? ? gropu = deploy
? ? ```
- PHP-FPM 進(jìn)程池監(jiān)聽的IP地址和端口號,讓 PHP-FPM 只接受 nginx 沖這里傳入的請求要拂。
? ? ```
? ? listen = 127.0.0.1:9000
? ? ```
- 可以向這個 PHP-FPM 進(jìn)程池發(fā)送請求的 IP 地址(一個或多個)。為了安全為把這個設(shè)置為:127.0.0.1站楚,即只有當(dāng)前設(shè)備能把請求轉(zhuǎn)發(fā)給這個 PHP-FPM 進(jìn)程池脱惰。
? ? ```
? ? listen.allowed_clients = 127.0.0.1
? ? ```
- 設(shè)定任何時間點 PHP-FPM 進(jìn)程池中最多能有多少個進(jìn)程,這個設(shè)置沒有絕對正確點值窿春,你應(yīng)該測試你的 PHP 應(yīng)用拉一,確定每個進(jìn)程需要使用多少內(nèi)存,然后把這個設(shè)置設(shè)為設(shè)備可用內(nèi)存能容納的 PHP 進(jìn)程的總數(shù)旧乞。對大多數(shù)中小型 PHP 應(yīng)用來說蔚润,每個 PHP 進(jìn)程要使用 5~15MB 內(nèi)存。假設(shè)我們使用的設(shè)備為這個 PHP-FPM 進(jìn)程池分配了 512MB 可用內(nèi)存尺栖,那么我們可以把這個設(shè)置的值設(shè)為(512MB總內(nèi)存)/(每個進(jìn)程使用10MB) = 51 個進(jìn)程嫡纠。
? ? ```
? ? pm.max_children = 51
? ? ```
- PHP-FPM 啟動 PHP-FPM 進(jìn)程池中痢疾可用的進(jìn)程數(shù)。對大多數(shù)中小型 PHP 應(yīng)用來說延赌,我建議設(shè)為 2 或 3.這么做是為了先準(zhǔn)備好兩到三個進(jìn)程除盏,等待請求進(jìn)入,不讓 PHP 應(yīng)用的頭幾個 HTTP 請求等待 PHP-FPM 初始化進(jìn)程池中的進(jìn)程挫以。
? ? ```
? ? pm.start_servers = 3
? ? ```
- PHP 應(yīng)用空閑時 PHP-FPM 進(jìn)程池中可以存在的進(jìn)程數(shù)量最小值者蠕,一般和 `pm.start_servers` 設(shè)置的值一樣,用于確保新進(jìn)入的 HTTP 請求無需等待 PHP-FPM 在進(jìn)程池中重新初始化進(jìn)程。
? ? ```
? ? pm.min_spare_servers = 2
? ? ```
- PHP 應(yīng)用空閑時 PHP-FPM 進(jìn)程池中可以存在的進(jìn)程數(shù)量最大值屡贺。
? ? ```
? ? pm.max_spare_serves = 35
? ? ```
- 回收進(jìn)程之前蠢棱,PHP-FPM 進(jìn)程池中各個進(jìn)程最多能處理的 HTTP 請求的數(shù)量锌杀。這個設(shè)置有助于避免 HTTP 擴展或庫因編寫拙劣導(dǎo)致不斷泄露內(nèi)存甩栈,為建議設(shè)為 1000
? ? ```
? ? pm.max_requests = 1000
? ? ```
- 日志文件在文件系統(tǒng)的絕對路徑, PHP-FPM 進(jìn)程池所屬的用戶和用戶組必須有這個文件的寫權(quán)限。
? ? ```
? ? slowlog = /var/log/php-fpm/www-slow.log
? ? ```
- 如果當(dāng)前 HTTP 請求的處理時間超過指定的值糕再,就把請求的回溯信息寫入 `slowlog` 設(shè)置指定的日志文件量没。
? ? ```
? ? request_slowlog_timeout = 5s
? ? ```
編寫保存 PHP-FPM 的配置文件后,要執(zhí)行下述命令==重啟== PHP-FPM 主進(jìn)程:
##### Ubuntu
```
sudo service php7-fpm restart
```
##### CentOS
```
// CentOS7 的命令
sudo systemctl restart php-fpm.service
// CentOS6 的命令
sudo /sbin/service php-fpm start
sudo /sbin/service php-fpm restart
```
##### 9000 被占用報錯
如果在啟動 PHP-FPM 或者是在重啟到時候報以下錯誤:(意思 9000 端口被占用)
```
[root@jdu4e00u53f7 ~]# /sbin/service php-fpm restart
Stopping php-fpm:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [FAILED]
Starting php-fpm: [04-Aug-2017 10:38:50] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[04-Aug-2017 10:38:50] ERROR: FPM initialization failed
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [FAILED]
```
查看 9000 端口狀態(tài)
```
netstat -anp | grep 9000
// 例如:
tcp? 0? 0 0.0.0.0:9000? ? 0.0.0.0:*? ? LISTEN? ? ? 5609/daemon.i686.mo
```
假如被 `daemon.i686.mo` 它占用了,殺死它,直接殺死它的 PID 5609:
```
kill 5609
```
#### 安裝 MySQL
使用 EPEL6 與 remi 的 yum 源安裝 MySQL 5.5.x
```
yum --enablerepo=remi install mysql mysql-server
```
如果是升級MySQL,請用:
```
yum --enablerepo=remi update mysql mysql-server
```
##### 如果 MySQl 報錯
如果 MySQL 報以下錯誤:
```
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)
```
##### 解決方法
啟用MySQL服務(wù):
```
/sbin/chkconfig mysqld on
```
啟動MySQL服務(wù)器:
```
/sbin/service mysqld start
```
之后設(shè)置MySQL root密碼:
```
mysqladmin -u root password 'new-password'
```
#### 安裝 Nginx
##### Ubuntu
在 Ubuntu 中可以使用 PPA 包安裝 Nginx突想。PPA 是 Ubuntu 專用術(shù)語殴蹄,是指由 nginx 社區(qū)維護(hù)且預(yù)先打包好的檔案究抓。
```
sudo add-apt-repository ppa:nginx/stable;
sudo apt-get update;
sudp apt-get install nginx;
```
##### CentOS
在 CentOS 中可以使用前面添加的第三方軟件倉庫 EPEL 安裝 nginx。CentOS 默認(rèn)使用的軟件倉庫可能沒有最新版本的 nginx袭灯。
> **`CentOS7`** 才能使用 `systemctl` 命令
```
sudo yum install nginx;
sudo systemctl enable nginx.service; // 系統(tǒng)自動啟動
sudo systemctl start nginx.service; // 立刻啟動服務(wù)
```
> **`CentOS6`** 使用以下命令
```
/sbin/service nginx start? // 立即啟動 nginx
/sbin/service nginx restart //? 重啟 nginx
```
#### Nginx 虛擬主機
虛擬主機是一系列設(shè)置刺下,用于告訴 nginx 應(yīng)用的域名、PHP 應(yīng)用在文件系統(tǒng)的什么地方稽荧,以及如何把 HTTP 請求轉(zhuǎn)發(fā)給 PHP-FPM 進(jìn)程池橘茉。
首先,我們必須決定把應(yīng)用放在文件系統(tǒng)的什么位置姨丈。非根用戶 `deploy` 必須擁有 PHP 應(yīng)用所在文件系統(tǒng)目錄的讀寫權(quán)限畅卓。這里,我們把應(yīng)用的文件放在 `/home/deploy/apps/example.com/current` 目錄中蟋恬。我們還需要一個保存應(yīng)用日志文件的目錄翁潘。我們把日志文件放在 `/home/deploy/apps/logs` 目錄中。
創(chuàng)建所需的目錄歼争,并賦予正確的權(quán)限:
```
mkdir -p /home/deploy/apps/example.com/current/public;
mkdir -p /home/deploy/apps/logs;
chmod -R +rx /home/deploy;
```
然后把 PHP 應(yīng)用放到 `/home/deploy/apps/example.com.current/` 目錄中拜马。nginx 虛擬主機假設(shè) PHP 應(yīng)用有個 `public` 目錄,這個是虛擬主機的文檔根目錄矾飞。
每個虛擬主機都有各自的配置文件一膨。
- 如果使用 Ubuntu,請創(chuàng)建 `/etc/nginx/sites-available/example.com/` 配置文件洒沦;
- 如果使用 CentOS豹绪,請創(chuàng)建 `/etc/nginx/conf.d/example.conf` 文件。
虛擬主機的設(shè)置在 `server{}` 塊中申眼,例如:
```
server {
? ? listen 80;
? ? server_name? example.com;
? ? index index.php index.html index.htm;
? ? client_max_body_size 50M;
? ? error_log /home/deploy/apps/logs/example.error.log;
? ? access_log /home/deploy/apps/logs/example.access.log;
? ? root? /home/deploy/apps/example.com/current/public;
? ? # Load configuration files for the default server block.
? ? include /etc/nginx/default.d/*.conf;
? ? location / {
? ? ? ? try_files $uri $uri/ /index.php$is_args$args;
? ? }
? ? location ~ \.php {
? ? ? ? try_files $uri /index.php =404;
? ? ? ? fastcgi_split_path_info ^(.+\.php)(/.+)$;
? ? ? ? fastcgi_param SCRIPT_NAME $fastcgi_script_name;
? ? ? ? fastcgi_index index.php;
? ? ? ? fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
? ? ? ? fastcgi_pass 127.0.0.1:9000;
? ? ? ? include fastcgi_params;
? ? }
}
```
復(fù)制上述代碼瞒津,粘貼到 `example.conf` 虛擬主機配置文件中。記得要修改 `server_name` 設(shè)置括尸,還要把 `error_log`巷蚪、`access_log` 和 `root` 改為適當(dāng)?shù)穆窂健?/p>
##### 虛擬機主機設(shè)置
- **`listen`** 設(shè)置 nginx 監(jiān)聽哪個端口進(jìn)入的 HTTP 請求。大多數(shù)情況下濒翻,HTTP 流量從 80 端口進(jìn)入屁柏,HTTPS 流量從 443 端口進(jìn)入。
- **`server_name`** 用于識別虛擬主機的域名有送。這個設(shè)置要設(shè)為你的應(yīng)用使用的域名淌喻,而且域名要只想服務(wù)器的 IP 地址。如果 HTTP 請求中 Host 首部的值和虛擬機中的 `server_name` 的值匹配雀摘,nginx 就會把這個 HTTP 請求發(fā)給這個虛擬主機裸删。
- **`index`** HTTP 請求 URL 沒指定文件時的默認(rèn)讀取的文件。
- **`client_max_body_size`** 對著虛擬主機來說阵赠,nginx 接受 HTTP 請求主體長度的最大值涯塔。如果請求住的長度超過這個值,nginx 會返回 HTTP 4xx 響應(yīng)肌稻。
- **`error_log`** 這個虛擬主機錯誤日志在文件系統(tǒng)中的路徑。
- **`access_log`** 這個虛擬主機訪問日志文件在文件系統(tǒng)中的路徑匕荸。
- **`root`** 文檔根目錄的路徑爹谭。
除了上述的設(shè)置之外,`server{}` 塊中還有兩個 `location` 塊榛搔。作用:告訴 nginx 如何處理匹配指定 URL 模式的 HTTP 請求旦棉。
- **`location / {}`** 使用 `try_files` 指令查找匹配所請求 URI 的文件;如果未找到相應(yīng)的文件药薯,在查找匹配所請求 URI 的目錄绑洛;如果也未找到相應(yīng)的目錄,把 HTTP 請求的 URI 重寫為 `/index.php`,如果查詢字符串的話童本,還會把查詢字符串加到 URI 的末尾真屯。這個重寫的 URL ,以及所有以 `.php` 結(jié)尾的 URI穷娱,都由 `location ~\.php{}` 塊管理绑蔫。
- **`location ~\.php {}`** 把 HTTP 請求轉(zhuǎn)發(fā)給 PHP-FPM 進(jìn)程池處理。還記得嗎泵额,前面我們設(shè)置 PHP-FPM 進(jìn)程池監(jiān)聽端口 `9000`配深。在這個塊中,我們把 PHP 請求轉(zhuǎn)發(fā)到端口 `9000` 嫁盲,交給 PHP-FPM 進(jìn)程池處理篓叶。
? ? > `location ~ \.php {}` 塊中其他幾行的作用是避免潛在的遠(yuǎn)程代碼執(zhí)行攻擊。
如果操作系統(tǒng)是 Ubuntu 必須執(zhí)行以下命令羞秤,創(chuàng)建虛擬主機配置文件的符號鏈接:
```
sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.cof;
```
最后缸托,執(zhí)行下述命令:重啟 nginx:
Ubuntu
```
sudo service nginx restart
```
CentOS
```
sudo systemctl restart nginx.service
```
```
# For more information on configuration, see:
#? * Official English Documentation: http://nginx.org/en/docs/
#? * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
? ? worker_connections? 1024;
}
http {
? ? log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '
? ? ? ? ? ? ? ? ? ? ? '$status $body_bytes_sent "$http_referer" '
? ? ? ? ? ? ? ? ? ? ? '"$http_user_agent" "$http_x_forwarded_for"';
? ? access_log? /var/log/nginx/access.log? main;
? ? sendfile? ? ? ? ? ? on;
? ? tcp_nopush? ? ? ? ? on;
? ? tcp_nodelay? ? ? ? on;
? ? keepalive_timeout? 65;
? ? types_hash_max_size 2048;
? ? include? ? ? ? ? ? /etc/nginx/mime.types;
? ? default_type? ? ? ? application/octet-stream;
? ? # Load modular configuration files from the /etc/nginx/conf.d directory.
? ? # See http://nginx.org/en/docs/ngx_core_module.html#include
? ? # for more information.
? ? include /etc/nginx/conf.d/*.conf;
? server {
? ? ? ? listen 80;
? ? ? ? server_name www.mdvtrw.com;
? ? ? ? index index.php index.html index.htm;
? ? ? ? root /var/www/phpub;
? ? ? ? # Load configuration files for the default server block.
? ? ? ? include /etc/nginx/default.d/*.conf;
? ? location / {
? ? ? ? try_files $uri $uri/ /index.php$is_args$args;
? ? }
? ? location ~ \.php {
? ? ? ? try_files $uri /index.php =404;
? ? ? ? fastcgi_split_path_info ^(.+\.php)(/.+)$;
? ? ? ? fastcgi_param SCRIPT_NAME $fastcgi_script_name;
? ? ? ? fastcgi_index index.php;
? ? ? ? fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
? ? ? ? fastcgi_pass 127.0.0.1:9000;
? ? ? ? include fastcgi_params;
? ? }
? }
}
```
##### 報錯
```
Uncaught SyntaxError: Unexpected token <
```
意思是nginx沒有配置對,因為沒有讀取到 js瘾蛋。
> 本章節(jié)是最基礎(chǔ)的設(shè)置,因為這個一個關(guān)于 PHP 的章節(jié),而不是 nginx 章節(jié)俐镐。
## 相關(guān)主題
進(jìn)一步學(xué)習(xí) nginx
- http://nginx.org
- https://github.com/h5bp/server-configs-nginx
- https://serversforhackers.com/editions/