CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP)

article/2025/8/3 19:56:31

在 CentOS 7 环境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP) 环境的详细步骤如下。此方案确保各组件版本兼容,并提供完整的配置验证流程。


1. 更新系统

 sudo yum update -y

2. 安装 MySQL 5.7

2.1 添加 MySQL 官方 YUM 仓库

由于MySQL并不在CentOS的官方仓库中,所以我们通过上述rpm命令:


  • 导入MySQL仓库的密钥

  • 配置MySQLQ的yum仓库


# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安装Mysql yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
2.2 安装 MySQL 5.7
sudo yum install mysql-community-server -y
2.3 启动 MySQL 服务
systemctl start mysqld		# 启动
systemctl enable mysqld		# 开机自启
2.4 获取初始密码并修改
 # 查看初始密码grep 'temporary password' /var/log/mysqld.log​# 登录 MySQLmysql -u root -p

设置密码:

# 在MySQL控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Tang@123';	
# 密码需要符合:大于8位,有大写字母,有特殊符号,不能是连续的简单语句如123,abc

 [扩展],配置root的简单密码

# 如果你想设置简单密码,需要降低Mysql的密码安全级别
set global validate_password_policy=LOW; # 密码安全级别低
set global validate_password_length=4;	 # 密码长度最低4位即可# 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

 [扩展],配置root运行远程登录

# 授权root远程登录
grant all privileges on *.* to root@"%" identified by '123456' with grant option;  
# IP地址即允许登陆的IP地址,也可以填写%,表示允许任何地址
# 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同# 刷新权限,生效
flush privileges;# 退出命令
exit
2.5 检查端口

MySQL默认绑定了3306端口,可以通过端口占用检查MySQL的网络状态

netstat -anp | grep 3306

3. 安装 Nginx

3.1 添加 EPEL 和 Nginx 官方仓库
sudo yum install epel-release -y
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
3.2 安装 Nginx
sudo yum install nginx -y
3.3 启动 Nginx 服务
sudo systemctl start nginx
sudo systemctl enable nginx
3.4 验证 Nginx
curl http://localhost

 或者在浏览器输入服务器地址看到以下页面,默认监听端口80

如果看到 Welcome to nginx! 页面,说明安装成功。


4. 安装 PHP 7.2(兼容 MySQL 5.7)

4.1 添加 Remi 仓库
sudo yum install yum-utils -y
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm -y
4.2 启用 PHP 7.2 仓库
sudo yum-config-manager --enable remi-php72
4.3 安装 PHP 及常用扩展
sudo yum install php php-fpm php-mysqlnd php-mbstring php-xml php-cli php-gd php-json -y
4.4 启动 PHP-FPM 服务
sudo systemctl start php-fpm
sudo systemctl enable php-fpm
4.5 配置 PHP-FPM
#编辑vim /etc/php-fpm.d/www.conf,修改以下参数:
user = nginx
group = nginx
listen = /var/run/php-fpm/www.sock
listen.owner = nginx
listen.group = nginx#重启 PHP-FPM:
sudo systemctl restart php-fpm

5. 配置 Nginx 支持 PHP

5.1 修改 Nginx 默认配置

编辑 Nginx 配置文件vim /etc/nginx/conf.d/default.conf(或 /etc/nginx/nginx.conf):

server {listen 80;server_name your_domain_or_ip;root /usr/share/nginx/html;index index.php index.html index.htm;location / {try_files $uri $uri/ =404;}location ~ \.php$ {include fastcgi_params;fastcgi_pass unix:/var/run/php-fpm/www.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}
}
5.2 重启 Nginx
sudo systemctl restart nginx

6. 验证 LNMP 环境

6.1 创建 PHP 测试文件
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
6.2 访问测试页面

在浏览器中访问:

 http://your_server_ip/info.php

如果看到 PHP 信息页面,说明 LNMP 环境配置成功。


7. 常见问题排查

7.1 权限问题

确保 Nginx 用户(nginx)有权限访问网站目录:

 sudo chown -R nginx:nginx /usr/share/nginx/htmlsudo chmod -R 755 /usr/share/nginx/html
7.2 端口冲突

