LNMP 架构,搭建案例

LNMP架构

-- (一套技术组合)


Linux        Nginx         mySQL(mariadb)      php(python)


1.动态请求:

1)对于动态文件的请求称为动态请求

2)动态文件:不是服务器上真实存在的,而是通过程序获取数据组成的文件

2.静态请求:

1)对于静态文件的请求称为静态请求

2)静态文件:服务器上真实存在的,上传的时候什么样子,读取的时候还是什么样子


html 为静态文件

当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过fastcgi协议转交给后端的PHP程序处理



LNMP访问程序


1.浏览器输入域名,浏览器会拿着域名去本地hosts解析,没有解析则取DNS服务器解析

2.DNS服务器解析域名后返回服务器IP地址

3.浏览器根据IP去请求web服务器上的文件

4.nginx接收请求,会去判断是动态请求还是静态请求 


#静态请求

location ~* \.jpg$ {

        root /code/pic;

}

#动态请求

location ~* \.php$ {

        fastcgi_pass 127.0.0.1:9000;


5.如果是静态请求,nginx直接返回数据

6.如果是动态请求,nginx将请求转发至后端的PHP服务

7.php-fpm服务接收nginx转发的请求,下发工作到wrapper进程

8.wrapper进程去判断解析PHP程序

1)如果只是php文件,没有数据,则直接解析后返回内容

2)如果PHP文件需要读取数据,wrapper回去连接数据库

9.数据库接收查询语句,查询数据,并返回给wrapper进程

10.wrapper进程将结果返回给php-fpm,php-fpm将结果给nginx,nginx将结果给浏览器




LNMP 搭建环境


-- nginx:

1,配置官方源

