一、企业级架构之LNMP

打印 上一主题 下一主题

主题 531|帖子 531|积分 1593

一、LNMP 概述

1、LNMP之间的关系:

LNMP = Linux + Nginx + MySQL + PHP


2、配置LNMP服务器:

(1) 克隆一台centos7虚拟机,修改 IP 地址 和 UUID 编号。

IP 为 10.1.1.10,UUID 修改后三位。

(2) 设置主机名称,绑定IP地址与主机名称到/etc/hosts文件。

  1. hostnamectl set-hostname lnmp.itcast.cn
  2. vim /etc/hosts
  3. 10.1.1.10 lnmp lnmp.itcast.cn
复制代码
(3) 关闭防火墙和selinux。

  1. systemctl stop firewalld
  2. systemctl disable firewalld
  3. setenforce 0
复制代码
(4) 关闭NetworkManager服务。

  1. systemctl stop NetworkManager
  2. systemctl disable NetworkManager
复制代码
(5) 配置 yum 源。

配置阿里镜像源。

(6) 安装ntpdate,进行时间同步。

  1. yum install ntpdate -y
  2. ntpdate cn.ntp.org.cn
复制代码
二、LNMP软件架构之MySQL

1、MySQL安装:

(1) 安装方式:

企业级数据库部署中,常用的MySQL数据库一共有两种安装方式:GLIBC 安装与源码安装。

① GLIBC 安装:使用操纵系统的包管理器(如APT、YUM等)来安装MySQL,会主动处理依靠关系。

② 源码安装:通过从MySQL官方网站下载MySQL源代码,并手动编译安装,这种方式需要更多的手动配置和管理。

(2) 安装步骤:

编辑脚本一键安装:

  1. #!/bin/bash
  2. tar -zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
  3. mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
  4. #创建一个名为mysql的系统用户,该用户只用于运行 MySQL 服务,不允许登录系统
  5. useradd -r -s /sbin/nologin mysql
  6. chown -R mysql.mysql /usr/local/mysql
  7. cd /usr/local/mysql
  8. yum remove mariadb-libs -y
  9. #运行MySQL提供的mysql_install_db脚本来初始化MySQL数据库,指定初始化过程中使用mysql用户
  10. scripts/mysql_install_db --user=mysql
  11. #将MySQL提供的启动脚本复制到/etc/init.d/mysql,以便使用系统命令管理MySQL服务
  12. cp support-files/mysql.server /etc/init.d/mysql
  13. service mysql start
  14. # 追加/usr/local/mysql/bin目录到环境变量
  15. echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
  16. source /etc/profile
复制代码
设置完成后,使用source下令执行mysql.sh脚本:

source mysql.sh

(3) mysql 默认选项:

默认安装路径:/usr/local/mysql

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

默认端口:3306

默认socket文件存放路径:/tmp/mysql.sock (这个套接字文件用于当地连接到 MySQL 服务器,允许客户端应用程序如 php 与 MySQL 服务器进行通信)

2、MySQL后续配置:

(1) 配置MySQL密码以及安全策略:

mysql_secure_installation


(2)MySQL登录验证:

mysql -uroot -p


远程登录:

mysql -h 服务器IP地址 -P 端口号 -uroot -p

三、LNMP架构之Nginx

1、Nginx应用场景:

Nginx是一款轻量级的 Web 服务器/反向署理服务器及电子邮件 (IMAP/POP3) 署理服务器,其特点是占据内存少,并发能力强。

(1) 应用场景:

①web服务器软件。

②充当邮件服务器,提供 IMAP/POP3/SMTP 服务。

③充当反向署理服务器,实现负载均衡功能。

(2) 特点:

①高可靠:一个进程下有多个线程,某个线程故障不会影响其他线程运行;

②热部署:平滑升级,在不制止业务的情况下实现软件升级以及重载;

③高并发:可以同时响应更多的请求事件;

④响应快:尤其在处理静态文件上,响应速率很快;

⑤低消耗:1w个请求消耗内存2-3MB;

⑥分布式支持:反向署理七层负载均衡,把用户请求进行分流。

2、Nginx安装:

(1) 安装方式:

①yum安装配置,需使用Nginx官方源大概EPEL源 (版本过低,无法进行定制,不保举)

②源码编译。

(2) Nginx编译安装:

①去官网下载Nginx安装包:

社区版 => http://www.nginx.org

企业版 => http://www.nginx.com

②使用Shell脚本安装Nginx软件:
前提预备:安装依靠库:

  1. yum -y install pcre-devel zlib-devel openssl-devel
  2. yum -y install gcc gcc-c++ autoconf automake make
复制代码
编写脚本:

  1. #!/bin/bash
  2. tar -zxf nginx-1.12.2.tar.gz
  3. cd nginx-1.12.2
  4. useradd -r -s /sbin/nologin www
  5. #--prefix:安装路径
  6. #--with:安装拓展模块 -支持https -查看nginx基本状态信息 -代理服务器获取客户端真实IP
  7. ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module
  8. #编译安装
  9. make && make install
复制代码
3、Nginx目录:

(1) 目录先容:

conf:配置文件目录,Nginx主配置文件nginx.conf。

html:网站默认目录,源代码存放于此目录下 。

logs:日志目录,access.log访问日志与error.log错误日志。

sbin:可执行文件,Nginx的主程序sbin/nginx。


(2) sbin/nginx -h

表现nginx的资助信息:


(3) 启动nginx:

  1. sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  2. ss -naltp | grep 80
复制代码


4、扩展nginx.service脚本:

(1) 制止原生的nginx:

  1. cd /usr/local/nginx
  2. sbin/nginx -s stop
复制代码
(2) 创建nginx.service脚本,编写脚本:

