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

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

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

相关文章

Bean 的生命周期总结

目录 一、Bean生命周期的五个阶段 Bean的初始化 二、PostConstruct 和 PreDestroy 各自的效果 三、 实例化和初始化的区别 四、为什么要先设置属性在进⾏初始化呢&#xff1f; 一、Bean生命周期的五个阶段 Java 中的公共类称之为 Bean 或 Java Bean&#xff0c;而 Spring 中的…

golang中给数据库datetime格式赋值

type A struct {CreateTime *time.Time gorm:"create_time" } 1、定义数据库表映射结构体如上&#xff0c;create_time字段在表里面是datetime格式。 2、如果CreateTime不给值&#xff0c;在存库时&#xff0c;create_time字段的值为NULL。 3、赋值时&#xff0c;…

STM32F4X RNG随机数发生器

STM32F4X RNG随机数发生器 随机数的作用STM32F4X 随机数发生器RNG控制寄存器RNG状态寄存器RNG数据寄存器RNG数据步骤RNG例程 随机数的作用 随机数顾名思义就是随机产生的数字&#xff0c;这种数字最大的特点就是其不确定性&#xff0c;你不知道它下一次产生的数字是什么。随机…

计算机网络-谢希任第八版学习笔记总结

一.计算机网络概述 21世纪三个特点 数字化 信息化 智能化&#xff0c;其中主要是围绕智能化。 网络的常见分类&#xff1a; 电话网络 有线电视网络 计算机网络 互联网&#xff1a;Internet 由数量极大的计算机网络相连接 特点&#xff1a; 共享性 连通性 互联网&…

2023年数模国赛时间分配

2023年数模国赛时间分配 写在前面赛前准备第一天&#xff08;9.7 18:00发布题目&#xff09;第二天&#xff08;9.8&#xff09;第三天&#xff08;9.9&#xff09;第四天&#xff08;9.10 20:00提交&#xff09;总结 写在前面 国赛马上就要开始啦 今年的比赛时间是9月7日&…

网络安全-子域名收集

本文为作者学习文章&#xff0c;按作者习惯写成&#xff0c;如有错误或需要追加内容请留言&#xff08;不喜勿喷&#xff09; 本文为追加文章&#xff0c;后期慢慢追加 子域名 子域名指二级域名,二级域名是顶级域名(一级域名)的下一级比如mail.heetian.com和bbs.heetian.com…

【深度学习】基于卷积神经网络的铁路信号灯识别方法

基于卷积神经网络的铁路信号灯识别方法 摘 要&#xff1a;1 引言2 卷积神经网络模型2.1 卷积神经网络结构2.2.1 卷积层2.2.2 池化层2.2.3 全连接层 3 卷积神经网络算法实现3.1 数据集制作3.2 卷积神经网络的训练过程3.2.1 前向传播过程 4 实验5 结语 摘 要&#xff1a; 目前中…

系统架构设计师(第二版)学习笔记----系统架构设计师概述

【原文链接】系统架构设计师&#xff08;第二版&#xff09;学习笔记----系统架构设计师概述 文章目录 一、架构设计师的定义、职责和任务1.1 架构设计师的定义1.2 架构设计师的任务 二、架构设计师应具备的专业素质2.1 架构设计师应具备的专业知识2.2 架构设计师的知识结构2.3…

Android 集成onenet物联网平台

一&#xff0c;在Android应用程序中集成OneNet物联网平台&#xff0c;您可以按照以下步骤进行操作&#xff1a; 注册OneNet账户&#xff1a;首先&#xff0c;您需要在OneNet官方网站上注册一个账户。访问OneNet网站&#xff08;https://open.iot.10086.cn/ ↗&#xff09;&…

Unity UGUI(一)基础组件

文章目录 1.Text&#xff1a;文本框2.Image&#xff1a;精灵图3.RawImage&#xff1a;生图4.Button&#xff1a;按钮5.InputField&#xff1a;输入框6.Tooggle&#xff1a;选择框7.Slider&#xff1a;滑动条8.Dropdown&#xff1a;下拉菜单9.Scrollbar&#xff1a;滚动条10.Scr…

