02架构 04.1 单机 LNMP

LNMP概述

L	Linux	操作系统
N	Nginx	类似于Apache的一种web服务软件
			可以做高性能的HTTP和反向代理服务器,也可以做IMAP/POP3/SMTP代理服务器
M	MySQL	关系型数据库管理软件,一般指MySQL,也可以指MariaDB
P	PHP		一般指PHP,也可以指Perl或Python

LNMP 是Linux Nginx MySQL PHP的简写,将Nginx MySQL PHP安装在Linux系统上,组成一个环境来运行php的脚本语言。
这四种软件均为免费软件,组合到一起,成为一个免费、高效的网站服务系统。
由于Nginx拥有超越Apache的卓越性能,LNMP正在逐渐取代LAMP

静态请求:请求的页面都是*.html,服务器必须存在html文件

动态请求:请求的不是服务器上存在的*.html,带参数的请求
		动态页面不是一个存于服务器在的页面,是去数据库或其他库获取数据拼装成的页面;

LNMPA(Nginx/MySQL/PHP/Apache)
LAMP(Apache/MySQL/PHP)
LAMT(Apache/MySQL/Tomcat)
LNMT(Nginx/MySQL/Tomcat)

Nginx与Fast-CGI详细工作流程

请添加图片描述

1、用户发起请求
2、Nginx收到请求,进行判断是静态请求还是动态请求
3、如果是静态请求就直接返回数据给用户
4、如果是动态请求,通过fastcgi去找PHP的进程管理工具php-fpm
5、php-fpm会下发工作给wrapper工作进程
6、wrapper工作进程会判断请求是否只是PHP内容
7、如果只是PHP内容,wrapper工作进程就会直接解析,然后返回结果
8、如果还有后面数据库等行为,wrapper工作进程会去请求数据库
9、最后由数据库MySQL-wrapper-‘php-fpm’-fastcgi-Nginx-http-user

LNMP 部署

安装 Nginx

1、配置官方源
	#官方配置
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

	#简化配置
vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

2、安装
yum install -y nginx

3、创建用户与用户组
groupadd www -g 666
useradd www -u 666 -g 666 -Ms /sbin/nologin

4、配置Nginx用户
vim /etc/nginx/nginx.conf
user  www www;

5、启动nginx并开机自启
systemctl start nginx
systemctl enable nginx

6、验证启动
ps -ef | grep [n]ginx
root      17556      1  0 7月06 ?       00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www       17557  17556  0 7月06 ?       00:00:00 nginx: worker process

安装 PHP

1#配置第三方源
cat > /etc/yum.repos.d/php.repo << EOF
[php-webtatic]
name = PHP Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0
EOF

2#卸载已安装低版本的php
yum remove php-mysql-5.4 php php-fpm php-common

3#安装PHP 7.1版本【安装会出一些问题,记住没有安装的包,重新单独安装,保存好所有安装包利于下次使用】
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
	#上传准备好的安装包后用yum统一安装
yum -y localinstall *.rpm

4、配置php主配置文件
vim /etc/php.ini
upload_max_filesize = 200M		# 799行 修改上传文件大小
post_max_size = 200M			# 656行 修改请求限制大小,2个配一样

5、配置修改用户
vim /etc/php-fpm.d/www.conf
user = www
group = www

6、启动php-fpm并设置开机启动
systemctl enable php-fpm
systemctl start php-fpm

7、验证
ps -ef | grep [p]hp

cat /etc/nginx/fastcgi_params
fastcgi_param QUERY_STRING		$query_string;			#请求的参数;如?app=123
fastcgi_param REQUEST_METHOD	$request_method;		#请求的动作(GET,POST)
fastcgi_param CONTENT_TYPE		$content_type;			#请求头中的Content-Type字段
fastcgi_param CONTENT_LENGTH	$content_length;		#请求头中的Content-length字段

fastcgi_param SCRIPT_NAME		$fastcgi_script_name;	#脚本名称
fastcgi_param REQUEST_URI		$request_uri;			#请求的地址不带参数
fastcgi_param DOCUMENT_URI		$document_uri;			#与$uri相同
fastcgi_param DOCUMENT_ROOT		$document_root;			#网站的根目录,在server配置中root指令中指定的值
fastcgi_param SERVER_PROTOCOL	$server_protocol;		#请求使用的协议,通常是HTTP/1.0或HTTP/1.1
fastcgi_param REQUEST_SCHEME	$scheme;				#请求方案
fastcgi_param HTTPS				$https if_not_empty;	#https支持php文件

