lnmp环境搭建
文章目录
- 一、环境信息
- 二、LNMP环境搭建
- 2.1 准备编译环境
- 2.2 nginx安装
- 2.3 mysql安装
- 2.4 php安装
- 2.5 nginx配置
- 2.6 mysql配置
- 2.7 配置php
- 三、常见问题
- 3.1 安装其它版本的nginx服务
- 3.2 php版本过低
一、环境信息
操作系统:公共镜像CentOS 7.8 64位
本文的部署配置中,服务版本如下,如果需要其它版本,需要另行安装配置。
Nginx版本:Nginx 1.20.1
MySQL版本:MySQL 5.7.36
PHP版本:PHP 7.0.33
二、LNMP环境搭建
2.1 准备编译环境
- 关闭防火墙
运行 systemctl status firewalld 命令,查看当前防火墙的状态
如果防火墙的状态参数是inactive,则防火墙为关闭状态;如果防火墙的状态参数是active,则防火墙为开启状态。
# 临时关闭
systemctl stop firewalld# 禁止开机自启
systemctl disable firewalld
- 关闭SELinux
运行 getenforce 命令查看SELinux的当前状态。
如果SELinux状态参数是Disabled,则SELinux为关闭状态;如果SELinux状态参数是Enforcing,则SELinux为开启状态。
# 临时关闭
setenforce 0# 永久关闭
vi /etc/selinux/config
找到SELINUX=enforcing,按i进入编辑模式,将参数修改为SELINUX=disabled。
2.2 nginx安装
- 安装Nginx
yum -y install nginx
- 查看Nginx版本。
# nginx -v
nginx version: nginx/1.20.1
2.3 mysql安装
- 更新Yyum源
rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
- 安装MySQL。
注:使用的操作系统内核版本为el8,可能会提示报错信息No match for argument。您需要先运行命令yum module disable mysql禁用默认的MySQL模块,再安装MySQL。
yum -y install mysql-community-server --nogpgcheck
- 查看mysql版本号
返回结果如下所示,表示MySQL安装成功。
# mysql -V
mysql Ver 14.14 Distrib 5.7.41, for Linux (x86_64) using EditLine wrapper
- 启动mysql
systemctl start mysqld
- 设置开机启动mysql
systemctl enable mysqld
systemctl daemon-reload
2.4 php安装
- 更新yum源
yum install \
https://repo.ius.io/ius-release-el7.rpm \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- 添加Webtatic源
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
- 安装php
yum -y install php70w-devel php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-pdo.x86_64 php70w-mysqlnd php70w-fpm php70w-opcache php70w-pecl-redis php70w-pecl-mongodb
- 查看php版本。
# php -v
PHP 7.0.33 (cli) (built: Dec 6 2018 22:30:44) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologieswith Zend OPcache v7.0.33, Copyright (c) 1999-2017, by Zend Technologies
2.5 nginx配置
- nginx 主配置文件
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;tcp_nopush on;tcp_nodelay on;keepalive_timeout 65;types_hash_max_size 4096;include /etc/nginx/mime.types;default_type application/octet-stream;include /etc/nginx/conf.d/*.conf;
}
- conf 文件配置
server {listen 80;server_name 域名;charset utf-8;location / {root /usr/share/nginx/xxx;try_files $uri $uri/ /index.html;index index.html index.htm index.php;}location = /50x.html {root /usr/share/nginx/html/xxx;}location ~ .php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}access_log /var/log/nginx/xxx.access.log main;error_log /var/log/nginx/xxx.error.log warn;#如果需要http强制跳转至https,则开启
# rewrite ^(.*)$ https://$host$1 permanent;}
server {listen 443 ssl;server_name 域名;charset utf-8;ssl_certificate /etc/nginx/cert/xxx.pem;ssl_certificate_key /etc/nginx/cert/xxx.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1.2;ssl_prefer_server_ciphers on;location / {root /usr/share/nginx/xxx;try_files $uri $uri/ /index.html;index index.html index.htm index.php;}location = /50x.html {root /usr/share/nginx/html/xxx;}location ~ .php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}access_log /var/log/nginx/xxx.access.log main;error_log /var/log/nginx/xxx.error.log warn;
}
- 检查配置文件是否正确
nginx -t
- 生效nginx配置文件
nginx -s reload
2.6 mysql配置
查看/var/log/mysqld.log文件,获取并记录root用户的初始密码。
grep 'temporary password' /var/log/mysqld.log
- 配置mysql的安全性。
mysql_secure_installation
输入MySQL的初始密码。
说明 在输入密码时,系统为了最大限度的保证数据安全,命令行将不做任何回显。只需要输入正确的密码信息,然后按Enter键即可。
Securing the MySQL server deployment.Enter password for user root: #输入上一步获取的root用户初始密码
为mysql设置新密码。
The existing password for the user account root has expired. Please set a new password.New password: #输入新密码。长度为8至30个字符,必须同时包含大小写英文字母、数字和特殊符号。特殊符号包含()` ~!@#$%^&*-+=|{}[]:;‘<>,.?/Re-enter new password: #确认新密码。
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.Estimated strength of the password: 100 #返回结果包含您设置的密码强度。
Change the password for root ? ((Press y|Y for Yes, any other key for No) :Y #您需要输入Y以确认使用新密码。#新密码设置完成后,需要再次验证新密码。
New password:#再次输入新密码。Re-enter new password:#再次确认新密码。Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :Y #您需要输入Y,再次确认使用新密码。
- 输入Y删除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No) :Y
Success.
- 输入Y禁止使用root用户远程登录mysql
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :Y
Success.
- 输入Y删除test库以及用户对test库的访问权限
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :Y- Dropping test database...
Success.- Removing privileges on test database...
Success.
- 输入Y重新加载授权表
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :Y
Success.All done!
2.7 配置php
- 创建phpinfo.php文件
<网站根目录>是您在nginx.conf配置文件中location ~ .php$大括号内,配置的root参数值,如下图所示。网站根目录本文配置的网站根目录为/usr/share/nginx/html,因此需要运行以下命令新建phpinfo.php文件:
vim /usr/share/nginx/html/phpinfo.php输入下列内容,函数phpinfo() 会展示PHP的所有配置信息。
<?php echo phpinfo(); ?>
- 启动php-fpm
systemctl start php-fpm
- 设置php-fpm开机自启动
systemctl enable php-fpm
- 测试访问LNMP配置信息页面
在本地Windows主机或其他具有公网访问能力的Windows主机中,打开浏览器。
在浏览器的地址栏输入http://域名/phpinfo.php进行访问。
访问结果为php测试页即为成功
注:测试访问LNMP配置信息页面后,建议将phpinfo.php文件删除,消除数据泄露风险。
rm -rf /usr/share/nginx/html/phpinfo.php
三、常见问题
3.1 安装其它版本的nginx服务
- 下载nginx 1.21.3
wget http://nginx.org/download/nginx-1.21.3.tar.gz
- 安装Nginx相关依赖。
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
- 解压nginx 安装包
tar zxvf nginx-1.21.3.tar.gz
cd nginx-1.21.3
- 编译源码
./configure \--user=nobody \--group=nobody \--prefix=/usr/local/nginx \--with-http_stub_status_module \--with-http_gzip_static_module \--with-http_realip_module \--with-http_sub_module \--with-http_ssl_module
make && make install
- 启动nginx
/usr/local/nginx/sbin/nginx
3.2 php版本过低
以上安装中,php默认安装的版本是 PHP 7.0.33 ,在某些时候,php的版本过低,将导致LNMP环境出现很多问题,那么我们就需要升级php的版本
- 卸载php
# 查看当前php已安装的包
rpm -qa|grep php 会出现很多php相关包,基本只需要卸载几个名为common的包即可,其他同版本依赖会被全部删除,
删除php70w-common,70w版本的依赖包全部会被删除。yum remove php70w-common
yum remove php74w-common
安装 PHP7.2
- 安装 EPEL 软件包
yum install epel-release
- 安装 remi 源
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
- yum 扩展包:
yum install yum-utils
启用 remi 仓库:
yum-config-manager --enable remi-php72
yum update
- 安装 PHP7.2
yum install php72
安装 php-fpm 和一些其他模块
yum install php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache
- php72 -v 查看安装结果
# php72 -v
PHP 7.2.34 (cli) (built: Dec 19 2022 16:12:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologieswith Zend OPcache v7.2.34, Copyright (c) 1999-2018, by Zend Technologies
- 设置开机自启
systemctl enable php72-php-fpm.service
- 常用 php-fpm 命令
# 开启服务
systemctl start php72-php-fpm.service
# 停止服务
systemctl stop php72-php-fpm.service
# 查看状态
systemctl status php72-php-fpm.service
- 设置php与nginx为同一个用户名及用户组
egrep '^(user|group)' /etc/nginx/nginx.conf# 结果示例:
user nginx;# 编辑 /etc/opt/remi/php72/php-fpm.d/www.conf,修改执行 php-fpm 的权限:vim /etc/opt/remi/php72/php-fpm.d/www.conf# 设置用户和用户组为 nginx:user = nginx
group = nginx# 保存并关闭文件,重启 php-fpm 服务:systemctl restart php72-php-fpm.service
- 路径参考
# php 安装路径
/etc/opt/remi/php72# nginx 配置文件
/etc/nginx/nginx.conf# nginx 默认项目路径
/usr/share/nginx/html
相关文章:
lnmp环境搭建
文章目录 一、环境信息二、LNMP环境搭建2.1 准备编译环境2.2 nginx安装2.3 mysql安装2.4 php安装2.5 nginx配置2.6 mysql配置2.7 配置php 三、常见问题3.1 安装其它版本的nginx服务3.2 php版本过低 一、环境信息 操作系统:公共镜像CentOS 7.8 64位 本文的部署配置…...
全球研发中心城市专题协商会课题调研组莅临麒麟信安考察指导
9月7日上午,长沙市政协党组副书记、副主席石长松,市委统战部副部长、市工商联党组书记何惠风,市政协研究室主任郑志华,市工商联党组成员、副主席王婧等领导一行莅临麒麟信安开展全球研发中心城市专题协商会课题调研,麒…...
ZeroTier客户端连接服务器
ZeroTier客户端连接服务器 下载客户端 https://www.zerotier.com/download/加入新的网络(例如d5e04297a16fa690,由管理员提供)管理员授权并告知服务器IP测试连接:ping 服务器IP使用putty, pycharm, vscode等工具连接即可 官方文…...
NFT Insider#106:The Sandbox 与 Light Matrix 以及鲁比尼拳击场达成战略合作
引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…...
【猿灰灰赠书活动 - 04期】- 【分布式统一大数据虚拟文件系统——Alluxio原理、技术与实践】
👨💻本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 👨💻本文简述:博文为大家争取福利,与机械工业出版社合作进行送书活动 👨…...
前端element表格导出excel
一:安装依赖 npm install xlsx file-saver --save二:在组件中导入 import FileSaver from file-saver import XLSX from xlsx三:给对应表格添加id,绑定方法 <el-table idtableDom> <el-button click"exportExc…...
React中的类组件和函数组件(详解)
React的核心思想就是组件化,相对于Vue来说,React的组件化更加灵活和多样。主要可以分为两大类:函数组件,类组件,这两大类组件的名称必须是大写字母开头 一、函数组件 函数组件通常是function进行定义的函数࿰…...
1987-2021年全国31省专利申请数和授权数
1987-2021年全国31省国内三种专利申请数和授权数 1、时间:1987-2021年 2、来源:整理自国家统计局、科技统计年鉴、各省年鉴 3、范围:31省市 4、指标:国内专利申请受理量、国内发明专利申请受理量、国内实用新型专利申请受理量…...
欧洲云巨头OVHcloud收购边缘计算专家 gridscale
边缘计算社区近日获悉,欧洲云巨头OVHcloud已进入全面收购德国公司 gridscale 的谈判,该公司是一家专门从事超融合基础设施的软件提供商。 此次战略收购将标志着 OVHcloud 的另一个重要里程碑,使该集团能够显着加速其地理部署,并进…...
java从入门到起飞(八)——循环和递归
文章目录 Java循环1. 什么是循环?1.1 为什么需要循环?1.2 循环的分类 2. Java中的循环结构2.1 for循环2.2 while循环2.3 do-while循环 3. 循环控制语句3.1 break语句3.2 continue语句 4. 总结 Java递归1. 什么是递归2. 递归的原理3. 递归的实现4. 递归的…...
架构师成长之路|Redis实现延迟队列的三种方式
延迟队列实现 基于监听key过期实现的延迟队列实现,这里需要继承KeyspaceEventMessageListener类来实现监听redis键过期 public class KeyExpirationEventMessageListener extends KeyspaceEventMessageListener implementsApplicationEventPublisherAware {private static f…...
51单片机智能电风扇控制系统proteus仿真设计( 仿真+程序+原理图+报告+讲解视频)
51单片机智能电风扇控制系统仿真设计( proteus仿真程序原理图报告讲解视频) 讲解视频1.主要功能:2.仿真3. 原理图4. 程序代码5.设计报告6. 设计资料内容清单 51单片机智能电风扇控制系统仿真设计( proteus仿真程序原理图报告讲解视频) 仿真图…...
【设计模式】Head First 设计模式——工厂方法模式 C++实现
设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 定义一个用于创建对象的接口,让子…...
【爬虫】7.2. JavaScript动态渲染界面爬取-Selenium实战
JavaScript动态渲染界面爬取-Selenium实战 爬取的网页为:https://spa2.scrape.center,里面的内容都是通过Ajax渲染出来的,在分析xhr时候发现url里面有token参数,所有我们使用selenium自动化工具来爬取JavaScript渲染的界面。 fr…...
c语言实训心得3篇集合
c语言实训心得体会一: 在这个星期里,我们专业的学生在专业老师的带领下进行了c语言程序实践学习。在这之前,我们已经对c语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里…...
2023高教社杯数学建模B题思路代码 - 多波束测线问题
# 1 赛题 B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀 速直线传播, 在不同界面上产生反射, 利用这一原理,从测量船换能器垂直向海底发射声波信 号,并记录从声波发射到…...
MySql 变量
1.系统变量 1.1 系统变量分类 变量由系统定义,不是用户定义,属于 服务器 层面。系统变量分为全局系统变量(需要添加 global 关键字)以及会话系统变量(需要添加 session 关键字),有时也把全局系…...
2023-简单点-make和build都是什么东西?
make make命令根据makefile.txt中的命令进行批量处理。 编译时自动检查文件是否更新,如果文件已经更改,make会对他重新编译,否则跳过。 编译选定的目标,但是Make只编译上次编译变化过的文件,减少重复劳动࿰…...
Nginx 学习(八)Nginx实现用IP测试灰度发布
1.1 问题 配置Nginx使其可以将动态访问转交给uWSGI: 1.2 方案 安装Python工具及依赖 安装uWSGI并编写配置文件 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一: 1)安装python依赖软件[rootproxy python]# yum -y install gcc make pytho…...
QT 自定义信号
自定义信号,需要 1.在singnals:区域下写信号函数,以及函数对应的参数 2. 需要emit关键字进行发射信号 3. 在需要处理该信号的其他类中,建立信号和其信号槽函数connect() 4. 在其他类中创建信号处理槽函数 #include "mythread.h"my…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