vim /usr/lib/systemd/system/nginx.service

  1. [Unit]
  2. Description=Nginx Web Server
  3. After=network.target
  4. [Service]
  5. Type=forking
  6. ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  7. ExecReload=/usr/local/nginx/sbin/nginx -s reload
  8. ExecStop=/usr/local/nginx/sbin/nginx -s quit
  9. PrivateTmp=true
  10. [Install]
  11. WantedBy=multi-user.target
复制代码
这个脚本是一个 systemd 服务单元文件,systemd 是一个 Linux 系统的初始化系统和服务管理器,负责在系统启动时启动各种服务。

当编写并启用了这个脚本后,就可以使用系统下令启动、重载和制止Nginx服务。

(3) 使用系统下令管理nginx:



四、LNMP架构之php

1、php先容:

PHP(Hypertext Preprocessor,超文本预处理器)是一种通用开源脚本语言,重要应用于Web领域。

Nginx与PHP之间的关系:Nginx与PHP相对而言都是独立的,只不外在剖析动态脚本时,Nginx会将源代码发送给PHP-FPM程序进行剖析。

2、安装php-fpm:

(1) 安装依靠库:

yum -y install libxml2-devel libjpeg-devel libpng-devel freetype-devel curl-devel openssl-devel

(2) 编写配置文件:

  1. tar -zxf php-7.2.12.tar.gz
  2. cd php-7.2.12
  3. #--prefix:安装目录
  4. #--with-config-file-path:配置文件目录
  5. #--enable-fpm:开启php-fpm功能
  6. ./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
  7. make && make install
复制代码
3、php-fpm配置文件:

/usr/local/php/etc/ 专门用于存放 php-fpm 启动或运行过程中需要的配置文件。

使用php-fpm进行管理php服务,需要三个配置文件:

(1) php.ini

默认php配置文件,可以在这个文件中开启或关闭特定的 PHP 扩展。

php.ini 默认存放在 /root/php-7.2.12 下,php.ini-development 和 php.ini-production 分别用于开辟环境和生产环境。

php.ini-development 设置为表现全部错误,包括警告和关照。

php.ini-production 设置为不表现详细的错误信息给终极用户。


把php.ini移动到/usr/local/php/etc目录:

cp /root/php-7.2.12/php.ini-development /usr/local/php/etc/php.ini


(2) php-fpm.conf

PHP-FPM 的主配置文件,它包罗了 PHP-FPM 的全局设置,默认存放在 /usr/local/php/etc/ 下。

将该默认配置文件复制一份存放到此目录下:

cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf


(3) www.conf文件:

php-fpm 的子配置文件,优先级最高,默认存放在 /usr/local/php/etc/php-fpm.d 下。

将该默认配置文件复制一份存放到此目录下:

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文件

4、添加php-fpm启动项:

(1) 把php-fpm添加到/etc/init.d目录下:
/root/php-7.2.12/sapi/fpm/init.d.php-fpm 这个路径指向了一个脚本模版,包罗了用于启动、制止、重启 PHP-FPM 的服务。

将该脚本添加到/etc/init.d/下,可以使用系统下令管理php-fpm进程:

  1. cp /root/php-7.2.12/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
  2. chmod +x /etc/init.d/php-fpm
  3. service php-fpm start
复制代码

查看端口占用情况(php占用9000端口):


(2) 把php的bin目录添加到环境变量:
将 PHP 的 bin 目录添加到环境变量中,确保在系统的任何位置都可以直接运行 PHP 相干的下令。

  1. echo 'export PATH=$PATH:/usr/local/php/bin' >> /etc/profile
  2. source /etc/profile
复制代码
5.Nginx关联php:

(1) 为什么需要关联:

Nginx与PHP独立安装,Nginx占用80端口,PHP-FPM占用9000端口。Nginx处理静态页面 (.html),php处理动态页面(.php)。

(2) 创建php脚本:

cd /usr/local/nginx/html/

vim demo.php

  1. <?php
  2.     echo 'hello php!';
  3. ?>
复制代码
直接在浏览器中,访问IP地址/demo.php,会主动弹出下载,阐明nginx不具备剖析php代码的功能。

(3) 修改nginx配置文件:

更改配置文件,使nginx将.php文件交给php-fpm剖析。

nginx.conf文件,重要由三部门组成:

   
http {

  
        server { }

  
        server {

  
                location { }

  
        }

  
}

  
一个nginx.conf文件只有一个http区块,代表一个http请求;server定义了一个虚拟服务器的配置;location 用于定义怎样响应特定的请求 URI。

  1. worker_processes 1;
  2. events {
  3.     worker_connections 1024;
  4. }
  5. http {
  6.     include mime.types;
  7.     default_type application/octet-stream;
  8.     sendfile on;
  9.     keepalive_timeout 65;
  10.     server {
  11.         # 监听端口
  12.         listen 80;
  13.         # 域名,localhost代表本机
  14.         server_name localhost;
  15.         
  16.         # 任意请求
  17.         location / {
  18.             root html;
  19.             # 响应定义的默认首页
  20.             index index.html index.htm;
  21.         }
  22.         # 添加PHP文件支持
  23.         location ~ \.php$ {
  24.             root html;
  25.             fastcgi_pass 127.0.0.1:9000;
  26.             fastcgi_index index.php;
  27.             # php执行脚本的完整路径
  28.             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  29.    
  30.             include fastcgi_params;
  31.         }
  32.         # 当访问遇到错误时,返回50x.html页面给用户
  33.         error_page 500 502 503 504 /50x.html;
  34.    
  35.         location = /50x.html {
  36.         root html;
  37.         }
  38.     }
  39. }
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王海鱼

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表