fastcgi_param GATEWAY_INTERFACE	CGI/1.1;				#cgi 版本
fastcgi_param SERVER_SOFTWARE	nginx/$nginx_version;	#nginx 版本号,可修改、隐藏

fastcgi_param REMOTE_ADDR		$remote_addr;			#客户端IP
fastcgi_param REMOTE_PORT		$remote_port;			#客户端端口
fastcgi_param SERVER_ADDR		$server_addr;			#服务器IP地址
fastcgi_param SERVER_PORT		$server_port;			#服务器端口
fastcgi_param SERVER_NAME		$server_name;			#服务器名,域名在server配置中指定的server_name

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS	200;
fastcgi_param PATH_INFO			$path_info;				#可自定义变量【此行默认没有】


#设置一个传递给fastcgi服务的参数,可以是文本或者变量,上面就是变量
fastcgi_param

#网站的访问改为https的加密方式后,网站访问正常,但网站注册功能不能正常使用了
#需要设置
location ~ \.php$ {
......
fastcgi_param HTTPS		$https if_not_empty;	【或者 fastcgi_param HTTPS 	on;......
}

#有 https 协议时才自动使用 https on,否则忽略这个参数
内嵌的变量:
$https			如果链接是 SSL 就返回 “ON”,否则返回空字符串
if_not_empty	当参数有值时才传递到服务器
注意:这个 if_not_empty 额外参数只适合 Nginx 1.1.11 之后的版本

安装 mariadb

1、安装mariadb
yum install mariadb-server -y

2、启动mariadb并加入开机自启
systemctl enable mariadb
systemctl start mariadb

3、查看mariadb
mysql
Welcome to the ......
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]>exit

#设置数据库账号密码
mysqladmin -uroot password '123456'

关联 Nginx PHP

语法
1、设置fastcgi服务器的地址,该地址可以指定为域名、IP地址+端口、unix的socket文件 【关联`PHP`服务所在主机】
#语法
Syntax:	fastcgi_pass address;
Default:	—
Context:	location, if in location

#语法示例
fastcgi_pass localhost:9000;
fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/tmp/fastcgi.socket;

2、设置fastcgi默认的首页文件,需要结合fastcgi_param一起设置
#语法
Syntax:	fastcgi_index name;
Default:	—
Context:	http, server, location

#语法示例:详细配置步骤看下面的 》 展示PHP详细信息页面
server {
    listen 80;
    server_name php.linux.com;
	#设置上传文件的大小
	client_max_body_size 200m;

    location / {
        root /code/php;
        fastcgi_pass 127.0.0.1:9000;
        #默认的 PHP 文件,当请求以 / 结尾的时候,会将请求传递给所设置的 index.php 文件处理
        fastcgi_index index.php;
        #php解析用户请求数据的真实路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #包含 fastcgi 的所有变量,设置后可以被调用
        include fastcgi_params;
    }
}
#理解:
如果 location /
如果请求的 Fastcgi_index URI 是以 / 结束的, 该指令设置的文件会被附加到URI的后面并保存在变量$fastcig_script_name中

server {
    listen 80;
    server_name php.linux.com;

    location / {
        root /code/php;
        index index.php;
    }
    #匹配以 .php 结尾的 URI
    location ~ \.php$ {
        root /code/php;
        #转交给 127.0.0.1:9000 php服务所在的主机处理请求数据
        fastcgi_pass 127.0.0.1:9000;
        #php解析用户请求数据的真实路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #包含 fastcgi 的所有变量,设置后可以被调用
        include fastcgi_params;
    }
}
#理解
如果 location 后面不是 / 那就不需要设置 fastcgi_index index.php;


3、通过fastcgi_param设置变量,并将设置的变量传递到后端的fastcgi服务器
fastcgi_param 【关联的站点目录和PHP文件名】
Syntax:	fastcgi_param parameter value [if_not_empty];
Default:	—
Context:	http, server, location

#语法示例
fastcgi_param SCRIPT_FILENAME /code$fastcgi_script_name;