网络威胁防御+资产测绘系统-Golang开发

NIPS-Plus 网络威胁防御资产测绘系统-Golang开发 项目地址&#xff1a;https://github.com/jumppppp/NIPS-Plus NIPS-Plus 是一款使用golang语言开发的网络威胁防御系统&#xff08;内置资产测绘系统&#xff09; 网络威胁流量视图网络威胁详细信息浏览列表网络威胁反制探测攻…

CRM 自动化如何改善销售和客户服务?

许多 B2B 和 B2C 公司都使用 CRM 系统来组织业务流程&#xff0c;使复杂的任务更容易完成。企业可以使用 CRM 自动化来自动化工作流程&#xff0c;让团队有更多的时间来执行高价值的任务&#xff0c;而不是陷于一堆琐碎事情中。 什么是CRM自动化&#xff1f; CRM 自动化是指 C…

VScode SSH无法免密登录

配置方法 引用高赞贴&#xff1a;点击 debug方法 连不上需要找到问题原因&#xff0c;看ssh的 log Linux服务器&#xff1a;2222是我们指定的端口&#xff0c;可以是1234等 sudo /usr/sbin/sshd -d -p 2222windows这边&#xff1a;端口号要一致 ssh -vvv ubuntusername192…

自然语言处理——数据清洗

一、什么是数据清洗 数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序&#xff0c;包括检查数据一致性&#xff0c;处理无效值和缺失值等。与问卷审核不同&#xff0c;录入后的数据清理一般是由计算机而不是人工完成。 ——百度百科 二、为什么要数据清洗 现实生…

智能井盖传感器:高效守护城市道路安全

近年来&#xff0c;井盖出问题导致事故的报道时有发生&#xff0c;但却容易被公众所忽视。井盖作为城市基础设施的一部分&#xff0c;主要用于保护下方的供水管道、下水道以及电信线缆等。然而&#xff0c;由于长时间使用、缺乏维护、设计不合理等原因&#xff0c;井盖出现问题…

OpenCV C++案例实战三十三《缺陷检测》

OpenCV C案例实战三十三《缺陷检测》 前言一、结果演示二、缺陷检测算法2.1、多元模板图像2.2、训练差异模型 三、图像配准3.1 功能源码3.1 功能效果 四、多元模板图像4.1 功能源码 五、缺陷检测5.1 功能源码 六、效果演示总结 前言 本案例将使用OpenCV C 进行PCB印刷缺陷检测…

UMA 2 - Unity Multipurpose Avatar☀️一.让UMA角色动起来

文章目录 🟥 项目基础配置1️⃣UMA_DCS 预制体2️⃣创建 UMA 角色🟧 让UMA动起来1️⃣ 新建空场景,添加UMA_DCS预制体2️⃣配置 vBasicController_Template🟥 项目基础配置 1️⃣UMA_DCS 预制体 将 UMA_DCS 预制体放到场景中 2️⃣创建 UMA 角色 创建空物体,添加 Dy…

陪诊系统|陪诊软件开发|陪诊系统搭建功能

为了顺应不断变化的市场需求&#xff0c;有些行业慢慢销声匿迹&#xff0c;有些行业刚刚崭露头角&#xff0c;目前陪诊的市场需求也在逐渐扩大&#xff0c;陪诊小程序也随之到来&#xff0c;主要面向独居老人&#xff0c;孕妇&#xff0c;残障人士等等给予专业性的陪诊就医服务…

结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例...

原文链接&#xff1a;http://tecdat.cn/?p25044 在本文&#xff0c;我们将考虑观察/显示所有变量的模型&#xff0c;以及具有潜在变量的模型&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 1 简介 第一种有时称为“路径分析”&#xff0c;而后者有时称为“测…

C#调用Dapper

1-查询数据 string sql “查询语句”; using (SqlConnection con new SqlConnection(数据库连接信息)) { List<表结构实体类> list con.Query<表结构实体类>(sql).ToList(); } 2-执行sql string sql “UPDATE table1 SET column1 Name where id id”; using…