[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo

2,安装 依赖

3,安装nginx并统一用户

[root@web01 ~]# vim /etc/nginx/nginx.conf

4,创建用户并启动服务,并验证

[root@web01 ~]# systemctl start nginx

[root@web01 ~]# ps -ef | grep nginx



php安装


-- 方式一:第三方源安装

1, 配置

[root@web01 ~]# vim /etc/yum.repos.d/php.repo

[php-webtatic]

name = PHP Repository

baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/

gpgcheck = 0

2, 卸载旧版本

[root@web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common

3,安装新版本

[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


方式二:软件包安装

1, 创建存放包的目录

[root@web02 ~]# mkdir /package

2,  上传安装包

 scp /Users/zy/Desktop/php.tar.gz [email protected]:/package/

3, 解压

[root@web02 package]# tar xf php.tar.gz

会出现很多解压包

[root@web02 package]# yum localinstall -y *.rpm

4, 配置php

[root@web02 package]# vim /etc/php-fpm.d/www.conf

user = www

group = www

5, 启动 php

[root@web02 package]# systemctl restart php-fpm.service

[root@web01 ~]# netstat -lntp |grep php-fpm

tcp        0      0 127.0.0.1:9000          0.0.0.0:*              LISTEN      



用nginx搭建交作业页面


1,配置nginx

[root@web01 ~]# vim /etc/nginx/conf.d/jiaozuoye.conf

server {

    listen 80;

    server_name www.jiaozuoye.com;

    location / {

        root /code/jiaozuoye/kaoshi;

        index index.html;

    }

}


2, 配置站点

[root@web01 ~]# mkdir /code/jiaozuoye

[root@web01 ~]# cd /code/jiaozuoye/

Book-Pro:~ zy$  scp -r /Users/zy/Desktop/kaoshi [email protected]:/code/

[root@web01 kaoshi]# cd /code/jiaozuoye/kaoshi/

[root@web01 kaoshi]# ll

-rwxr-xr-x 1 www root 38772 2020-09-11 10:09 bg.jpg

-rwxr-xr-x 1 www root  2633 2020-09-11 10:09 index.html

-rwxr-xr-x 1 www root    52 2020-09-11 10:09 info.php

#修改php文件保存目录
[root@web01 kaoshi]# vim upload_file.php

$wen="/code/jiaozuoye/uploads";

[root@web01 ~]# mkdir /code/jiaozuoye/uploads

#授权

[root@web01 /code/jiaozuoye]# chown -R www.www /code/

配置本地hosts

访问


可以正常访问



但是无法上传文件


因为nginx处理不了php文件,要手动关联nginx与PHP


httpd搭建可以是因为httpd已经和php关联,不需要启动php

[root@web01 ~]# vim /etc/httpd/conf.d/php.conf

#AddType application/x-httpd-php-source .phps



-- 关联nginx与PHP



ngx_http_fastcgi_module


--  fastcgi协议语法:

Syntax:fastcgi_pass address;

Default:—

Context: location, if in location

配置php默认页面:

Syntax:  fastcgi_index name;

Default:—

Context:http, server, location

请求的文件:
fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;


配置文件,新增location

[root@web01 ~]# vim /etc/nginx/conf.d/jiaozuoye.conf

server {

    listen 80;

    server_name www.jiaozuoye.com;

    location / {

    root /code/jiaozuoye/kaoshi;

    index index.html;

  }

}

location ~* \.php$ {

    fastcgi_pass localhost:9000;              固定端口

    fastcgi_param SCRIPT_FILENAME    /code/jiaozuoye/kaoshi$fastcgi_script_name;           固定搭配

    include fastcgi_params;


[root@web01 ~]# vim /etc/nginx/fastcgi_params

$fastcgi_script_name的变量值从该文件里得出


重启

[root@web01 ~]# systemctl restart nginx php-fpm.service


上传文件成功,保存在upload目录

[root@web01 ~]# cd /code/jiaozuoye/upload

[root@web01 upload]# ll

-rw-r--r-- 1 www www 503800 2020-09-11 16:02 21_11.png


#小文件成功,大文件报错,如果413错误,说明文件过大,nginx和php都有上传文件大小要求:

nginx 加一条:

[root@web01 ~]# vim /etc/nginx/nginx.conf

http {

... ...

client_max_body_size 200m;

... ...

}


修改php的上传文件大小限制

[root@web01 ~]# vim /etc/php.ini

post_max_size = 200M

upload_max_filesize = 200M


重启nginx和php。。。



搭建数据库mariadb


1,下载

[root@web01 ~]# yum install -y mariadb-server


[root@web01 ~]# vim /etc/my.cnf

centos7 不下载也就数据库,已经存在的配置


2, 启动

[root@web01 ~]# systemctl start mariadb

[root@web01 ~]# systemctl enable mariadb


3, 验证

[root@web01 ~]# ps -ef |grep mariadb

[root@web01 ~]# netstat -lntp|grep 3306


4, 连接使用

[root@web01 ~]# mysql

默认加上

[root@web01 ~]# mysql -uroot -hlocalhost


查看数据库

MariaDB [(none)]> show databases;

5, 设置数据库密码

[root@web01 ~]# mysqladmin -uroot password

123456

再次登陆

[root@web01 ~]# mysql -uroot -p

Enter password:


6, 关联php和mysql

[root@web01 ~]# vim /code/jiaozuoye/kaoshi/php_mysql.php

    $servername = "localhost";

    $username = "root";

    $password = "123456";

    // 创建连接

    $conn = mysqli_connect($servername, $username, $password);

    // 检测连接

    if (!$conn) {

        die("Connection failed: " . mysqli_connect_error());

    }

    echo "小哥哥,php可以连接MySQL...";

?>

图片可以更改


6, 访问

可以systenmct stop mariadb验证



搭建wordpress:


cp /Users/zy/Desktop/课堂工具包/wordpress-5.5.1.zip [email protected]:/code/

[root@web01 code]# unzip wordpress-5.5.1.zip

[root@web01 /code]# chown -R www.www wordpress

[root@web01 opt]# cd /code/

[root@web01 code]# ll

drwxr-xr-x 5 root root 4096 2020-09-02 02:54 wordpress

-rw-r--r-- 1 root root 14004635 2020-09-11 23:56 wordpress-5.5.1.zip

[root@web01 code]# chown -R www.www wordpress

[root@web01 ~]# vim /etc/nginx/conf.d/wordpress.conf

server {

    listen 80;

    server_name linux.wp.com;

    location / {

    root /code/wordpress;

    index index.php;

  }

    location ~* \.php$ {

    root /code/wordpress;

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    include fastcgi_params;

  }

}

[root@web01 ~]# nginx -t

[root@web01 ~]# systemctl restart nginx


配置本地hosts文件,访问


创建数据库

[root@web01 ~]# mysql -uroot -p

输入密码

MariaDB [(none)]> create database wordpress ;


再回到网站页面



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



scp /Users/zy/Desktop/课堂工具包/WeCenter_3-2-1.zip [email protected]:/code/

[root@web01 wordpress]# cd /code/

[root@web01 code]# ll

-rw-r--r-- 1 root root  8451194 2020-09-12 00:40 WeCenter_3-2-1.zip

[root@web01 code]# unzip WeCenter_3-2-1.zip

[root@web01 code]# rm -rf __MACOSX

[root@web01 code]# mv WeCenter_3-2-1 zh

[root@web01 code]# chown www.www zh


[root@web01 ~]# cp /etc/nginx/conf.d/{wordpress.conf,zh.conf}

[root@web01 ~]# vim /etc/nginx/conf.d/zh.conf

server {

    listen 80;

    server_name linux.zh.com;

    location / {

    root /code/zh;

    index index.php;

  }

    location ~* \.php$ {

    root /code/zh;

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    include fastcgi_params;

  }

}


[root@web01 ~]# nginx -t

[root@web01 ~]# systemctl restart nginx


加入本地hosts文件,访问



建数据库

[root@web01 ~]# mysql -uroot -p

MariaDB [(none)]> create database zh;


再次访问


你可能感兴趣的:(LNMP 架构,搭建案例)