#语法调用模块   	变量(标准格式)	站点目录			php文件名
fastcgi_param  SCRIPT_FILENAME	 $document_root$fastcgi_script_name;
			  PHP 解析的真实路径 = /code/index.php

#理解:
用户在浏览器输入:php.linux.com/index.php ---》发送给 web服务器上的 nginx
nginx 发现是 .php 结尾的请求,自己解析不了,通过 fastcgi 交给 PHP 处理
PHP 通过 fastcgi 拿到文件 /code/index.php 开始解析,完成解析后返回数据给 nginx 》 用户的浏览器

4、Nginx默认获取不到path_info的值,要通过fastcgi_split_path_info指定的正则表达式来给$fastcgi_path_info赋值
location ~ ^(.+\.php)(.*)$ {
	fastcgi_split_path_info			^(.+\.php)(.*)$;
	fastcgi_param SCRIPT_FILENAME	/code/edu/$fastcgi_script_name;
	fastcgi_param PATH_INFO			$fastcgi_path_info;
}

假设原始请求是	www.baidu.com/mcy.php/test/a.txt
fastcgi_split_path_info			^(.+\.php)(.*)$;
获取的2个值  ^(.+\.php)(.*)$ = mcy.php 和 /test/a.txt
$fastcgi_script_name	得到	mcy.php
$fastcgi_path_info		得到	/test/a.txt

5、我的理解:使用下面2行配置,可以提高web传输文件的效率
#加速发送大文件
fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect;
#标头指向文件地址
fastcgi_param HTTP_X-Accel-Mapping /udisk=/code/edusoho/app/data/udisk;

PHP在工作的时候只需要输出http头+文件路径,用户请求下载资源的事情交给nginx处理
是一种将文件下载请求由后端应用转交给前端 web 服务器处理的机制,它可以消除后端程序既要读文件又要处理发送的压力,从而显著提高服务器效率,特别是处理大文件下载的情形下。
程序需要将文件内容从磁盘经过一个固定的 buffer 去循环读取到内存,再发送给前端 web 服务器,最后才到达用户。当需要下载的文件很大的时候,这种方式将消耗大量内存,甚至引发 php 进程超时或崩溃。Cache 也很头疼,更不用说中断重连的情况了。
一个理想的解决方式应该是,由 php 程序进行权限检查等逻辑判断,一切通过后,让前台的 web 服务器直接将文件发送给用户——像 Nginx 这样的前台更善于处理静态文件。这样一来 php 脚本就不会被 I/O 阻塞了。

6、Nginx 的 buffer 机制
#语法:
syntax: fastcgi_buffers the_number is_size 
default: fastcgi_buffers 8 4k/8k 
context: http, server, location 
fastcgi_buffers 256 4k; # Sets the buffer size to 4k + 256 * 4k = 1028k



        #处理 Response [响应] 时第一个缓冲区的大小,不在下面的8个 buffers 【缓冲区】中
fastcgi_buffer_size 128k;
        #这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的
        #控制 nginx 最多创建 8 个大小为 128K 的缓冲区
fastcgi_buffers      8 128K;

先简单的说一下 Nginx 的 buffer 机制,对于来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小由 fastcgi_buffers 和 fastcgi_buffer_size 两个值控制。

比如如下配置:
fastcgi_buffers    8 4K;
fastcgi_buffer_size  4K;

fastcgi_buffers 控制 nginx 最多创建 8 个大小为 4K 的缓冲区,而 fastcgi_buffer_size 则是处理 Response 时第一个缓冲区的大小,不包含在前者中。所以总计能创建的最大内存缓冲区大小是 8*4K+4K = 36k。而这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的。比如一个 8K 的页面,Nginx 会创建 2*4K 共 2 个 buffers。

当 Response 小于等于 36k 时,所有数据当然全部在内存中处理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出来的数据会被临时写入到文件中,放在这个目录下面。同时你会在 error.log 中看到一条类似 warning。

显然,缓冲区设置的太小的话,Nginx 会频繁读写硬盘,对性能有很大的影响,但也不是越大越好,浪费内存空间!

