首先介绍环境:
Ubuntu 16.04(阿里云)
PHP 7.0.22-0ubuntu0.16.04.1 (cli)
nginx version: nginx/1.10.3 (Ubuntu)
PHP7.0-fpm
最开始的时候不知道为什么就选了LAMP+wordpress搭建博客,反正就是好了之后后悔的不行,准备着手换成:LNMP+typecho。
下面就开始第一步了,首先先更换web服务:apache——————nginx 首先就是安装:
# apt-get install nginx php7.0-fpm
这里说下php7.0-fpm是nginx处理PHP的关键 因为之前我没有停掉Apache,他会提示已经安装但是不能启动,然后吧啦吧啦说一大堆。
# service apache2 stop
# service nginx start
接下来就是修改nginx的配置文件了,目录/etc/nginx/sites-available
这里面有个default
,这就是配置文件, 建议备份后继续修改,因为这面的东西也有有用的。 下面我截取片段配置文件说下,全部的配置文件在最后会贴上来
server {
listen 80 default_server;//这里就是监听端口的设置,也可以改成8080之类的
listen [::]:80 default_server;
root /var/www/html;//这里是网站的根目录,他默认的也是这个我一直没动,之前的apache也是这里
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;//这里本来是没有index.php上面也说了如果你使用PHP请添加
server_name blog.yelvlab.cn;//这里是域名,也可以直接_就行
这是基础的部分,下面介绍下其他部分:有关PHP的部分
#//这里说通过FastCGI来处理PHP请求之类的,下面就是添加
location ~* \.php$ {
fastcgi_index index.php;
#fastcgi_pass 127.0.0.1:9000;
//这部分是我在PHP官网找到的配置nginx的代码,但是发现还是不行,
后来经过在网上查找,发现设置里出现了问题,
把127.0.0.1:9000替换成unix:/run/php/php7.0-fpm.sock就好了,
具体为什么下面说
反正这里就是官网提供的配置,和不对的地方
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
修改完配置文件过后重启nginx
&php7.0-fpm
即可。
上面的那个替换的缘由:https://www.2cto.com/kf/201612/580693.html,这里是原文,下面我稍作整理。
Nginx处理请求是通过fpm 管理fastcgi来实现请求和相应, 而Nginx和php-fpm可以通过监听9000端口(default)或者socket来实现。 0.0.1:9000走网络,通过Nginx的conf文件,把php结尾的都交给9000端口处理,php-fpm(fastcgi的进程管理器)选择并且连接到一个fastcgi子进程,并将环境变量和标准输入发送到fastcgi子进程,然后不断处理请求响应。
cd /etc/php/7.0/fpm
sudo vim php-fpm.conf
打开php7.0-fpm的配置文件,在最后面发现一个include,那么我们去看下这个
include=/etc/php/7.0/fpm/pool.d/*.conf
按照上面的线索继续找
cd /etc/php/7.0/fpm/pool.d
ll之后发现只有一个www.conf
sudo vim www.conf
找了一下发现在开头的不远处发现:
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = /run/php/php7.0-fpm.sock
注意看最下边,关于php request的请求要在/run/php/php7.0-fpm.sock这里。所以上面那里修改为这个。
最后插一句,这段的上面有一个关于用户和组的,顺带看一眼
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = www-data
group = www-data
这样就没问题
然后就可以在网站目录/var/www/html/
下新建一个PHP测试页面phpinfo.php
名字无所谓重要的是内容
<?php
echo phpinfo();
?>
然后在浏览器访问你的Ip地址/phpinfo.php
,就会看见php的信息了。这样就证明你的网站可以打开PHP了。
等等,再补充一点东西关于配置nginx的配置文件时候重启nginx报错
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.
这个是你的语法问题,回头再看下配置文件,是不是少个{}
或者;
什么的. 然后配置文件目前就这两部分,还有个rewrite需要弄,还没怎么弄明白,懂了怎么搞还要加上去,下面我就把我目前的配置文件都贴上来:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
server_name blog.yelvlab.cn;
#rewrite config
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
include fastcgi_params;
}
}
最后在说一个问题,wordpress的连接形式设置的问题,我设置的是数字型,突然发现无法进入各个页面,后来换回朴素型,就是默认的就好了。
1 条评论
你的文章总是能给我带来欢乐,谢谢你! http://www.55baobei.com/oTtW3gLZD6.html