一、LNMP概述
1、什么是LNMP
LNMP是一个合成词 = Linux + Nginx + MysqL + PHP LAMP区别就在于Web Server由Apache替换为Nginx。
2、LNMP之间的关系
LNMP都属于开源软件,这也是其比较流行的原因。
Nginx已经被F5公司收购了,负载均衡器 => 最出名的硬件负载均衡F5 Nginx社区版 => 开源免费
Nginx Plus收费版
3、准备LNMP服务器
第一步:克隆LNMP服务器
第二步:更改网卡IP地址与UUID编号
IPADDR = 10.1.1.10
UUID更改编号的最后3位
第三步:设置主机名称,然后绑定IP地址与主机名称到/etc/hosts文件
# hostnamectl set-hostname lnmp.itcast.cn # su
# vim /etc/hosts
10.1.1.10 lnmp lnmp.itcast.cn # systemctl restart network
第四步:关闭防火墙与SELinux
# systemctl stop firewalld
# systemctl disable firewalld # setenforce 0
# sed -i '/SELINUX=enforcing/cSELINUX=disabled'
/etc/selinux/config
第五步:关闭NetworkManager服务
# systemctl stop NetworkManager
# systemctl disable NetworkManager
第六步:配置yum源
[aliyun] name=aliyun yum
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ enabled=1
gpgcheck=0
baseurl=file:///mnt enabled=1
gpgcheck=0
yum
epel-release-latest-7.noarch.rpm
yum.repos.d]# cat server.repo
# rpm -ivh [root@db01 [local]
name=local
第七步:安装ntpdate,进行时间同步
# mount /dev/sr0 /mnt
# yum install ntpdate -y # ntpdate cn.ntp.org.cn
二、LNMP软件架构之MysqL
1、MysqL软件包
mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
说明:通用linux下的二进制包,已编译好,只需放到相应的安装目录里即可
企业级数据库部署中,常用的MysqL数据库一共有两种安装方式:GLIBC 安装与源码安装(二选一)
2、使用GLIBC安装MysqL
默认选项:
MysqL安装目录
MysqL数据目录
默认数据目录:/usr/local/MysqL/data 默认端口:3306
默认socket文件存放路径:/tmp/MysqL.sock
端与服务器端进行网络连接
3、MysqL详细安装步骤
mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
编写MysqL.sh脚本:
# vim MysqL.sh #!/bin/bash
tar -zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/MysqL useradd -r -s /sbin/nologin MysqL
chown -R MysqL.MysqL /usr/local/MysqL
cd /usr/local/MysqL
yum remove mariadb-libs -y scripts/MysqL_install_db --user=MysqL
cp support-files/MysqL.server /etc/init.d/MysqL service MysqL start
# 追加/usr/local/MysqL/bin目录到环境变量
echo 'export PATH=$PATH:/usr/local/MysqL/bin' >>
/etc/profile source /etc/profile
设置完成后,使用source命令执行MysqL.sh脚本
# source MysqL.sh
4、MysqL后续配置
# MysqL_secure_installation
注:在实际运维工作中,MysqL的密码一定要越复杂越好。第二步:MysqL测试验证
# MysqL -uroot -p Enter password:123
远程登录:
# MysqL -h 服务器IP地址 -P 端口号 -uroot -p Enter password:123
注:在实际运维工作中,远程连接账号尽量不要使用root。应该手工创建一个普通账号,然后按需分配权限。
5、扩展:MysqL.service脚本
CentOS6:service MysqL start|restart|stop CentOS7:systemctl start|restart|stop MysqL.service
# vim /usr/lib/systemd/system/MysqL.service
第二步:写入内容
[Unit]
Description=MysqL Server After=network.target After=syslog.target
[Service] User=MysqL Group=MysqL
ExecStart=/usr/local/MysqL/bin/MysqLd --defaults- file=/usr/local/MysqL/my.cnf
LimitNOFILE = 5000
PrivateTmp=false
[Install]
WantedBy=multi-user.target
注:
Unit代表单元,启动程序需要有单元信息After代表在某些服务启动后在进行MysqL启动
Service代表服务,最核心配置
User + Group代表将来以哪个用户的身份运行此软件ExecStart代表启动脚本调用哪个程序(systemctl start MysqL.service)
LimitNOFILE代表限制文件大小
PrivateTmp代表是否把MysqL的运行程序放入私有空间,比如pid,socket
文件
Install代表安装模式,代表把MysqL服务运行在何种模式下
第三步:关闭原有的MysqL,使用systemctl启动MysqL
# service MysqL stop
# systemctl start MysqL
扩展:关闭与重启
# systemctl stop MysqL
# systemctl restart MysqL
# systemctl enable MysqL
扩展:关闭开机启动项
# systemctl disable MysqL
三、LNMP软件架构之Nginx
1、Nginx概述
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的http://Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0 发布于2004年10月4日。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件
(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用Nginx网站用户有:百度、京东、新浪、网易、腾 讯、淘宝等。
# curl -I 域名地址
Server:Nginx
2、Nginx应用场景
- web服务器软件 httpd(apache)
同类型web服务器软件:apache Nginx(俄罗斯) iis(微软) lighttpd(德国)
3、Nginx特点
① 高可靠:稳定性 master进程 管理调度请求分发到哪一个worker=> worker进程 响应请求 一master多worker
Nginx --------- master进程 ----------------worker worker worker
② 热部署 :(1)平滑升级 (2)可以快速重载配置 => 不停止业务的情况下实现软件升级以及重载
③ 高并发:可以同时响应更多的请求 事件 epoll模型 几万
④ 响应快:尤其在处理静态文件上,响应速度很快 sendfile
⑤ 低消耗:cpu和内存 1w个请求 内存2-3MB
⑥ 分布式支持:反向代理 七层负载均衡,新版本也支持四层负载均衡 =>
把用户请求进行分流
4、Nginx软件安装方式
常见安装方式:
① yum安装配置,需使用Nginx官方源或者EPEL源(不推荐 => 版本过低,没办法进行定制)
② 源码编译(强烈推荐)
5、Nginx编译安装
第一步:去Nginx的官网下载Nginx软件包(1.12.2)
第二步:使用Shell脚本安装Nginx软件(配置 => 编译 => 安装) 安装依赖库:
# mount /dev/sr0 /mnt
# yum -y install pcre-devel zlib-devel openssl-devel
# vim Nginx.sh #!/bin/bash
tar -zxf Nginx-1.12.2.tar.gz cd Nginx-1.12.2
useradd -r -s /sbin/nologin www
./configure --prefix=/usr/local/Nginx --user=www -- group=www --with-http_ssl_module --with- http_stub_status_module --with-http_realip_module make && make install
注:
--prefix:安装路径
--user:以哪个用户身份安装初始化
--group:以哪个用户组身份安装初始化
--with-*:代表安装哪些模块(默认情况下只安装基本模块)
6、Nginx目录介绍
conf:配置文件目录,Nginx主配置文件Nginx.conf。当Nginx启动时,会自动加载Nginx.conf文件
html:项目目录,项目的源代码就存放于此目录下 logs:日志目录,error.log错误日志与access.log访问日志sbin:二进制文件目录,Nginx的主程序sbin/Nginx
7、使用sbin/Nginx -h求帮助
# cd /usr/local/Nginx # sbin/Nginx -h
-V :显示Nginx的版本号与配置的选项信息(加载哪些模块)
-t :在编写Nginx.conf时,非常重要。主要用于语法检查
-s :发送信号,stop(停止)、quit(优雅的推出)、reopen(重新打开配置文件)、reload(热重载配置文件)
说明:stop停止与quit优雅推出的区别
stop:代表立即停止所有请求
quit:代表其不会立即停止所有请求,等待所有请求处理完毕后,在进行停止
reopen 与 reload reopen:代表重新打开配置文件
reload:热重载,就是在不停止业务的前提下,重新加载Nginx.conf配置文件
-c :加载配置文件
8、启动Nginx软件
# cd /usr/local/Nginx
# sbin/Nginx -c /usr/local/Nginx/conf/Nginx.conf # ss -naltp |grep 80
设置完成后,在Windows端打开浏览器,使用服务器的IP+80访问Nginx主页面
9、扩展Nginx.service脚本
第一步:停止原生的Nginx
# cd /usr/local/Nginx # sbin/Nginx -s stop
第二步:创建Nginx.service脚本
# vim /usr/lib/systemd/system/Nginx.service
第三步:编写脚本内容
[Unit]
Description=Nginx Web Server After=network.target
[Service] Type=forking
ExecStart=/usr/local/Nginx/sbin/Nginx -c
/usr/local/Nginx/conf/Nginx.conf ExecReload=/usr/local/Nginx/sbin/Nginx -s reload ExecStop=/usr/local/Nginx/sbin/Nginx -s quit PrivateTmp=true
[Install]
WantedBy=multi-user.target
注:
Type=forking,代表后台运行
第四步:使用Nginx.service程序启动:
# systemctl start Nginx
停止:
# systemctl stop Nginx
热重载:
# systemctl reload Nginx
开机启动项:
# systemctl enable Nginx
开机不启动:
# systemctl disable Nginx
四、LNMP软件架构之PHP
1、什么是PHP
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言,主要应用于Web领域。
PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。(新特性)
2、PHP-FPM
# httpd.conf => LoadModule => AddType => .PHP文件
Apache与PHP的之间的关系:PHP是以模块的形势加载在Apache的内核中。在解析动态PHP代码时,其效率较高。LoadModule
Nginx与PHP之间的关系:Nginx与PHP相对而言都是独立的,只不过在应用过程中,解析动态脚本时,Nginx会自动源代码发送给PHP-FPM程序。Nginx在处理静态页面时,效率较高。
3、PHP-FPM软件安装
第一步:安装依赖库
# yum -y install libxml2-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel
第二步:编写配置文件
# tar -zxf PHP-7.2.12.tar.gz # cd PHP7.2.12
# ./configure --prefix=/usr/local/PHP --with-config-file- path=/usr/local/PHP/etc --enable-fpm --with-fpm-user=www -
-with-fpm-group=www --with-MysqLi=MysqLnd --with-pdo- MysqL=MysqLnd --with-iconv-dir --with-freetype-dir --with- jpeg-dir --with-png-dir --with-zlib --with-libxml-dir -- enable-xml --disable-rpath --enable-bcmath --enable-shmop
--enable-sysvsem --enable-inline-optimization --with-curl
--enable-mbregex --enable-mbstring --enable-ftp --with-gd
--with-openssl --with-mhash --enable-pcntl --enable- sockets --with-xmlrpc --with-libzip --enable-soap -- without-pear --with-gettext --disable-fileinfo --enable- maintainer-zts
# make && make install
注:
--prefix:安装目录
--with-config-file-path:配置文件目录
--enable-fpm:开启PHP-fpm功能
--with-fpm-user:代表以哪个用户运行PHP-fpm
--with-fpm-group:代表以哪个用户组运行PHP-fpm
--with-MysqLi:PHP-MysqLi扩展
--with-pdo-MysqL:PHP-pdo-MysqL扩展
--with-*:项目所需的额外的扩展库(需要运维工程师安装,但是由程序猿提供文档)
PHP7.2:从PHP5.6开始,PHP链接MysqL必须使用MysqLi或pdo扩展。
4、PHP-FPM配置文件
① PHP.ini #默认PHP配置文件(/root/PHP-7.2.12) PHP => redis.so => Redis
② PHP-fpm.conf #PHP-fpm相关的配置 (默认已存在)
③ www.conf #PHP-fpm主配置文件(默认已存在)
# ll /usr/local/PHP
etc文件夹:专门用于存放PHP-fpm启动或运行过程中需要的配置文件
第一步:把PHP.ini移动到/usr/local/PHP/etc目录
# cp /root/PHP-7.2.12/PHP.ini-development
/usr/local/PHP/etc/PHP.ini
# cd /usr/local/PHP/etc目录
# cp /usr/local/PHP/etc/PHP-fpm.conf.default
/usr/local/PHP/etc/PHP-fpm.conf
# cp /usr/local/PHP/etc/PHP-fpm.d/www.conf.default
/usr/local/PHP/etc/PHP-fpm.d/www.conf
PHP-FPM启动 => PHP.ini => PHP-fpm.conf => www.conf文件
5、添加PHP-fpm启动项
# 把PHP-fpm添加到/etc/init.d目录下
# cp /root/PHP-7.2.12/sapi/fpm/init.d.PHP-fpm
/etc/init.d/PHP-fpm
# chmod +x /etc/init.d/PHP-fpm # service PHP-fpm start
# 查看9000端口的占用情况(Nginx中的PHP是以独立进程的方式运行,占用计算机的9000端口)
# ss -naltp |grep 9000
# echo 'export PATH=$PATH:/usr/local/PHP/bin' >>
/etc/profile
# source /etc/profile
1、为什么需要关联
Nginx占用80端口、PHP-FPM占用计算机的9000端口。
问题:请求过来后,都要先通过80端口的Nginx软件。那如果是.PHP为后缀的动态文件怎么处理呢?
2、创建PHP脚本
# cd /usr/local/Nginx/html # vim demo.PHP
<?PHP
echo 'hello PHP!';
?>
直接在浏览器中,访问IP地址+demo.PHP,自动弹出下载
原因分析:正常情况下,Nginx不具备PHP代码的解析功能。所以遇到PHP 代码以后,会把其当做未知文件,自动调用下载器进行下载。
3、让Nginx把.PHP文件转发PHP-FPM
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
# 监听端口
listen 80;
# 真实域名,localhost代表本机
server_name localhost;
# 项目目录
root html;
# 任意请求
location / {
# 默认首页(如果在html目录发现默认首页,直接运行)
index index.html index.htm;
}
# 添加PHP文件支持
location ~ \.PHP$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.PHP;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
include fastcgi_params;
}
# 当访问遇到错误时,返回50x.html页面给用户
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Nginx.conf文件,主要由三部分组成:
http {
server {}
server {}
}
一个Nginx.conf对应一个http,代表http请求,所以一个页面只有一个http
一个http可以包含多个server区块,每个区块就是一个项目(网站)=> 虚拟主机
设置完成后,一定要重载Nginx
# systemctl reload Nginx
重载完成后一定要检查一下9000端口是否启用,否则请求过来之后无法进行转发。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。