LNMP架构介绍及配置--部署Discuz社区论坛与wordpress博客

一、LNMP架构定义

1、LNMP定义

LNMP(Linux Nginx Mysql Php)是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写;Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

  • Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。

  • Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好

  • MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL不仅是开放源代码的,也因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

  • PHP即"超文本预处理器",是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。因为PHP的开源性、免费性、快捷性等特点使其成为目前最流行的编程语言。

    四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。Nginx使用更少的资源,支持更多的并发连接,体现更高的效率;Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务;Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法);Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。

1.LNMP工作原理

  • 第一步:用户在浏览器输入域名或者IP访问网站
  • 第二步:用户在访问网站的时候,向web服务器发出http request请求,服务器响应并处理web请求,返回静态网页资源,如CSS、picture、video等,然后缓存在用户主机上。
  • 第三步:服务器调用动态资源,PHP脚本调用fastCGI传输给php-fpm,然后php-fpm调用PHP解释器进程解析PHP脚本。
  • 第四步:出现大流量高并发情况,PHP解析器也可以开启多进程处理高并发,将解析后的脚本返回给php-fpm,然后php-fpm再调给fast-cgi将脚本解析信息传送给nginx,服务器再通过http response传送给用户浏览器。
  • 第五步:浏览器再将服务器传送的信息进行解析与渲染,呈现给用户。

2、PHP

1.什么是PHP-FPM

复制代码
PHP官网:http://www.php.net/

PHP-FPM(FastCGl Process Manager:FastCG!进程管理器)是一个实现了Fastcgi的程序,并且提供进程管理的功能。进程包括master进程和worker进程。master进程只有一个,负责监听端口,接受来自web server的请求。worker进程一般会有多个,每个进程中会嵌入一个PHP解析器,进行PHP代码的处理。

PHP(Hypertext Preprocessor 超文本预处理器)是通用服务器端脚本编程语言,主要用于web开发实现动态web页面,也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一个命令行接口,因此,其也可以在大多数系统上作为一个独立的shell来使用

Rasmus Lerdor于1994年开始开发PHP,最初是一组被Rasmus Lerdor称作"PersonalHome Page Too"的Per)脚本,可以用于显示作者的简历并记录用户对其网站的访问。后来,RasmusLerdorf使用C语言将这些Perl脚本重写为CG!程序,还为其增加了运行Web forms的能力以及与数据库交互的特性,并将其重命名为"Personal Home Page/Forms Interpreter"或"PHP/EI"。此时,PHP/F!已经可以用于开comp.infosystems.www.authoring.cgi Usenet讨论组,从此PHP开始走进人们的视野。1997年,其2.0版本发布

2.PHP配置

php的配置文件:/etc/php.ini,/etc/php.d/*.ini

复制代码
配置文件在php解释器启动时被读取
1.对配置文件的修改生效方法
  • Modules:重启httpd服务
  • FastCGI:重启php-fpm服务
2./etc/php.ini配置文件格式
复制代码
[foo]:Section Header
directive = value
3.注释符:
  • 以#开头,纯粹的注释信息

  • 以;开头,用于注释可启用的directive

    提示:较新的版本中,已经完全使用" ; " 进行注释

4.php.ini配置参考文档
5.php常见设置
复制代码
expose_php = On
#响应报文显示首部字段x-poered-by:PHP/x.y.z,暴露php版本,建议为off
 
max_execution_time = 30
#最长执行时间为30s
 
memory_limit=128M
#可调大
 
display_errors=off
#调试使用,不要打开,否则可能暴露重要信息
 
display_startup_errors=off
#建议关闭
 
post_max_size=8M
#最大上传数据大小,可能调大,比下面的项大
 
upload_max_filesize=2M
#最大上传文件,可能调大
 
max_file_uploads = 20
#同时上传最多文件数
 
date.timezone = Asia/Shanghai
#指定时区
 
short_open_tag=on
#开启短标签,如:<? phpinfo();?>

二、LNMP架构

1、编译安装Nginx

复制代码
cd /opt

上传nginx-1.22.0.tar.gz

tar xf nginx-1.22.0.tar.gz 

cd nginx-1.22.0/

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

useradd -M -s /sbin/nologin nginx

./configure \
> --prefix=/usr/local/nginx \
#指定nginx的安装路径
> --user=nginx \
#指定用户名
> --group=nginx \
#指定组名
> --with-http_stub_status_module
#启用http_stub_status_module 模块以支持状态统计

make -j2

make install

ln -s /usr/local/nginx/sbin/nginx /usr/bin
#让系统识别nginx的操作命令可以自动补全   nginx     $PATH


tee /lib/systemd/system/nginx.service   <<eof
> [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 -1 $MAINPID
> ExecStop=/bin/kill -3 $MAINPID
> PrivateTmp=true
> [Install]
> WantedBy=multi-user.target
> eof


systemctl daemon-reload

systemctl enable --now nginx.service

systemctl status nginx

2、编译安装Mysql

初始化数据库

3、编译安装php

4、修改Nginx配置

复制代码
nginx的主配置

5、搭建论坛

**友情提示:**如果访问页面出现这样的情况,那就检查,有个服务没启动

6、搭建博客

相关推荐
掘金-我是哪吒1 小时前
分布式微服务系统架构第99集:缓存系统的实战级优化案例
分布式·缓存·微服务·云原生·架构
一介草民丶2 小时前
Mysql | 主从复制的工作机制
数据库·mysql·oracle
hawk2014bj2 小时前
Ubuntu 安装 MySQL
android·mysql·ubuntu
Rverdoser5 小时前
服务器(一种管理计算资源的计算机)
运维·服务器
流浪法师125 小时前
SecProxy - 自动化安全协同平台
运维·安全·自动化
_考不上研究生不改名5 小时前
【完美解决】VSCode连接HPC节点,已配置密钥却还是提示需要输入密码
linux·服务器·vscode·远程连接·hpc·超算集群
IT _oA6 小时前
Active Directory 域服务
运维·服务器·网络·windows·笔记
xujiangyan_7 小时前
MySQL的半同步模式
数据库·git·mysql
·云扬·7 小时前
【BUG】阿里云服务器数据库远程连接报错
服务器·阿里云·bug
飞翔沫沫情7 小时前
《MySQL 5.7.44审计合规实践:插件集成与日志分割自动化方案》
数据库·mysql·mysql审计