LNMP架构
-- (一套技术组合)
Linux Nginx mySQL(mariadb) php(python)
1.动态请求:
1)对于动态文件的请求称为动态请求
2)动态文件:不是服务器上真实存在的,而是通过程序获取数据组成的文件
2.静态请求:
1)对于静态文件的请求称为静态请求
2)静态文件:服务器上真实存在的,上传的时候什么样子,读取的时候还是什么样子
当用户发起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
-- 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;
再次访问