如果启动 Nginx 报错 Address already in use,检查占用 80 端口的进程并终止:

 sudo netstat -tuln | grep 80sudo kill -9 <PID>
7.3 SELinux 配置

如果 SELinux 未禁用,临时关闭或调整策略:

 sudo setenforce 0  # 临时关闭# 或永久禁用(不推荐):sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

8. 完成

至此,LNMP 环境(Linux + Nginx + MySQL 5.7 + PHP 7.2)已成功部署。你可以将 PHP 项目文件放置在 /usr/share/nginx/html 目录下运行。


http://www.hkcw.cn/article/DEWXBqtCsT.shtml

相关文章

从零打造算法题刷题助手:Agent搭建保姆级攻略

我用Trae 做了一个有意思的Agent 「大厂机试助手」。 点击 https://s.trae.com.cn/a/d2a596 立即复刻&#xff0c;一起来玩吧&#xff01; Agent 简介 Agent名称为大厂机试助手&#xff0c;主要功能有以下三点。 解题&#xff1a; 根据用户给出的题目给出具体的解题思路引导做…

华院计算出席信创论坛,分享AI教育创新实践并与燧原科技共同推出教育一体机

5月21日&#xff0c;信创论坛于上海漕河泾会议中心举办。本次论坛以“聚力融合&#xff0c;繁荣生态”为主题&#xff0c;话题聚焦工业制造、交通运输、金融、教育、医疗等领域。华院计算技术&#xff08;上海&#xff09;股份有限公司&#xff08;以下简称“华院计算”&#x…

MyBatis操作数据库

1.MyBatis:MyBatis是一款优秀的持久层框架,用于简化JDBC的开发.(持久层通常指数据访问层,用来操作数据库). 创建userInfo表,并插入如下数据: 在model中建立userinfo实体类,属性与之一一对应. 配置数据库连接字符串,Mybatis中要连接数据库,需要数据库相关参数配置. 接下来就可…

OCC笔记:BRepMesh_IncrementalMesh的使用

1. 函数接口 2. 线性偏转与角度偏转 2.1. theLineDeflection&#xff1a;线性偏转 根据文档推导下 isRelative传入Standard_True时&#xff0c;theLineDeflection为相对值。 参看isRelative说明 //! param isRelative if TRUE deflection used for discretization of //! ea…

调试技巧总结

目录 一.调试1.什么是调试2.调试语义的分类2.1 静态语义2.2 动态语义 二.实用的调试技巧1.屏蔽代码2.借助打印3.查看汇编代码4.调试技巧总结 一.调试 1.什么是调试 调试&#xff0c;通俗易懂地说就是不断排查代码的错误&#xff0c;进行修正的过程&#xff0c;在写代码的时候…

通过实时动作捕捉加速人形机器人训练

通过实时动作捕捉加速人形机器人训练 用于训练、控制和性能优化的精确实时运动学——受到全球机器人创新者的信赖&#xff01; 为什么选择 Xsens 进行人形机器人训练&#xff1f; 无与伦比的运动数据精度-经过科学验证的运动数据&#xff0c;用于简化AI/ML训练。 轻松集成到…

【UE5 C++】绘制地表贴合线

目录 原理 效果 步骤 源码 原理 先设置绘制线段的起点和终点&#xff0c;然后我们将起点和终点的高度升高&#xff0c;然后通过插值&#xff0c;在起点和终点之间添加多个点&#xff0c;再由这些点向地心发出射线&#xff0c;这样我们就可以获取到这些点在地表的投影点&…

01 redis 的环境搭建

前言 这一系列文章主要包含的内容主要是 各种常用软件的调试环境的搭建 主要的目的是 搭建一个可打断点的一个调试环境 c 系列 主要是基于 clion 调试, java 系列主要是基于 idea 调试, js 系列主要是基于 webstorm 调试 需要有一定的 c, c, java, js 相关基础 基于的…

python打卡训练营打卡记录day40

知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#xff1a;仔细学习下测试和训练代码…

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(五):语音合成输出与交互增强