一步步调整参数,直到nginx 错误日志中没有这个warn信息:
2011/04/23 17:24:08 [warn] 9639#0: *44 an upstream response is buffered to a temporary file /tmp/fastcgi_temp/8/0/0000000008 while reading upstream, client: 10.0.0.1, server: linux.com, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000",host: "edu.linux.com"

fastcgi_buffers 32 4k;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KIpEaNg0-1638326773429)(D:/学习/Linux/02 学习资料/图片/nginx fastcgi 01.jpg)]

展示PHP详细信息页面
#设置站点目录
mkdir -p /code/php

#站点目录下创建一个 PHP 文件
mkdir -p /code/php
cat > /code/php/index.php << EOF
<?php
    phpinfo();
?>
EOF
chown -R www.www /code

#编辑一个 PHP 主页配置文件
vim /etc/nginx/conf.d/php.linux.com.conf
server {
    listen 80;
    server_name php.linux.com;
    
    #匹配以 .php 结尾的 URI
    location ~ \.php$ {
        root /code/php;
        #转交给 127.0.0.1:9000 php服务所在的主机处理请求数据
        fastcgi_pass 127.0.0.1:9000;
        #php解析用户请求数据的真实路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #包含 fastcgi 的所有变量,设置后可以被调用
        include fastcgi_params;
    }
}

$document_root = /code/php
$fastcgi_script_name = 用户请求的URI

# Windows 解析
C:\Windows\System32\drivers\etc\hosts
10.0.0.31 php.linux.com
# 访问web页面查看
php.linux.com/index.php

关联 mariadb

#配置站点目录
mkdir -p /code/mariadb
chown -R www.www /code

#编辑配置文件
vim /etc/nginx/conf.d/mariadb.linux.com.conf
server {
    listen 80;
    server_name mariadb.linux.com;

	#匹配以 .php 结尾的 URI
    location ~ \.php$ {
    	root /code/mariadb;
    	#转交给 127.0.0.1:9000 php服务所在的主机处理请求数据
        fastcgi_pass 127.0.0.1:9000;
        #php解析用户请求数据的真实路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #包含 fastcgi 的所有变量,设置后可以被调用
        include fastcgi_params;
    }
}

systemctl restart nginx

#在/code目录下创建 index.php 文件,填入对应的数据库IP、用户名、密码
vim /code/mariadb/index.php
<?php
    $servername = "localhost";
    $username = "root";
    $password = "123456";

    // 创建连接
    $conn = mysqli_connect($servername, $username, $password);

    // 检测连接
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    echo "小哥哥,php可以连接MySQL...";
?>

<img style='width:100%;height:100%;' src=https://blog.driverzeng.com/zenglaoshi/php_mysql.png>


# Windows 解析
C:\Windows\System32\drivers\etc\hosts
10.0.0.31 mariadb.linux.com
# 访问web页面查看
mariadb.linux.com/index.php

实战1

部署 上传文件的网站

下载网站代码
rz kaoshi.zip
设置站点目录
mkdir -p /code/push
unzip -q kaoshi.zip -d /code/push

vim /code/push/upload_file.php
#上传文件的目录
$wen="/code/push/pic";

chown -R www.www /code
编辑 Nginx 配置文件
1# 先以最简单的方法搭建的上传文件的站点配置文件
cat > /etc/nginx/conf.d/push.linux.com.conf << EOF
server {
    listen 80;
    server_name push.linux.com;

    location / {
    root /code/push;
    index index.html;
    }
}
EOF
systemctl restart nginx

	# Windows 解析
C:\Windows\System32\drivers\etc\hosts
10.0.0.31 push.linux.com
	# 访问web页面查看
push.linux.com

	#点击 选择文件 后选择一个准备上传的文件,再 点击上传
	#会提示:405 Not Allowed 或者 413 Request Entity Too Large
	#报错为 405 因为 web服务没有办法解析动态请求,即没有办法解析 php 代码
	#报错为 413 因为文件过大,可以在 http server location 层配置
	client_max_body_size 200m;


	# httpd 做 web服务器时,在安装PHP后会自动生成一个php.conf文件,就能关联上PHP,
	# nginx 做 web服务器时,需要手动配置关联PHP
