lnmp
1.常见的web框架结构
lnmp
-
amp
l=linux;n=nginx;m=mysql;p=php or python
2.lnmp的原理
1)原理
- 在LNMP组合工作时,首先是用户通过浏览器输入域名请求Nginx Web服务,如果请求是静态资源,则由Nginx解析返回给用户;如果是动态请求(.php结尾),那么Nginx就会把它通过FastCGI接口(生产常用方法)发送给PHP引擎服务(FastCGI进程php-fpm)进行解析,如果这个动态请求要读取数据库数据,那么PHP就会继续向后请求MySQL数据库,以读取需要的数据,并最终通过Nginx服务把获取的数据返回给用户,这就是LNMP环境的基本请求顺序流程。这个请求流程是企业使用LNMP环境的常用流程。
2)CGI
- CGI的全称为“通用网关接口”(Common Gateway Interface),为HTTP服务器与其他机器上的程序服务通信交流的一种工具,CGI程序须运行在网络服务器上。
- 缺点:性能差,因为每次HTTP服务器遇到动态程序时都需要重新启动解析器来执行解析,之后结果才会被返回给HTTP服务器
3)fastcgi
FastCGI是一个可伸缩的,高速地在HTTP服务器和动态脚本语言间通信的接口(在Linux下,FastCGI接口即为socket,这个socket可以是文件socket,也可以是IP socket)
优点:把动态语言和HTTP服务器分离出来。多数流行的HTTP服务器都支持FastCGI,包括Apache,Nginx和Lighttpd等
-
特点:
①.HTTP服务器和动态脚本语言间通信的接口或工具。
②.可把动态语言解析和HTTP服务器分离开。
Nginx,Apache,Lighttpd,以及多数动态语言都支持FastCGI。
③.FastCGI接口方式采用C/S结构,分为客户端(HTTP服务器)和服务器端(动态语言解析服务器)
④.PHP动态语言服务器端可以启动多个FastCGI的守护进程(例如php-fpm(fcgi process mangement))
⑤.HTTP服务器通过(例如Nginx fastcgi_pass)FastCGI客户端和动态语言FastCGI服务器端通信(例如php-fpm)
3.nginx+php
#1.安装
①.配源
[root@web01 ~]# cat /etc/yum.repos.d/php.repo
[webtatic-php]
name = php Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0
②.安装
[root@web01 ~]# yum install nginx -y
[root@web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common
[root@web01 ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
[root@web01 ~]# yum install mariadb mariadb-server -y
#2.配置
①.配置nginx
[root@web01 ~]# vim /etc/nginx/conf.d/php.conf
server {
listen 80;
server_name wangxub.cn
root /code
location / {
index index.php;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include pastcgi_params;
}
}
②.配置php页面
[root@web01 ~]# vim /code/info.php
<?php
phpinfo();
?>
#3.启动
[root@web01 ~]# nginx -t
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl start php-fpm
#4.host劫持;浏览器访问
path = /c/windows/system32/drivers/etc/hosts
4.php+mysql
#1.配置nginx
[root@web01 ~]# vim /etc/nginx/conf.d/kedaoyun.conf
server {
listen 80;
server_name wangxub.cn;
root /youdaoyun ;
client_max_body_size 20M;
location / {
index index.php;
}
location ~ \.php {
pastcgi_pass 127.0.0.1:9000;
pastcgi_param SCRIPT_FILENAME $document_root$pastcgi_script_name;
include pastcgi params;
}
}
#2.启动MySQL
[root@web01 ~]# systemctl start mariadb
#3.设置MySQL密码
[root@web01 ~]# mysqladmin password 123
#4.配置检测php与MySQL连接脚本
[root@web01 ~]# vim /youdaoyun/mysql.php
<?php
$severname = "localhost"
$username = "root"
$password = "123456"
$conn = mysqli_connect($severname,$username,$password);
if(!$conn) {
die("Connection failed:" .mysqli_connect_error());
}
echo "连接成功"
?>
#5.测试
[root@web01 ~]# php /youdaoyun/myaql.php
5.lnmp搭建Wordpress
#1.配置nginx
[root@web01 ~]# vim /etc/nginx/conf.d/wordpress.conf
server {
listen 80;
server_name wangxub.cn;
root /youdaoyun ;
client_max_body_size 20M;
location / {
index index.php;
}
location ~ \.php {
pastcgi_pass 127.0.0.1:9000;
pastcgi_param SCRIPT_FILENAME $document_root$pastcgi_script_name;
include pastcgi params;
}
}
#2.创建配置中的目录
[root@web01 ~]# mkdir /wordpress
#3.上传代码并解压
[root@web01 ~]# rz -E
[root@web01 ~]# tar xf wordpress-5.2.3-zh_CN.tar.gz
#4.解决权限不统一问题
[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u 666 -g 666 www
[root@web01 ~]# chown -R www.www /wordpress
[root@web01 ~]# vim /etc/nginx/nginx.conf
user www;
[root@web01 ~]# vim /etc/php-fpm.d/www.conf
user www;
group www;
#5.创建MySQL用户
[root@web01 ~]# mysql -uroot -p123456
MariaDB [(none)]>create database wordpress;
MariaDB [(none)]> show databases;
#6.重启服务
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# systemctl start php-rpm