LNMP
L 指的 Linux
N 指的 nginx
M 指的 mariadb或者mysql
P 指的 PHP,Python
搭建lnmp:装包配置启服务
装包:(nginx需要的基本依赖包)gcc openssl-devel pcre-devel zlib-devel
(mariadb的安装包)mariadb mariadb-server mariadb-devel
(PHP需要的安装包)php php-mysql php-fpm-5.4.16-42.el7.x86_64.rpm(这个不在基本包中,需要额外下载)
关闭SELinux和firewall
修改nginx:
原配置文件中的 65-71,有相关配置,解除其注销#
location ~ \.php$ { # 可以理解成if或者case,他就是当匹配后面的正则表达式的时候执行下面语句
root html; # documentroot,网站根目录的位置
fastcgi_pass 127.0.0.1:9000; # 这个的意思就是php文件给谁解释,一般php解释器是本机的9000端口
fastcgi_index index.php; # 默认没有写文件的时候,打开的网页
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
但是这个配置文件是有问题的,需要修改最后两行,
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 代表php文件到 /scripts下找,而我们php文件一般放在了html等配置文件写的documentroot下了,所以这配置是错误的
而include fastcgi_params; 代表运行的时候读取哪个文件,这个文件也搞错了,所以最后改成
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
启动服务:systemctl start mariadb
systemctl enable mariadb
systemctl start php-fpm
systemctl enable php-fpm
php-fpm的配置文件:
/etc/php-fpm.d/www.conf
[www]
listen = 127.0.0.1:9000 //PHP的IP和端口号
pm.max_children = 32 //最大进程数量
pm.start_servers = 15 //最小进程数量
pm.min_spare_servers = 5 //最少需要几个空闲着的进程
pm.max_spare_servers = 32 //最多允许几个进程处于空闲状态
lnmp的简单php文件的基本解释:
<?php
$mysqli = new mysqli('localhost','root','密码','mysql'); # 连接数据库
if (mysqli_connect_errno()){ # 判断数据库是否连接
die('Unable to connect!'). mysqli_connect_error();
}
$sql = "select * from user";
$result = $mysqli->query($sql); # 进行数据库命令操作
?>
LNMP的日志文件,用于派错
nginx的默认访问日志文件为 /usr/local/nginx/logs/access.log
nginx的默认错误日志文件为 /usr/local/nginx/logs/error.log
PHP默认错误日志文件为 /var/log/php-fpm/www-error.log
如果动态网站访问失败,可用参考错误日志,查找错误信息。
地址重写
在需要做地址重写的虚拟主机中加入下面的配置,地址重写是顺序执行,重写完进行第二个,一个一个进行,除非选项中明确标出
rewrite 旧地址 新地址 [选项]
选项
last 不再读其他rewrite,作用是让地址重写,匹配即停止,使得下面的地址重新不影响上面一些已经完成的地址重新,但是只是停止自己所在的位置的rewrite,但是如果下在面的location中又有rewrite的话,还是执行
break 不再读其他语句,结束请求,匹配rewrite后,下面所有的语句全部不执行,不管location等,所有命令都不阅读,也不执行
redirect 临时重定向,实现跳转地址栏,就是会让客户端的地址栏中的地址也会变化,要注意,不能修改/地址的时候用这个选项会导致一个无线循环调转,因为新地址中也一定有/导致,根一直在循环调转
permament 永久重定向
如果要修改域名,则改成
rewrite ^/(.*) 新域名地址$1
这样,保留子网页的信息,实现 www.a.com/1/2/3 调转后可以自动到 www.b.com/1/2/3上,首先域名重修后子网页不变
如果要区分登陆的浏览器,使用一个内置变量:$http_user_agent
# 这里,~符号代表正则匹配,*符号代表不区分大小写
if ($http_user_agent ~* firefox) { //识别客户端firefox浏览器
rewrite ^(.*)$ /firefox/$1;
} //如果是firefox浏览器,则进行地址重写
不过还是要在documentroot下创建好相关的网页文件,上面做的是让网页识别并调转,但调转的目的地是
补充curl的一个使用方法:
curl -A 'firefox' 127.0.0.1/index.html # 把自己的curl浏览器伪装成火狐浏览器,进行访问