2#正确的配置 Nginx 关联 PHP
vim /etc/nginx/conf.d/push.linux.com.conf
server {
    listen 80;
    server_name push.linux.com;
	#设置上传文件的大小
	client_max_body_size 20m;

    location / {
    root /code/push;
    index index.html;
    }

	#匹配以 .php 结尾的 URI
    location ~ \.php$ {
    	root /code/push;
    	#转交给 127.0.0.1:9000 php服务所在的主机处理请求数据
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

systemctl restart nginx
访问页面
# Windows 解析
C:\Windows\System32\drivers\etc\hosts
10.0.0.31 push.linux.com
# 访问web页面查看
push.linux.com

实战2

部署 博客 WordPress

下载网站代码
#下载指定版本
[root@web01 ~]# wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz
#下载最新版
[root@web01 ~]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
配置站点目录
mkdir -p /code
tar xf wordpress-5.0.3-zh_CN.tar.gz -C /code
chown -R www.www /code
编辑 Nginx 配置文件
# 先以最简单的方法搭建的上传文件的站点配置文件
vim /etc/nginx/conf.d/wp.linux.com.conf
server {
    listen 80;
    server_name wp.linux.com;
    client_max_body_size 200m;

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

systemctl restart nginx
配置 数据库
# 数据库
	#连接数据库
[root@web01 ~]# mysql -uroot -p123456
	#创建数据库
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
配置wordpress连接数据库的php代码
#这个也可以不设置,通过第一次访问 wp.linux.com 时在 web 页面设置

cp /code/wordpress/wp-config-sample.php /code/wordpress/wp-config.php
vim /code/wordpress/wp-config.php
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');

/** MySQL数据库用户名 */
define('DB_USER', 'root');

/** MySQL数据库密码 */
define('DB_PASSWORD', '123456');

/** MySQL主机 */
define('DB_HOST', 'localhost');

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');
访问页面
# Windows 解析
C:\Windows\System32\drivers\etc\hosts
10.0.0.31 wp.linux.com
# 访问web页面查看
wp.linux.com

1、
现在就开始
数据库名	wordpress		希望将WordPress安装到的数据库名称。
用户名			root		您的数据库用户名。
密码			123456		您的数据库密码。
数据库主机	localhost		如果localhost不能用,您通常可以从网站服务提供商处得到正确的信息。
表前缀			wp_			如果您希望在同一个数据库安装多个WordPress,请修改前缀。
提交
2、
现在安装
3、
站点标题	 我的博客
用户名		  admin
密码		   1
确认密码	 √ 确认使用弱密码
您的电子邮件	123@qq.com
对搜索引擎的可见性 	口
安装WordPress
登陆

实战3

部署 知乎 wecenter

下载网站代码
#社区论坛官方下载站点
https://www.wecenter.com/downloads/
设置站点目录
mkdir -p /code/zh
unzip -q WeCenter_3-5-0.zip -d /code/zh
chown -R www.www /code
编辑 Nginx 配置文件
vim /etc/nginx/conf.d/zh.linux.com.conf
server {
    listen 80;
    server_name zh.linux.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;
    }
}

systemctl restart nginx
配置 数据库
# 数据库
	#连接数据库
[root@web01 ~]# mysql -uroot -p123456
	#创建数据库
MariaDB [(none)]> create database zh;
Query OK, 1 row affected (0.00 sec)
访问页面
# Windows 解析
C:\Windows\System32\drivers\etc\hosts
10.0.0.31 zh.linux.com
# 访问web页面查看
zh.linux.com

1、
服务器环境检查---下面需要全部是绿色的 √ 才可以点下一步
2、
数据库主机	localhost	通常为 localhost
数据库帐号	root
数据库密码	123456
数据库端口				一般情况下不需要填写
数据库名称	zh
数据表前缀	aws_		同数据库安装多个本程序时需要更改
数据表类型	InnoDB		请根据服务器状态选择数据表类型
#注:MyISAM 不支持数据库热备, InnoDB 支持数据库热备,所以选 InnoDB
开始安装
3、
用户名		admin
密码		 1
E-mail	  123@qq.com
完成
访问网站首页

实战4

部署 在线教育 edusoho

下载网站代码
https://www.edusoho.com/open/show
设置站点目录
mkdir -p /code
unzip -q edusoho-8.6.20.zip -d /code
chown -R www.www /code
编辑 Nginx 配置文件
vim /etc/nginx/conf.d/edu.linux.com.conf
server {
    listen 80;
    server_name edu.linux.com;

    root /code/edusoho/web;

    # 日志路径
    access_log /var/log/nginx/edusoho.access.log;
    error_log /var/log/nginx/edusoho.error.log;

    location / {
        index app.php;
        try_files $uri @rewriteapp;
    }

    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }

    location ~ ^/udisk {
        internal;
        #存放私有文件课时的视频、音频等资源目录
        root /code/edusoho/app/data/;
    }

    location ~ ^/(app|app_dev)\.php(/|$) {
    	#PHP服务所在主机地址
        fastcgi_pass   127.0.0.1:9000;
        #传递URI中匹配 (.+\.php) 这部分内容至 $fastcgi_script_name
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        #https不支持PHP文件				【on是支持,有https时才使用 HTTP on】
        fastcgi_param  HTTPS              off;
        #加速发送大文件
        fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect;
        #标头指向文件地址
        fastcgi_param HTTP_X-Accel-Mapping /udisk=/code/edusoho/app/data/udisk;
        #处理 Response [响应] 时第一个缓冲区的大小,不在下面的8个 buffers 【缓冲区】中
        fastcgi_buffer_size 128k;
        #这些缓冲区是根据实际的 Response 大小动态生成的,并不是一次性创建的
        #控制 nginx 最多创建 8 个大小为 128K 的缓冲区
        fastcgi_buffers 8 128k;
        include fastcgi_params;
    }

    # 配置设置图片格式文件
    location ~* \.(jpg|jpeg|gif|png|ico|swf)$ {
        # 过期时间为3年
        expires 3y;

        # 关闭日志记录
        access_log off;

        # 关闭gzip压缩,减少CPU消耗,因为图片的压缩率不高。
        gzip off;
    }

    # 配置css/js文件
    location ~* \.(css|js)$ {
        access_log off;
        expires 3y;
    }

    # 禁止用户上传目录下所有.php文件的访问,提高安全性
    location ~ ^/files/.*\.(php|php5)$ {
        deny all;
    }

    # 以下配置允许运行.php的程序,方便于其他第三方系统的集成。
    location ~ \.php$ {
        # [改] 请根据实际php-fpm运行的方式修改
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param  HTTPS              off;
        include fastcgi_params;
    }
}

systemctl restart nginx
配置 数据库
edusoho 会在页面创建
访问页面
# Windows 解析
C:\Windows\System32\drivers\etc\hosts
10.0.0.31 zxjy.linux.com
# 访问web页面查看
zxjy.linux.com

1、同意协议并开始安装
2、当前状态全部是绿色 √ 再点下一步,如果不符合就去检查配置文件
3、
数据库服务器	127.0.0.1	数据库服务器地址,一般为localhost或者127.0.0.1
数据库端口号	3306		数据库端口号,默认为3306
数据库用户名	root
数据库密码	 123456
数据库名	  edusoho
		√ 覆盖现有数据库	#如果原来数据库中历史数据就先导出
4、
网站名称		在线教育
管理员Email地址	123@qq.com	Email地址作为帐号,用于登录网站
管理员用户名		admin
管理员密码		admin123
网站负责人姓名		睡神之首
手机号码		16811111111
QQ号码			12345
初始化系统

AccessKey: gWwxC93UMXGLHX3V5wF6bj1uBQJY4xVn
SecretKey: 6DWwc8SsnwkDWPDtspYBXBEQqrsReqKP

请妥善保管授权码,升级EduSoho系统、购买EduSoho应用、使用EduSoho云服务,都需使用此授权码。

进入系统

扩展练习

搭建
phpmyadmin		https://www.phpmyadmin.net/		基于web的MySQL数据库管理工具站点
zblog			https://www.zblogcn.com/		博客网站【教程 https://www.txcstx.cn/post/975.html】
discuz			https://www.dismall.com/forum-38-1.html		论坛网站

总结

上传文件的网站,可以访问,也可以上传文件,所以这是一个动态页面网站

静态文件:上传服务器之后没有任何变化,上传是什么样,访问时就是什么样子

动态文件:不存在于服务器上的文件,他是由数据库等服务获取数据拼接成的

静态请求:请求html的请求

动态请求:请求的是非html文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值