34 使用 LNMP 架构部署动态网站环境

源码包程序

 LNMP 动态网站部署架构

        LNMP 动态网站部署架构是一套由 Linux + Nginx + MySQL + PHP 组成的动态网站系统
解决方案。

1. 准备工作

        在使用源码包安装服务程序之前,首先要让安装主机具备编译程序源码的环境。这需要
具备 C 语言、C++语言、Perl 语言的编译器,以及各种常见的编译支持函数库程序。因此请
先配置妥当软件仓库

dnf -y install apr* autoconf automake numactl bison bzip2-devel cpp curl-devel fontconfig-devel freetype-devel gcc gcc-c++ gd-devel gettext-devel kernel-headers keyutils-libs-devel krb5-devel libcom_err-devel libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libxml2-devel libXpm* libxml* libXaw-devel libXmu-devel libtiff* make openssl-devel patch pcre-devel perl php-common php-gd telnet zlib-devel libtirpc-devel gtk* ntpstat na* bison* lrzsz cmake ncurses-devel libzip-devel libxslt-devel gdbm-devel readline-devel gmp-devel

 安装 LNMP 动态网站部署架构所需的 4 个软件源码包和 1 个用于检查效果的博客系统软件包可以直接在 Linux服务器中使用 wget 命令下载这些源码包文件。为了更好地找到它们,我们统一放到/lnmp 目录下保存 

[root@localhost ~]# mkdir /lnmp
[root@localhost ~]# cd /lnmp
[root@localhost lnmp]# ls
mysql-8.0.18.tar.xz  nginx-1.16.0.tar.gz  php-7.3.5.tar.xz  rpcsvc-proto-1.4.tar.gz  wordpress.tar.xz

         rpcsvc-proto 是一款包含 rcpsvc 协议文件的支持软件包名称,rcpsvc 协议在后续 Nginx 与 MySQL 服务程序的部署过程中都需要被调用到。

        要想通过源码包安装服务程序,就一定要严格遵守上面总结的安装步骤:下载及解压源码包
文件、编译源码包代码、生成二进制安装程序、运行二进制的服务程序安装包。在解压、编译各个软件包源码程序时,都会生成大量的输出信息,

[root@localhost lnmp]# tar xzvf rpcsvc-proto-1.4.tar.gz
[root@localhost lnmp]# cd rpcsvc-proto-1.4/
[root@localhost rpcsvc-proto-1.4]# ./configure
[root@localhost rpcsvc-proto-1.4]# yum install make -y
[root@localhost rpcsvc-proto-1.4]# make
[root@localhost rpcsvc-proto-1.4]# make install

2.配置 Nginx 服务 

        Nginx 是一款相当优秀的用于部署动态网站的轻量级服务程序,它最初是为俄罗斯的一家门户站点而开发的,因其稳定性、功能丰富、占用内存少且并发能力强而备受用户的信赖。
        Nginx 服务程序的稳定性源自于采用了分阶段的资源分配技术,降低了 CPU 与内存的占用率,所以使用 Nginx 程序部署的动态网站环境不仅十分稳定、高效,而且消耗的系统资源也很少。此外,Nginx 具备的模块数量与 Apache 具备的模块数量几乎相同,而且现在已经完全支持 proxy、rewrite、mod_fcgi、ssl、vhosts 等常用模块。更重要的是,Nginx 还支持热部署技术,可以 7×24 小时不间断提供服务,还可以在不暂停服务的情况下直接对 Nginx 服务程序进行升级。

 创建用于管理网站服务的系统账户

    需要由不同的系统用户来管理不同的服务程序。新建账户时应使用-M 参数不创建对应的家目录,以及使用-s 参数指定登录后的 Shell 解释器为/sbin/nologin,确保任何人都不能通过这个账号登录主机。

[root@localhost rpcsvc-proto-1.4]# useradd nginx -M -s /sbin/nologin
[root@localhost rpcsvc-proto-1.4]# id nginx
uid=1002(nginx) gid=1002(nginx) groups=1002(nginx)

编译安装 Nginx 网站服务程序

使用 prefix 参数指定服务将被安装到哪个目录,方便后面找到和调用它。

