1.实验环境

操作系统:Ubuntu 18.04 64位

nginx:1.14.0

php:7.2.17-0

php-fram:php7.2-fpm

2.安装程序包及依赖

#安装程序包

sudo apt-get install php7.2

sudo apt-get install php7.2-fpm     #nginx与php之间的桥梁

sudo apt-get install nginx

#安装必要依赖

sudo apt-get install php-json

sudo apt-get install php-curl

sudo apt-get install php7.2-mysql

sudo apt-get install php7.2-cgi

打开http://127.0.0.1,若出现Welcome to nginx界面则表示安装成功。若是阿帕奇apache主页(默认),可以直接删除 /var/www/html/index.html

3.配置php-frm

3.1编辑fpm配置文件

sudo gedit /etc/php/7.2/fpm/php.ini

#修改参数如下:

# 778行 ;cgi.fix_fathinfo=1  更改为  cgi.fix_fathinfo=0

再:

sudo gedit /etc/php/7.2/fpm/pool.d/www.conf

#修改参数如下

#  36行 listen = 127.0.0.1:9000

#  62行 listen.allowed_clients = 127.0.0.1

# 113行 pm.max_children = 50

# 139行 pm.max_requests = 500

# 340行 request_terminate_timeout = 0

# 344行 rlimit_files = 1024

# 以上部分,包括但不限于去除前面的";"

3.2测试php程序

创建文件: /var/www/html/index.php,并输入内容:

4.配置nginx

sudo gedit /etc/nginx/sites-available/default

第44行,在index.html前面加入index.php

第56-62行,用如下内容替换:

location ~ \.php$ {

root           html;

fastcgi_pass   127.0.0.1:9000;

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;

include        fastcgi_params;

}

5.重启php与nginx

sudo service php7.2-fpm restart

sudo service nginx restart

若nginx报错,可不理会,不影响使用。

6.运行

浏览器访问http://127.0.0.1/index.php(输出phpinfo信息)。

浏览器访问 http://127.0.0.1/index.nginx-debian.html(输出Welcome to nginx信息)。

7.其他命令

通过find / -name nginx命令可以查看nginx的安装位置,一般是安装在/ect/nginx中。

nginx -v

sudo service nginx start    #启动nginx

sudo service nginx restart  #重新启动nginx

sudo service nginx status   #查看运行状态

sudo service nginx stop     #停止nginx

php与之对应的命令是一样的,只需把nginx换成php7.2-fpm即可。

8.安装mysql

sudo apt-get install mysql-server mysql-client

安装完成后,执行以下命令:

mysql -u root -p

然后要求输入密码,如果安装时已设置,则输入原先已设置密码。如果没设置,则报错:

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

这个错误,简单的说,就是密码错了,但是你没设置过,怎么会错呢,这个就是MySQL自身会设置的随机密码的问题了,解决方法就是重新设置新的root密码,但是问题在于,如果进入MySQL中去。现有两种方法进入MySQL命令行里:

法一,用管理员权限:

sudo mysql

法二:

关闭正在运行的 MySQL:

service mysql stop

运行命令:

mysqld_safe --skip-grant-tables &

以上两方法,如果执行成功,则会成功进入MySQL的命令行中。再接法执行:

mysql> use mysql;

mysql> update mysql.user set authentication_string=PASSWORD('新密码'),plugin='mysql_native_password' where user='root';

mysql>flush privileges;

这一步主要是在设置新密码的时候,顺便把用户root的plugin进行修改,修改为默认的 mysql_native_password,然后在刷新权限设置。

在执行成功后,重启MySQL,然后再执行一次上面连接数据库命令:

sudo service mysql restart

mysql -u root -p

9.以nginx1.18为例,配置多站点

多域名访问同一主机80的实现方式。除了默认站点外,新增方式如下:

9.1/etc/nginx/conf.d新建www.a.conf

server {

   listen 80;

   server_name www.a.com;

   location / {

       root /var/www/www.a.com;

       index index.php index.html index.htm;

   }

 location ~ \.php$ {

   root /var/www/www.a.com;

   fastcgi_pass 127.0.0.1:9000;

   fastcgi_index index.php;

fastcgi_param  SCRIPT_FILENAME  /var/www/www.a.com$fastcgi_script_name;

   include fastcgi_params;

 }

}

9.2新建目录/var/www/www.a.com