Linux运维电商系统项目第一天:基于 LNMP 平台进行架构与设计

一、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

默认数据目录:/usr/local/mysql/data 默认端口:3306

默认socket文件存放路径:/tmp/mysql.sock

端与服务器端进行网络连接

3、MySQL详细安装步骤

上传MySQL到Linux服务器:

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密码以及安全策略

# 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

第一步:创建一个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

第四步:把mysql.service添加到开机启动项中

# 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网站用户有:百度、京东、新浪、网易、腾 讯、淘宝等。

问题:怎么判断一个企业项目架构是否使用了Nginx

# curl -I 域名地址

Server:Nginx

2、Nginx应用场景

  1. web服务器软件 httpd(apache)

同类型web服务器软件:apache nginx(俄罗斯) iis(微软) lighttpd(德国)

  1. 提供了IMAP/POP3/SMTP服务
  2. 充当反向代理服务器,实现负载均衡功能。LB=>Load Blance

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

使用nginx.sh安装Nginx软件:

# 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

Apache与PHP 和 Nginx与PHP有何不同:

# 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-fpm进行管理php服务,有两个配置文件:

① 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

第二步:加载php-fpm.conf主配置文件

# cd /usr/local/php/etc目录
# cp /usr/local/php/etc/php-fpm.conf.default
/usr/local/php/etc/php-fpm.conf

第三步:加载php-fpm子配置文件www.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

6、把php的bin目录添加到环境变量

# echo 'export PATH=$PATH:/usr/local/php/bin' >>
/etc/profile
# source /etc/profile

五、让Nginx关联PHP-FPM

1、为什么需要关联

我们在安装Nginx与PHP时都是独立安装的。

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

Nginx 识别.php代码,然后转发 PHP-FPM

所以核心就是更改Nginx的配置文件nginx.conf:

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可以识别.php文件,然后转发:

设置完成后,一定要重载Nginx

# systemctl reload nginx

重载完成后一定要检查一下9000端口是否启用,否则请求过来之后无法进行转发。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值