用with-http_ssl_module 参数来开启 Nginx 服务的 SSL 加密模块,以便日后开启 HTTPS 协议功能: 

[root@localhost lnmp]# tar zxvf nginx-1.16.0.tar.gz
[root@localhost lnmp]# cd nginx-1.16.0/
[root@localhost  nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --withhttp_ssl_module
[root@localhost  nginx-1.16.0]# make
[root@localhost  nginx-1.16.0]# make install
[root@localhost  nginx-1.16.0]# cd ..

在上述过程中,存在模块没有安装,报错后,自行安装

sudo yum install pcre-devel
sudo yum install openssl-devel

 安装完毕后进入最终配置阶段

        在编译环境中使用 prefix 参数指定了安装路径,Nginx 服务程序配置文件一定在/usr/local/nginx 目录中。
        总共要进行 3 处修改,首先是把第 2 行的注释符(#)删除,然后在后面写上负责运行网站服务程序的账户名称和用户组名称。由 nginx 用户及 nginx 用户组负责管理网站服务。

[root@localhost lnmp]# vim /usr/local/nginx/conf/nginx.conf 2 user  nginx nginx;

        修改第 45 行的首页文件名称,在里面添加 index.php 的名字。这个文件也是让用户浏览网站时第一眼看到的文件,也叫首页文件。 

 45             index  index.php index.html index.htm;

         删除第 65~71 行前面的注释符(#)来启用虚拟主机功能,然后将第 69 行后面对
应的网站根目录修改为/usr/local/nginx/html,其中的 fastcgi_script_name 参数用于指代脚本名
称,也就是用户请求的 URL。只有信息填写正确了,才能使 Nginx 服务正确解析用户请求,
否则访问的页面会提示“404 Not Found”的错误。

 65         location ~ \.php$ {66             root           html;67             fastcgi_pass   127.0.0.1:9000;68             fastcgi_index  index.php;69             fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;70             include        fastcgi_params;71         }

设置环境变量全局使用nginx

        通过编译源码方式安装的服务默认不能被 systemctl 命令所管理,而要使用 Nginx服务本身的管理工具进行操作,相应命令所在的目录是/usr/local/nginx/sbin。由于使用绝对路径的形式输入命令未免会太麻烦,建议将/usr/local/nginx/sbin 路径加入到 PATH 变量中,让Bash 解释器在后续执行命令时自动搜索到它。然后在 source 命令后加载配置文件,让参数立即生效。下次就只需要输入 nginx 命令即可启动网站服务了 

 [root@localhost lnmp]# vim ~/.bash_profile1 # .bash_profile23 # Get the aliases and functions4 if [ -f ~/.bashrc ]; then5         . ~/.bashrc6 fi78 # User specific environment and startup programs910 PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin1112 export PATH[root@localhost lnmp]# source ~/.bash_profile
[root@localhost lnmp]# nginx

配置 MySQL 服务

 创建用于管理网站服务的系统账户

        在系统中创建一个名为 mysql 的用户,专门用于负责运行 MySQL 数据库。请记得要把这类账户的 Bash 终端设置成 nologin 解释器,避免黑客通过该用户登录到服务器中,从而提高系统安全性。

[root@localhost lnmp]# useradd mysql -M -s /sbin/nologin

解压 MySQL 安装软件包

        将解压出的程序目录改名并移动到/usr/local 目录下,对其进行初始化操作后便可使用。需要注意的是,以.tar.xz 结尾的压缩包软件,不应用 z 参数进行解压。并重命名为MySQL,再将其移动到/usr/local目录下

[root@localhost lnmp]# tar -xvf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
[root@localhost lnmp]# mv mysql-8.0.18-linux-glibc2.12-x86_64 mysql
[root@localhost lnmp]# mv mysql /usr/local

创建data目录 

         在生产环境中管理 MySQL 数据库时,有两个比较常用的目录。

一个是/usr/local/mysql目录,这是用于保存 MySQL 数据库程序文件的路径。

还有一个是/usr/local/mysql/data 目录,它用于存储数据库的具体内容,每个数据库的内容会被单独存放到一个目录内。

对于存放实际数据库文件的 data 目录,用户需要先手动创建出来:

[root@localhost lnmp]# cd /usr/local/mysql/
[root@localhost mysql]# mkdir data

初始化 MySQL 服务程序

        对目录进行授权,保证数据能够被 mysql 系统用户读取。在初始化阶段,应使用 mysqld 命令确认管理 MySQL 数据库服务的用户名称、数据保存目录及编码信息。在信息确认无误后开始进行初始化。在初始化的最后阶段,系统会给用户分配一个初始化的临时密码,一定要保存好。

 将 /usr/local/mysql 目录下的所有文件和子目录的所有权(owner)和所属组(group)都修改为 mysql:mysql,初始化会看到临时密码

[root@localhost lnmp]# cd /usr/local/mysql/
[root@localhost mysql]# mkdir data
[root@localhost mysql]# chown -R mysql:mysql /usr/local/mysql
[root@localhost mysql]# cd bin
[root@localhost bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 
2024-02-03T06:21:06.031854Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.18) initializing of server in progress as process 20719
2024-02-03T06:21:08.413206Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #.j,yqmls1dF

设置环境变量全局使用mysql

MySQL 数据库的二进制可执行命令也单独存放在自身的程序目录/usr/local/mysql/bin 中。若每次在执行命令之前都要先切换到这个目录,要能也加入到 PATH 变量中可就方便

 [root@localhost bin]# vim ~/.bash_profile1 # .bash_profile23 # Get the aliases and functions4 if [ -f ~/.bashrc ]; then5         . ~/.bashrc6 fi78 # User specific environment and startup programs910 PATH=$PATH:$HOME/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin1112 export PATH
[root@localhost bin]# source ~/.bash_profile

        将启动脚本 mysql.server 放入到/etc/init.d 目录中,让服务器每次重启后都能自动启动数据库,并给予可执行权限。
        libtinfo.so.5 文件是 MySQL 数据库在 8.0 版本后新添加的重要的函数库文件,但默认不存
在,需要将 libtinfo.so.6.1 文件复制过来或者作为链接文件才能正常启动: 

[root@localhost bin]# cd /usr/local/mysql
[root@localhost mysql]# cp -a support-files/mysql.server /etc/init.d/                      [root@localhost mysql]# chmod a+x /etc/init.d/mysql.server
[root@localhost mysql]# ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo  
[root@linuxprobe mysql]# /etc/init.d/mysql.server start
Starting MySQL.Logging to '/usr/local/mysql/data/linuxprobe.com.err'.
. SUCCESS!
[root@linuxprobe mysql]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.18
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> alter user 'root'@'localhost' identified by 'mysql';

 需要继续切换到 mysql 数据库中,修改 user 表单的密码值

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_passwordBY'mysql';

 把数据库新建出来:

mysql> create database webdata;

配置 PHP 服务

解压 php 安装包软件并编译安装

        在编译期间,需要使用 prefix 参数指定安装路径,使用--with-mysqli 等参数开启对数据库的支持模块,为后面的在线安装网站做好准备。

 生成二进制文件并进行安装

[root@linuxprob mysql]# cd /lnmp
[root@linuxprobe lnmp]# tar xvf php-7.3.5.tar.gz
[root@linuxprobe lnmp]# cd php-7.3.5/
[root@localhost php-7.3.5]#  ./configure --prefix=/usr/local/php --enable-fpm --with-mysql --with-curl --with-pdo_mysql --with-pdo_sqlite --enable-mysqlnd --enable-mbstring --with-gd
[root@localhost php-7.3.5]# make
[root@localhost php-7.3.5]# make install

        将生成的 php 服务配置文件复制到安装目录中(/usr/local/php/),让其生效。需要 php-fpm 的配置文件,在/usr/local/php/etc/目录中也已经提供,需要复制模板即可:

[root@localhost php-7.3.5]# cp php.ini-development /usr/local/php/lib/php.ini
[root@localhost php-7.3.5]# cd /usr/local/php/etc/
[root@localhost etc]# mv php-fpm.conf.default php-fpm.conf

 复制一个模板文件到 php-fpm.d 的目录中,用于后续控制网站的连接性能:

[root@localhost etc]# mv php-fpm.d/www.conf.default php-fpm.d/www.conf


把 php 服务加入到启动项中,使其重启后依然生效:

[root@localhost etc]# cd /lnmp/php-7.3.5
[root@localhost php-7.3.5]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@localhost php-7.3.5]# chmod 755 /etc/init.d/php-fpm

        由于 php 服务程序的配置参数会对 Web 服务的运行环境造成影响,编辑 php.ini 配置文件,
在第 310 行的 disable_functions 参数后面追加上要禁止的功能。

[root@localhost php-7.3.5]# vim /usr/local/php/lib/php.ini
310 disable_functions = passthru,exec,system,chroot,chgrp,chown,she
ll_exec,
proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,s
yslog,readlink,
symlink,popepassthru,stream_socket_server

启动PHP 

[root@linuxprobe php-7.3.5]# /etc/init.d/php-fpm start
Starting php-fpm done

搭建 WordPress 博客

把 Nginx 服务程序根目录的内容清空后,将 WordPress 解压后的网站文件复制进去:

[root@localhost lnmp]# rm -f /usr/local/nginx/html/*
[root@localhost lnmp]# tar xzvf wordpress.tar.gz
[root@localhost lnmp]# mv wordpress/* /usr/local/nginx/html/
[root@localhost lnmp]# chown -Rf nginx : nginx /usr/local/nginx/html/
[root@localhost lnmp]# chmod -Rf 777 /usr/local/nginx/html/

浏览器输入本地IP地址,就可以访问了,按照web操作即可 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/680840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux系统学习】2.Linux基础命令

Linux基础命令 Linux的目录结构 Linux命令入门 目录切换相关命令(cd/pwd) 相对路径、绝对路径和特殊路径符 创建目录命令(mkdir) 文件操作命令part1(touch、cat、more) 文件操作命令part2(cp、mv、rm) 查找命令(which、find) grep、wc和管道符…

AI绘画作品的展示和变现-2

4.7 制作红包封面 中国的节日和传统文化元素仍然可以成为创作者们的创作灵感,创造出更多的变现机会。比如元宵节,可以制作大型元宵图案,进行引流并卖出元宵。 而春分、谷雨等节气也可以成为创作的灵感来源,创作出与之相关的图案&…

双场板功率GaN HEMT电容模型以精确模拟开关行为

标题:Capacitance Modeling in Dual Field-Plate Power GaN HEMT for Accurate Switching Behavior(TED.16年) 摘要 本文提出了一种基于表面电位的紧凑模型,用于模拟具有栅极和源极场板(FP)结构的AlGaN/G…

更新至2022年,各省人口高质量城镇化指标体系构建原始数据(13个指标)

更新至2022年,各省人口高质量城镇化指标体系构建原始数据 1、时间:更新至2022年,具体每个指标时间见下文 2、来源:整理自国家统计局、统计年鉴 3、范围:31省市 4、指标: 2008-2022年每十万人口高等学校…

vue3 腾讯tdesign 后台管理框架的使用

1.介绍 TDesign 是具有包容性的设计体系,它强调为业务提供产品、服务等过程中,追求以人为本、人人受益的包容性,要求搭建过程中,了解业务底层,理解业务场景的多样性,并在繁杂的业务场景中寻找共性和特性&a…

下个目标,突破 10w+

转眼间,2023 年已经过去了,今天是大年初四,还有十来天就马上除夕了,迈入新的一年。 回顾 2023 年,如果让我给自己打分,我算是 7.5 分吧。 在这一年了,工作上表现平平,并没有什么突…

Ubuntu Desktop - Screenshot (截图工具)

Ubuntu Desktop - Screenshot [截图工具] 1. Search your computer -> Screenshot -> Lock to Launcher2. gnome-screenshot3. System Settings -> Keyboard -> ShortcutsReferences 1. Search your computer -> Screenshot -> Lock to Launcher 2. gnome-s…

网络渗透测试:Wireshark抓取qq图片

Wireshark Wireshark Downloadhttps://www.wireshark.org/download.html 简介 WireShark是非常流行的网络封包分析工具,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程中各种问题定位。本文主要内容包括: 1、Wireshar…

【Vitis】Vitis HLS简介

Vitis HLS简介 Vitis™HLS是一种高层次综合工具,支持将C、C和OpenCL™函数硬连线到器件逻辑互连结构和RAM/DSP块上。 Vitis HLS可在Vitis应用加速开发流程中实现硬件内核,并使用C/C语言代码在VivadoDesign Suite中为赛灵思器件设计开发RTL IP。 【Vitis…

智慧医院系统架构整体设计与实现

随着信息技术的不断发展,智慧医院系统作为医疗行业的重要应用,正在逐渐成为医院管理和服务的重要工具。本文将介绍智慧医院系统的整体架构设计原则和关键组件,以及如何实现一个安全、高效和可扩展的智慧医疗服务平台。 内容: 1.…

MQTT的学习与应用

文章目录 一、什么是MQTT二、MQTT协议特点三、MQTT应用领域四、安装Mosquitto五、如何学习 MQTT 一、什么是MQTT MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,设计用于在低带宽、不稳定的网络环境中进行高效的通信…

Codeforces Round 729 (Div. 2)B. Plus and Multiply(构造、数学)

题面 链接 B. Plus and Multiply 题意 给定 n , a , b n,a,b n,a,b 可以进行的操作 ∗ a *a ∗a b b b 最开始的数是1 问能否经过上面的两种操作将1变为n 题解 这题的关键是能不能想出来这个集合里面…

Java实现免税店商城管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2 研究方法 三、系统展示四、核心代码4.1 查询免税种类4.2 查询物品档案4.3 新增顾客4.4 新增消费记录4.5 审核免税 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的免税店商城管理系…

RK3568笔记十四:yolov8pose部署

若该文为原创文章,转载请注明原文出处。 本篇参考山水无移大佬文章,并成功部署了yolov8pose在RK3568板子上,这里记录下全过程。 在此特感谢所有分享的大佬,底部附大佬的链接。 一、环境 1、平台:rk3568 2、开发板: …

牛客错题整理——C语言(实时更新)

1.以下程序的运行结果是&#xff08;&#xff09; #include <stdio.h> int main() { int sum, pad,pAd; sum pad 5; pAd sum, pAd, pad; printf("%d\n",pAd); }答案为7 由于赋值运算符的优先级高于逗号表达式&#xff0c;因此pAd sum, pAd, pad;等价于(…

QAnything之BCEmbedding技术路线

QAnything和BCEmbedding简介 QAnything[github]是网易有道开源的检索增强生成式应用&#xff08;RAG&#xff09;项目&#xff0c;在有道许多商业产品实践中已经积累丰富的经验&#xff0c;比如有道速读和有道翻译。QAnything是一个支持任意格式文件或数据库的本地知识库问答系…

java微服务面试篇

目录 目录 SpringCloud Spring Cloud 的5大组件 服务注册 Eureka Nacos Eureka和Nacos的对比 负载均衡 负载均衡流程 Ribbon负载均衡策略 自定义负载均衡策略 熔断、降级 服务雪崩 服务降级 服务熔断 服务监控 为什么需要监控 服务监控的组件 skywalking 业务…

【开源】SpringBoot框架开发农家乐订餐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户2.2 管理员 三、系统展示四、核心代码4.1 查询菜品类型4.2 查询菜品4.3 加购菜品4.4 新增菜品收藏4.5 新增菜品留言 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的农家乐订餐系统&#xff0c…

Ubuntu Desktop - scrolling (Terminal 缓存更多终端历史输出内容)

Ubuntu Desktop - scrolling [Terminal 缓存更多终端历史输出内容] 1. ubuntu-14.04.5-desktop-amd64.iso2. ubuntu-16.04.3-desktop-amd64.isoReferences Terminal -> 右键 Profiles -> Profile Preferences 1. ubuntu-14.04.5-desktop-amd64.iso 2. ubuntu-16.04.3-de…

【技巧】Allegro实用技巧之模块复用

需求分析&#xff1a;使用Allegro软件进行PCB Layout设计时&#xff0c;当电路图中有很多路相同的模块&#xff0c;使用模块复用的的操作方法&#xff0c;可以显著提高工作效率&#xff0c;同时也可以使PCB布局在整体上显得美观。下面来讲述这个方法。 具体方法及说明&#xf…