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

在 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.pswp.cn/bicheng/83047.shtml

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

相关文章

UniApp微信小程序自定义导航栏实现

UniApp微信小程序自定义导航栏 在UniApp开发微信小程序时&#xff0c;页面左上角默认有一个返回按钮&#xff08;在导航栏左侧&#xff09;&#xff0c;但有时我们需要自定义这个按钮的样式和功能&#xff0c;同时保持与导航栏中间的标题和右侧胶囊按钮&#xff08;药丸屏&…

Java大师成长计划之第35天:未来展望与个人总结

引言 作为一门历史悠久的编程语言&#xff0c;Java自1995年问世以来&#xff0c;经历了多个版本的迭代与演进&#xff0c;依然在当今技术生态中占据着重要地位。从早期的Java SE、Java EE到后来的Java Spring框架&#xff0c;再到现代的微服务架构与云原生应用&#xff0c;Jav…

Ubuntu开机自动运行Docker容器中的Qt UI程序

Ubuntu开机自动运行Docker容器中的Qt UI程序 引言为什么需要这样配置?解决方案概览详细实现步骤1. 创建容器启动脚本2. 创建系统服务3. 配置自动登录和显示设置常见问题解决方案1. 程序无法显示(X11权限问题)2. 分辨率设置不生效3. 服务启动失败安全注意事项结语附录:完整文…

Scratch节日 | 龙舟比赛 | 端午节

端午节快乐&#xff01; 这款专为孩子们打造的Scratch游戏——《龙舟比赛》&#xff0c;让你在掌控龙舟的竞速中&#xff0c;沉浸式体验中华传统节日的魅力&#xff01; &#x1f3ae; 游戏亮点 节日氛围浓厚&#xff1a;化身龙舟选手&#xff0c;在波涛汹涌的河流中展开刺激竞…

(五)MMA(OpenTelemetry/Rabbit MQ/ApiGateway/MongoDB)

文章目录 项目地址一、OpenTelemetry1.1 配置OpenTelemetry1. 服务添加2. 添加服务标识3. 添加请求的标识4. 添加中间价 二、Rabbit MQ2.1 配置Rabbit MQ1. docker-compose2. 添加Rabbit MQ的Connect String 2.2 替换成Rabbit MQ1. 安装所需要的包2. 使用 三、API Gateways3.1 …

格恩朗超声波水表 助力农业精准灌溉与振兴​

在农业现代化的征程中&#xff0c;水资源的精准利用至关重要&#xff0c;而这离不开高精度计量设备的支持。大连格恩朗品牌积极响应国家全面推进乡村振兴、加快农业农村现代化的号召&#xff0c;精心打造的超声波水表&#xff0c;凭借其超高精度&#xff0c;成为绿色灌溉领域的…

微信小程序页面嵌套web-view点击系统导航返回时进行弹窗处理

实现效果&#xff1a;微信小程序页面嵌套web-view点击系统导航返回时进行弹窗处理 首先在web-view里是不可实现的&#xff08;据我了解下来&#xff09; 参考小程序文档&#xff1a;page-container 大致逻辑&#xff1a; 1、page-container可实现页面离开前拦截 2、由于web-vie…

设计模式25——中介者模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 中介者模式&#xff08;Mediat…

Java基础 Day25

一、线程通信 1、简介 确保线程能够按照预定的顺序执行并且能够安全地访问共享资源 使多条线程更好的进行协同工作 2、常用方法 void wait() 使当前线程进入等待状态 void notify(); 随机唤醒单个等待的线程&#xff08;可以空唤醒&#xff09; void notifyAll(); 唤醒…

WebSocket与实时对话式AI服务的集成

WebSocket与实时对话式AI服务的集成 在现代对话式AI系统中,传统的HTTP请求-响应模型已难以满足实时交互的体验需求。特别是用户对响应速度、逐字输出、会话上下文保持等方面提出更高要求时,需要一种能够建立持久连接并支持双向通信的协议。WebSocket正是在这一背景下,成为A…

