LNMP部署及应用

embedded/2024/9/25 21:28:46/

目录

1.LNMP概述

Nginx 特点

Nginx 作用

2.分布式部署LNMP操练

 Nginx主机:CentOS 7-1

PHP主机:  CentOS 7-2 


1.LNMP概述

Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是, Nginx 是免费的并可以商业化,配置使用也比较简单。 

Nginx 特点

  • 高并发、高性能;

  • 模块化架构使得它的扩展性非常好;

  • 异步非阻塞的事件驱动模型这点和 Node.js 相似;

  • 相对于其它服务器来说它可以连续几个月甚至更长而不需要重启服务器使得它具有高可靠性;

  • 热部署、平滑升级;

  • 完全开源,生态繁荣;

Nginx 作用

Nginx 的最重要的几个使用场景:

  1. 静态资源服务,通过本地文件系统提供服务;

  2. 反向代理服务,延伸出包括缓存、负载均衡等;

  3. API 服务, OpenResty ;

对于前端来说 Node.js 并不陌生, Nginx 和 Node.js 的很多理念类似, HTTP 服务器、事件驱动、异步非阻塞等,且 Nginx 的大部分功能使用 Node.js 也可以实现,但 Nginx 和 Node.js 并不冲突,都有自己擅长的领域。 Nginx 擅长于底层服务器端资源的处理(静态资源处理转发、反向代理,负载均衡等), Node.js 更擅长上层具体业务逻辑的处理,两者可以完美组合。

用一张图表示:

图片

2.分布式部署LNMP操练

实验准备:

Nginx主机:CentOS 7-1

PHP主机:  CentOS 7-2

MYSQL主机:CentOS 7-5

(1)实现部署

关闭三台主机的防火墙

 查看挂载

 CentOS 7-5:mysql

编译安装 

创建mysql用户

useradd -M -s /sbin/nologin  mysql

  修改mysql配置文件

