php

[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/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市哺哼,隨后出現(xiàn)的幾起案子佩抹,更是在濱河造成了極大的恐慌,老刑警劉巖取董,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棍苹,死亡現(xiàn)場離奇詭異,居然都是意外死亡甲葬,警方通過查閱死者的電腦和手機廊勃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門懈贺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來经窖,“玉大人坡垫,你說我怎么就攤上這事』拢” “怎么了冰悠?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長配乱。 經(jīng)常有香客問我溉卓,道長,這世上最難降的妖魔是什么搬泥? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任桑寨,我火速辦了婚禮,結(jié)果婚禮上忿檩,老公的妹妹穿的比我還像新娘尉尾。我一直安慰自己,他們只是感情好燥透,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布沙咏。 她就那樣靜靜地躺著,像睡著了一般班套。 火紅的嫁衣襯著肌膚如雪肢藐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天吱韭,我揣著相機與錄音吆豹,去河邊找鬼。 笑死理盆,一個胖子當(dāng)著我的面吹牛瞻讽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播熏挎,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼速勇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坎拐?” 一聲冷哼從身側(cè)響起烦磁,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哼勇,沒想到半個月后都伪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡积担,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年陨晶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡先誉,死狀恐怖湿刽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情褐耳,我是刑警寧澤诈闺,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站铃芦,受9級特大地震影響雅镊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刃滓,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一仁烹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咧虎,春花似錦晃危、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胧砰,卻和暖如春鳍鸵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尉间。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工偿乖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哲嘲。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓贪薪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親眠副。 傳聞我的和親對象是個殘疾皇子画切,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容