iOS 集成网易云信IM

云信官方文档在这 看官方文档的时候&#xff0c;版本选择最新的V10。 1、CocoPods集成 pod NIMSDK_LITE 2、AppDelegate.m添加头文件 #import <NIMSDK/NIMSDK.h> 3、初始化 NIMSDKOption *mrnn_option [NIMSDKOption optionWithAppKey:"6f6568e354026d2d658a…

人工智能100问☞第37问:什么是扩散模型?

目录 ​​一、通俗解释 二、专业解析​​ 三、权威参考 扩散模型是一种​​通过系统性地添加再去除噪声来生成新数据(如图像)的生成式AI技术​​,其核心机制分为两个阶段:正向扩散​​:对原始数据(如清晰图片)逐步添加噪声,直至完全变成随机噪点(类似老照片逐渐模糊…

传输层核心技术解析

目录 一、端口号机制 二、网络诊断工具 1. netstat命令 2. pidof工具 三、UDP协议详解 协议特征 典型应用场景 四、TCP协议深度解析 核心机制 状态转换模型 特殊状态说明 五、协议对比分析 六、开发实践要点 一、端口号机制 核心作用&#xff1a;标识主机唯一进程…

IO Vs NIO

一、IO(传统阻塞式) 全称‌&#xff1a;Input/Output(输入/输出) 定义‌&#xff1a;Java 1.0 引入的基础 I/O 模型&#xff0c;基于流&#xff08;Stream&#xff09;的同步阻塞操作&#xff0c;线程在读写数据时会阻塞直到操作完成。 二、NIO(新式非阻塞式) ‌全…

基于原生JavaScript前端和 Flask 后端的Todo 应用

Demo地址&#xff1a;https://gitcode.com/rmbnetlife/todo-app-js-flask.git Python Todo 应用 这是一个使用Python Flask框架开发的简单待办事项(Todo)应用&#xff0c;采用前后端分离架构。本项目实现了待办事项的添加、删除、状态切换等基本功能&#xff0c;并提供了直观…

005 ElasticSearch 许可证过期问题

ElasticSearch 许可证过期问题 项目启动报错 org.elasticsearch.client.ResponseException: method [GET], host [http://127.0.0.1:9200], URI [/_cluster/health/], status line [HTTP/1.1 403 Forbidden] {"error":{"root_cause":[{"type":…

哪些岗位最易被AI替代?

随着AI技术高速演进&#xff0c;一场“职场大洗牌”正悄然上演。当ChatGPT出口成章、机器人能精准执勤&#xff0c;AI时代的“就业焦虑”已不再是空谈。你是否认真思考过&#xff0c;自己所处的岗位是否也正面临被AI边缘化的风险&#xff1f; 以下几类职业&#xff0c;已成为AI…

信号槽中 sender() 的作用

好的,sender() 是 Qt 框架中的一个重要函数,它用于获取触发当前槽函数的对象。在 Qt 的信号和槽机制中,一个信号可以连接到多个槽函数,而一个槽函数也可以被多个信号触发。sender() 函数允许你在槽函数中确定是哪个对象触发了当前信号。 信号和槽机制 在 Qt 中,信号和槽…

深度学习|pytorch基本运算

【1】引言 pytorch是深度学习常用的包&#xff0c;顾名思义&#xff0c;就是python适用的torch包&#xff0c;在python里面使用时直接import torch就可以调用。 需要注意的是&#xff0c;pytorch包与电脑配置、python版本有很大关系&#xff0c;一定要仔细阅读安装要求、找到…

DeepSeek 赋能数字人直播带货:技术革新重塑电商营销新生态

目录 一、引言二、DeepSeek 技术探秘2.1 DeepSeek 技术原理剖析2.2 DeepSeek 与其他大模型对比优势 三、数字人直播带货现状洞察3.1 数字人直播带货发展历程回顾3.2 市场规模与增长趋势分析3.3 现存问题与挑战探讨 四、DeepSeek 在数字人直播带货中的应用实例4.1 交个朋友的成功…