[client]
port = 3306
socket=/usr/local/mysql/mysql.sock[mysql]
port = 3306
socket = /usr/local/mysql/mysql.sock
auto-rehash[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=4096
default-storage-engine=INNODB
max_allowed_packet=32M
server-id = 1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

设置路径环境变量 

[root@localhost local]# cd mysql/bin/
[root@localhost bin]# pwd
/usr/local/mysql/bin
[root@localhost bin]# ls
innochecksum       mysqlcheck                  mysqlimport                mysql_tzinfo_to_sql
lz4_decompress     mysql_client_test           mysql_install_db           mysql_upgrade
myisamchk          mysql_client_test_embedded  mysql_plugin               mysqlxtest
myisam_ftdump      mysql_config                mysqlpump                  perror
myisamlog          mysql_config_editor         mysql_secure_installation  replace
myisampack         mysqld                      mysqlshow                  resolveip
my_print_defaults  mysqld_pre_systemd          mysqlslap                  resolve_stack_dump
mysql              mysqldump                   mysql_ssl_rsa_setup        zlib_decompress
mysqladmin         mysqldumpslow               mysqltest
mysqlbinlog        mysql_embedded              mysqltest_embedded
[root@localhost bin]# vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib

 

 

数据库初始化操作 

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \				#生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data		#指定数据库文件的存储路径

添加mysqld系统服务 

cp mysqld.service /usr/lib/systemd/system		#用于systemctl服务管理
systemctl daemon-reload         #刷新识别     
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -anpt | grep 3306       #查看端口

登录数据库

 

 Nginx主机:CentOS 7-1

[root@localhost yum.repos.d]# cd /opt/
[root@localhost opt]# ls
nginx-1.26.1.tar.gz
[root@localhost opt]# tar xf nginx-1.26.1.tar.gz
[root@localhost opt]# ls
nginx-1.26.1  nginx-1.26.1.tar.gz
[root@localhost opt]# cd nginx-1.26.1/
[root@localhost nginx-1.26.1]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
[root@localhost nginx-1.26.1]# yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
local                                                                  | 3.6 kB  00:00:00     
软件包 pcre-devel-8.32-17.el7.x86_64 已安装并且是最新版本安装依赖包
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make[root@localhost nginx-1.26.1]# useradd -M -s /sbin/nologin nginx  #创建nginx用户

[root@localhost nginx-1.26.1]# useradd -M -s /sbin/nologin nginx
[root@localhost nginx-1.26.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module 
[root@localhost nginx-1.26.1]# make -j 2
[root@localhost nginx-1.26.1]# make install #编译安装

 创建软链接

[root@localhost nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

添加 Nginx 系统服务 

[root@localhost nginx]# cd /usr/lib/systemd/system
[root@localhost system]# vim nginx.service
[root@localhost system]# systemctl start nginx.service
[root@localhost system]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@localhost system]# netstat -lntp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7207/nginx: master  5、添加 Nginx 系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

 配置 nginx 支持 PHP 解析

worker_processes  auto;
worker_rlimit_nofile 65535;
server {listen       80;server_name  www.xy101.com;charset utf-8;location ~ \.php$ {root           /var/www/html;fastcgi_pass   192.168.80.40:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;include        fastcgi_params;}[root@localhost conf]# nginx -t  #检查配置文件是否有误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost conf]# systemctl restart nginx

 

 验证PHP 测试页 

[root@localhost conf]# mkdir -p /var/www/html
[root@localhost conf]# cd /var/www/html  #动态页面的目录
[root@localhost html]# ls
[root@localhost html]# vim test.php
<?php
phpinfo();
?>

访问静态页面 

 

 

 安装rpcbind

 

创建论坛

(1)解压

(2) 调整论坛目录的权限

[root@localhost html]# chown -R nginx:nginx discuz/
[root@localhost html]# ll
总用量 12
drwxr-xr-x 13 nginx nginx 4096 5月  30 18:36 discuz
-rw-r--r--  1 root  root   151 5月  30 17:44 mysql.php
-rw-r--r--  1 root  root    20 5月  30 15:33 test.php

PHP主机:  CentOS 7-2 

 解压缩安装包

 安装环境依赖包

安装环境依赖包
yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel pcre-devel

 编译安装

cd php-7.1.10
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zipmake && make install

 

 路径优化

路径优化
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

 调整PHP配置文件

php有三个配置文件: 
php.ini			主配置文件  
php-fpm.conf	进程服务配置文件 
www.conf		扩展配置文件#调整主配置文件:
cp php.ini-production /usr/local/php/lib/php.ini	
vim /usr/local/php/lib/php.ini
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghaiphp -m 					#验证安装的模块#调整进程服务配置文件:
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
--17行--去掉";"注释
pid = run/php-fpm.pid
[root@localhost php-7.1.10]# cp php.ini-production /usr/local/php/lib/php.ini
[root@localhost php-7.1.10]# cd /usr/local/php/lib/
[root@localhost lib]# ls
php  php.ini
[root@localhost lib]# vim php.ini

 

#调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.confvim www.conf

 此处不修改成php

 

启动php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep php#PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/
systemctl restart php-fpm.service

 验证数据库工作是否正常

[root@localhost fpm]# cd /var/www/html/
[root@localhost html]# ls
test.php
[root@localhost html]# vim mysql.php
<?php
$link=mysqli_connect('192.168.80.50','root','abc123');
if($link) echo "<h1>mysql connect Success!!</h1>";
else echo "mysql connect :Fail!!";
?>

测试如果mysql账户密码填错 

 

挂载

[root@localhost php-7.1.10]# showmount -e 192.168.80.30
Export list for 192.168.80.30:
/var/www/html 192.168.80.0/24
[root@localhost php-7.1.10]# vim /etc/fstab
[root@localhost php-7.1.10]# mkdir /var/www/html -p
[root@localhost php-7.1.10]# mount -a
[root@localhost php-7.1.10]# df -h
文件系统                     容量  已用  可用 已用% 挂载点
devtmpfs                     1.9G     0  1.9G    0% /dev
tmpfs                        1.9G     0  1.9G    0% /dev/shm
tmpfs                        1.9G   13M  1.9G    1% /run
tmpfs                        1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root       36G  5.9G   30G   17% /
/dev/sda1                    509M  181M  329M   36% /boot
tmpfs                        378M   12K  378M    1% /run/user/42
tmpfs                        378M     0  378M    0% /run/user/0
/dev/sr0                     4.5G  4.5G     0  100% /mnt
192.168.80.30:/var/www/html   36G  5.6G   30G   16% /var/www/html
192.168.80.30:/var/www/html /var/www/html nfs defaults,_netdev 0 0

 


http://www.ppmy.cn/embedded/45692.html

相关文章

【数据结构】二叉树链式结构的实现

前言 上篇博客我们说了有关二叉树顺序结构——堆&#xff0c;堆是完全二叉树&#xff0c;但我们对于普通的二叉树&#xff08;不一定为完全二叉树&#xff09;&#xff0c;我们该用什么结构实现那&#xff0c;本篇就来详细说一下&#xff0c;二叉树另一个实现的结构&#xff0c…

OrangePi AIpro初识及使用大模型GPT-Neo-1.3B测试

OrangePi AIpro介绍 1.1. 开发板简介 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能AI 开发板&#xff0c;其搭 载了昇腾AI 处理器&#xff0c;可提供8TOPS INT8 的计算能力&#xff0c;内存提供了8GB 和16GB 两种版本。可以实现图像、视频等多种数据分析与推理…

T-Pot多功能蜜罐实践@debian12@FreeBSD

T-Pot介绍 T-Pot是一个集所有功能于一身的、可选择分布式的多构架&#xff08;amd64&#xff0c;arm64&#xff09;蜜罐平台&#xff0c;支持20多个蜜罐和很多可视化选项&#xff0c;使用弹性堆栈、动画实时攻击地图和许多安全工具来进一步改善欺骗体验。GitHub - telekom-sec…

simCSE句子向量表示(1)-使用transformers API

SimCSE SimCSE: Simple Contrastive Learning of Sentence Embeddings. Gao, T., Yao, X., & Chen, D. (2021). SimCSE: Simple Contrastive Learning of Sentence Embeddings. arXiv preprint arXiv:2104.08821. 1、huggingface官网下载模型 官网手动下载&#xff1a;pri…

理解不同层的表示(layer representations)

在机器学习和深度学习领域&#xff0c;特别是在处理音频和自然语言处理&#xff08;NLP&#xff09;任务时&#xff0c;"层的表示"&#xff08;layer representations&#xff09;通常是指神经网络不同层在处理输入数据时生成的特征或嵌入。这些表示捕获了输入数据的…

关于鸿蒙系统对比安卓系统的优势?

鸿蒙操作系统 一、基于微内核架构的操作系统。什么是微内核设计&#xff1f; 微内核设计是一种操作系统设计方法&#xff0c;它将操作系统的核心功能模块化&#xff0c;将尽可能多的功能移到用户空间&#xff0c;只在内核中保留最基本的功能&#xff0c;如进程管理和内存管理…

C语言之旅:探索单链表

目录 一、前言 二、实现链表的功能&#xff1a; 打印 创建节点 尾插 尾删 头插 头删 查找 在指定位置之前插入数据 指定位置删除 在指定位置之后插入数据 打印 销毁 三、全部源码&#xff1a; 四、结语 一、前言 链表是一个强大且基础的数据结构。对于很多初…

大文件分片【笔记】

createChunk.js Spark-md5计算文件各分片MD5生成文件指纹 可以帮助我们更加方便地进行文件哈希计算和文件完整性检测等操作。 import sparkMd5 from ./sparkmd5.jsexport function createChunk(file, index, chunkSize) {return new Promise((resolve, reject) > {const sta…