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;
}
}