Tailwind CSS 实战&#xff0c;基于Kooboo构建AI对话框页面&#xff08;一&#xff09; Tailwind CSS 实战&#xff0c;基于Kooboo构建AI对话框页面&#xff08;二&#xff09;&#xff1a;实现交互功能 Tailwind CSS 实战&#xff0c;基于 Kooboo 构建 AI 对话框页面&#x…

【MySQL】MVCC与Read View

目录 一、数据库并发的三种场景 二、读写场景的MVCC &#xff08;一&#xff09;表中的三个隐藏字段 &#xff08;二&#xff09;undo 日志 &#xff08;三&#xff09;模拟MVCC &#xff08;四&#xff09;Read View &#xff08;五&#xff09;当前读和快照读 三、RC和…

代码随想录打卡|Day53 图论(Floyd 算法精讲 、A * 算法精讲 (A star算法)、最短路算法总结篇、图论总结 )

图论part11 Floyd 算法精讲 代码随想录链接 题目链接 代码 三维DP数组 import java.util.Scanner;public class Main {// 定义最大距离值&#xff0c;避免使用Integer.MAX_VALUE防止加法溢出public static final int INF 100000000; // 10^8足够大且不会溢出public static…

CSS Day07

1.搭建项目目录 2.网页头部SEO三大标签 3.Favicon图标与版心 &#xff08;1&#xff09;Favicon图标 &#xff08;2&#xff09;版心 4.快捷导航 5.头部-布局 6.头部-logo 7.头部-导航 8.头部-搜索 9头部-购物车 10.底部-布局 11.底部-服务区域 12.底部-帮助中心 13.底部-版权…

leetcode hot100刷题日记——29.合并两个有序链表

解答&#xff1a; 方法一&#xff1a;递归 递归的边界条件是啥呢&#xff1f; 递归别想那么多具体步骤&#xff0c;考虑大步骤&#xff0c;小的递归自己会去做的 class Solution { public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {//递归比较大小//先考虑…

Spring Boot 整合 Spring Security

DAY30.1 Java核心基础 Spring Boot 整合安全框架 Spring Security 、Shiro Spring Security Spring Security 的核心功能包括认证、授权、攻击防护&#xff0c;通过大量的过滤器和拦截器进行请求的拦截和验证&#xff0c;实现安全校验的功能。 Spring Security 将校验逻辑…

深度剖析Node.js的原理及事件方式

早些年就接触过Node.js&#xff0c;当时对于这个连接前后端框架就感到很特别。尤其是以独特的异步阻塞特性&#xff0c;重塑了了服务器端编程的范式。后来陆陆续续做了不少项目&#xff0c;通过实践对它或多或少增强了不少理解。今天&#xff0c;我试着将从将从原理层剖析其运行…

智慧景区一体化建设方案

随着2023年文旅部《关于推动智慧旅游发展的指导意见》出台&#xff0c;全国景区掀起数字化转型浪潮。如何在激烈竞争中脱颖而出&#xff1f;智慧景区一体化建设方案&#xff0c;正以“一机游遍景区、一屏掌控全局”的革新模式&#xff0c;重新定义旅游体验与管理效率。本文深度…

使用 SymPy 操作三维向量的反对称矩阵

在三维空间中&#xff0c;一个 3 1 3 \times 1 31 向量可以转换为一个 3 3 3 \times 3 33 的反对称矩阵。这种转换在物理学、机器人学和计算机视觉等领域非常有用。本文将详细介绍如何在 Python 的 SymPy 库中定义和使用这种反对称矩阵。 数学背景 对于一个三维向量 v …

LangChain表达式(LCEL)实操案例1

案例1&#xff1a;写一篇短文&#xff0c;然后对这篇短文进行打分 from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.runnables import RunnableWithMessageHist…

CppCon 2014 学习:HOW UBISOFT MONTREAL DEVELOPS GAMES FOR MULTICORE

多核处理器&#xff08;Multicore Processor&#xff09; 的基本特性&#xff0c;下面是对每点的简要说明&#xff1a; &#x1f539; Multicore&#xff08;多核&#xff09; 指一个物理处理器上集成了 多个 CPU 核心&#xff0c;每个核心可以独立执行指令。 &#x1f538;…