LNMP架构特点及安装部署

    科技2026-10-03  6

    LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

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

    Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

    Mysql是一个小型关系型数据库管理系统。

    PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

    这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

    LNMP特点 ​ LNMP动态网站部署架构是一套由Linux + Nginx + MySQL + PHP组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性。

    ​ Nginx是一款相当优秀的用于部署动态网站的轻量级服务程序,它最初是为俄罗斯门户站点而开发的,因其稳定性、功能丰富、占用内存少且并发能力强而备受用户的信赖。目前国内诸如新浪、网易、腾讯等门户站点均已使用了此服务。

    Nginx服务程序的稳定性源自于采用了分阶段的资源分配技术,降低了CPU与内存的占用率,所以使用Nginx程序部署的动态网站环境不仅十分稳定、高效,而且消耗的系统资源也很少。此外,Nginx具备的模块数量与Apache具备的模块数量几乎相同,而且现在已经完全支持proxy、rewrite、mod_fcgi、ssl、vhosts等常用模块。更重要的是,Nginx还支持热部署技术,可以7×24不间断提供服务,还可以在不暂停服务的情况下直接对Nginx服务程序进行升级。

    坦白来讲,虽然Nginx程序的代码质量非常高,代码很规范,技术成熟,模块扩展也很容易,但依然存在不少问题,比如是由俄罗斯人开发的,所以在资料文档方面还并不完善,中文资料的质量更是鱼龙混杂。但是Nginx服务程序在近年来增长势头迅猛,相信会在轻量级Web服务器市场具有不错的未来。

    ​

    ​ PHP(Hypertxt Preprocessor,超文本预处理器)是一种通用的开源脚本语言,发明于1995年,它吸取了C语言、Java语言及Perl语言的很多优点,具有开源、免费、快捷、跨平台性强、效率高等优良特性,是目前Web开发领域最常用的语言之一。

    LNMP优点 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。

    作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP,也可以支持作为 HTTP代理服务器对外进行服务。Nginx 用C编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。

    作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。

    Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级。 一. nginx的编译安装 1.1 依赖环境包安装 yum -y install gcc gcc-c++ make \ //编译器gcc,gcc-c++,编译工具make pcre-devel \ //正则表达式开发依赖包 zlib-devel //压缩依赖包

    1.2 解压源码包 [root@localhost ~]# cd /opt tar xzvf nginx-1.15.9.tar.gz //使用的是1.15.9版本

    1.3 创建程序用户 [root@localhost ~]# useradd -M -s /sbin/nologin nginx 1.3 ./configure配置 [root@localhost ~]# cd nginx-1.15.9/ ./configure –prefix=/usr/local/nginx \ //指定安装路径 –user=nginx \ //程序用户 –group=nginx \ //程序用户的组 –with-http_stub_status_module //状态统计模块

    1.4 make 配置文件构建出二进制文件 [root@localhost opt]# make //编译,将源代码转换为可执行的二进制程序 1.5 make install 安装 [root@localhost opt]# make install //将编译完的httpd程序及相关目录,文件复制到预设的安装目录 1.6 三个文件 1.61 主配置文件 [root@localhost opt]# vim /usr/local/aginx/conf/aginx.conf 1.62 命令文件 [root@localhost opt]# ln -s /usr/local/nginx/sbin//nginx /usr/local/bin [root@localhost opt]# nginx -t //验证nginx的配置文件的语法

    1.62 启动脚本 添加系统服务,便于systemctl 管理

    [root@localhost opt]# vi /lib/systemd/system/nginx.service 编辑模式 [Unit] Description=nginx //描述 After=network.target //描述服务类别 [Service] Type=forking //后台运行形式 PIDFile=/usr/local/nginx/logs/nginx.pid //PID文件位置 ExecStart=/usr/local/nginx/sbin/nginx //启动服务 ExecReload=/usr/bin/kill -s HUP $MAINPID //根据PID重载配置 ExecStop=/usr/bin/kill -s QUIT $MAINPID //根据PID终止进程 PrivateTmp=true [Install] WantedBy=multi-user.target //最小安装方式适用

    [root@localhost opt]# chmod 754 /lib/systemd/systecm/nginx.service

    1.7 开启服务 [root@localhost opt]# systemctl enable nginx.service [root@localhost opt]# systemctl start nginx [root@localhost opt]# netstat -anpt | grep aginx

    二. Mysql 的编译安装 2.1 安装依赖环境包 [root@localhost opt]# yum -y install ncurses \ ncurses-devel \ //字符终端 bison \ //通用解析器,解析C++语言 cmake

    ncurses是字符终端下屏幕控制的基本库,你在TTY下登录到主机上mysql需要的,所以依赖

    2.2 解压源码包 [root@localhost ~]# tar xf mysql-boost-5.7.20.tar.gz cd /opt

    2.3 ./cmake 配置 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ //指定安装路径 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ //通讯协议 -DSYSCONFDIR=/etc \ //指定配置文件目录 -DSYSTEMD_PID_DIR=/usr/local/mysql \ //指定PID进程目录位置 -DDEFAULT_CHARSET=utf8 \ //指定字符集 -DDEFAULT_COLLATION=utf8_general_ci \ //字符集规则 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ //指定存储引擎 -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ //不支持任何索引,但使用查询缓存的存储引擎 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ //黑洞引擎,写入的任何数据都会消失,用于记录binlog做复制的中继存储 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ //mysql的运行时状态记录的存储引擎 -DMYSQL_DATADIR=/usr/local/mysql/data \ //指定数据放置目录 -DWITH_BOOST=boost \ //C++程序库的总称 -DWITH_SYSTEMD=1 //相当于ID号

    2.4 make编译成二进制文件 [root@localhost opt]# make //编译,将源代码转换为可执行的二进制程序 2.5 make install安装 [root@localhost opt]# make install //将编译完的nginx程序及相关目录,文件复制到./configure设定的安装目录 创建数据库程序用户

    useradd -M -s /sbin/nologin mysql 数据库目录进行权限调整

    chown -R mysql:mysql /usr/local/mysql/ 2.6 三个文件 2.61 主配置文件 [root@localhost opt]# vi /etc/my.cnf //Mysql 5.7版本的my.cnf 配置文件需要设定 client , mysql, mysqld 三项

    [client] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock

    [mysql] port = 3306 default-character-set=utf8 socket = /usr/local/mysql/mysql.sock

    [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 server-id = 1

    sql_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 opt]# chown mysql.mysql /etc/my.cnf

    2.62 命令文件 echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH’ >> /etc/profile echo ‘export PATH’ >> /etc/profile source /etc/profile 1 2 2.63 启动脚本 cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ 2.7 初始化数据库 cd /usr/local/mysql/ bin/mysqld –initialize-insecure \ //初始化安全 –user=mysql \ //用户 –basedir=/usr/local/mysql \ //工作目录 –datadir=/usr/local/mysql/data //数据目录

    2.8 启动数据库 systemctl enable mysqld systemctl start mysqld systemctl status mysqld netstat -anpt | grep 3306

    mysqladmin -u root -p password “abc123” //刚开始没密码是空的直接回车,然后输入密码abc123,在此确认abc123,这是在root账户下运行的

    mysql -u root -p ##这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123

    三. PHP的编译安装 3.1 依赖环境包安装 [root@localhost opt]# yum -y install libjpeg \ libjpeg-devel \ //支持jpg格式的图片 libpng libpng-devel \ //支持png格式图片 freetype freetype-devel \ //字体样式(宋体,斜体,黑体等) libxml2 \ libxml2-devel \ //支持xml格式,版本2 zlib zlib-devel \ //支持压缩依赖包 curl curl-devel \ //定位远程web资源 openssl openssl-devel //安全套接字协议,增加网站访问的安全性 (搭档https,ssl证书)

    3.2 解压源码包 cd /opt tar xjvf php-7.1.10.tar.bz2 1 3.3 ./configure 配置 cd php-7.1.10 ./configure –prefix=/usr/local/php \ //指定安装目录 –with-mysql-sock=/usr/local/mysql/mysql.sock \ //关联Mysql –with-mysqli \ //启用mysql的客户端 –with-zlib \ //启用压缩功能 –with-curl \ //定位curl远程web资源 –with-gd \ //处理图片,图像,文字的库 –with-jpeg-dir \ //jpeg图片处理 –with-png-dir \ //png图片处理 –with-freetype-dir \ //字体类型 –with-openssl \ //ssl安全加密 –enable-fpm \ //动态处理模块 –enable-mbstring \ //字符串处理 –enable-xml \ //xml格式 –enable-session \ //session会话,前端的界面传送到后台,进行封装,后台处理完后,再返回到会话给前端 –enable-ftp \ //开启ftp –enable-pdo \ //连接数据库的驱动,连接系统与物理设备的桥梁 –enable-tokenizer \ //令牌,用作身份认证 –enable-zip //压缩

    3.4 make 编译成二进制文件 [root@localhost php-7.1.10]# make //编译,将源代码转换为可执行的二进制程序 3.5 make install 安装 [root@localhost php-7.1.10]# make install //将编译完的php程序及相关目录,文件复制到./configure设定的安装目录 3.6 三个文件 3.61 主配置文件 [root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini [root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini ##########只需要改以下两个参数就行### mysqli.default_socket = /usr/local/mysql/mysql.sock date.timezone = Asia/Shanghai

    ###########验证安装的模块########### /usr/local/php/bin/php -m ###必须使用绝对路径否则使用不了

    3.62 命令文件 ln -s /usr/local/php/bin/* /usr/local/bin/ 3.63 启动脚本 依赖于nginx的启动而启动,PHP的FPM动态处理的启动端口为9000

    3.7 配置及优化FPM模块 cd /usr/local/php/etc/ cp php-fpm.conf.default php-fpm.conf vim php-fpm.conf ###########搜索pid = run/php-fpm.pid 去掉分号开头####### pid = run/php-fpm.pid ###去掉; 启用fpm功能

    cd /usr/local/php/etc/php-fpm.d/ cp www.conf.default www.conf

    注:/usr/local/php/etc/php-fpm.conf 和 /usr/local/php/etc/php-fpm.d/www.conf这两个fpm模块的文件其实是一个文件, /usr/local/php/etc/php-fpm.d/www.conf是/usr/local/php/etc/php-fpm.conf 的子文件,里面指定了端口号9000等fpm模块的信息

    3.8 编辑nginx主配置文件,使其支持PHP ######去掉前面井号改一下 fastcgi_param 后面的就行### vim /usr/local/nginx/conf/nginx.conf location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; include fastcgi_params; }

    设置测试页

    ########改完之后建一个PHP的测试页#### vim /usr/local/nginx/html/index.php

    <?php phpinfo(); ?>

    修改过nginx配置文件需要重启一下服务

    nginx -t //验证一下配置文件的语法 systemctl restart nginx

    Processed: 0.009, SQL: 9