Ubuntu 20.04.1 LTS搭建nginx + php7.4运行环境

本文基于https://www.rosehosting.com/blog/how-to-install-php-7-4-with-nginx-on-ubuntu-20-04/的翻译和实践记录。

安装 Nginx

默认情况下,最新版本的 Nginx 位于 Ubuntu 20.04 默认存储库中。您可以使用以下命令安装它:

apt-get install nginx -y

安装 Nginx 后,启动 Nginx 服务,并通过以下命令使其在系统重启时启动:

systemctl start nginx
systemctl enable nginx

您还可以使用以下命令验证已安装的 Nginx 版本:

nginx -v

您应该得到以下输出:

nginx version: nginx/1.18.0 (Ubuntu)

安装 php7.4

Ubuntu 20.04中默认就有php7.4,直接就可以安装。

apt-get update -y
apt-get install php7.4

如果仅用于安装php以上就可以开始使用了,因为我想配合nginx使用,所以还有一些事情要做。

apache2.service

默认情况下php安装完会同时安装了apache,如果服务启动失败,可以查看一下是不是80端口已经被占用了。因为我更偏爱nginx,所以我这里的apache我并不打算使用。 我就把服务停止了,并禁用开机自动启动。

# 启动
systemctl start apache2.service
# 停止
systemctl stop apache2.service
# 查看状态
systemctl status apache2.service
# 不允许开机启动
systemctl disable apache2.service

安装 PHP7.4-FPM 和其他扩展

PHP7.4-FPM 是一个非常重要的PHP组件,它在现代Web应用程序中扮演着关键角色。

什么是PHP-FPM?

  • FPM 是 FastCGI Process Manager 的缩写。
  • FastCGI 是一种协议,它允许Web服务器(如Nginx、Apache)与PHP解释器进行通信。
  • PHP-FPM 是一种实现了FastCGI协议的PHP进程管理器,它负责管理PHP进程的生命周期,并提供了一些额外的功能,如动态调整进程数、监控进程状态等。

您可以通过运行以下命令来安装 PHP7.4-FPM 和其他必要的扩展:

apt-get install php7.4-fpm php7.4-cli php7.4-mysql php7.4-curl php7.4-json -y

安装完所有软件包后,启动 PHP7.4-FPM 服务,并使其在系统重启时启动:

systemctl start php7.4-fpm
systemctl enable php7.4-fpm

配置 Nginx 处理 PHP 文件

接下来,您需要配置 Nginx 以处理 PHP 文件。
示例如下

server {listen       80;server_name  vipvideo.example.cool;root /etc/nginx/WWW/vipvideo.example.cool;location / {index index.php index.html error/index.html;}location ~ \.php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/run/php/php7.4-fpm.sock;}     
}

可以写一个vim /etc/nginx/WWW/vipvideo.example.cool/index.php做为测试

<?php phpinfo();

在这里插入图片描述

报错情况处理

在部署一个php开源项目时运行报错

Call to undefined function mb_check_encoding()

报错

2024/12/31 16:28:07 [error] 286847#286847: *1062 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function mb_check_encoding() in /etc/nginx/WWW/vipvideo.example.com/index.php:34

解决办法:

  1. 安装 PHP mbstring 扩展
    在 Ubuntu 系统中,使用以下命令安装 mbstring 扩展:
sudo apt install php7.4-mbstring
  1. 重启 PHP-FPM 和 Nginx 服务
    安装完成后,重启相关服务以使扩展生效:
sudo systemctl restart php7.4-fpm
sudo systemctl restart nginx

页面上报错如下:缓存写入失败:/etc/nginx/WWW/vipvideo.example.cool/runtime/temp/d82152d3b59e7831b6dc1eb8368fc01b.php

分析应该是目录权限问题。
为确保 PHP-FPM 能够正常写入该目录,需要调整目录的权限和所有权:

调整所有权为 www-data 用户(默认的 Nginx 和 PHP 用户):

sudo chown -R www-data:www-data /etc/nginx/WWW/vipvideo.example.cool/
sudo chmod -R 755 /etc/nginx/WWW/vipvideo.example.cool/

检测显示zip报红

函数/扩展 zip 类型

sudo apt install php7.4-zip

安装完成后,重启相关服务以使扩展生效:

sudo systemctl restart php7.4-fpm
sudo systemctl restart nginx

结束

以下内容是探索过程中用到的,基于Ubuntu 22.04 ,也许对一部分人有用,我就保留下来。


Ubuntu 22.04 可能没有在其默认存储库中预装 PHP 7.4。但是,您可以通过添加由 Ondřej Surý 维护的 PHP 存储库在 Ubuntu 22.04 上轻松安装 PHP 7.4,该存储库为 Ubuntu 用户提供最新的 PHP 版本。本指南将引导您完成在 Ubuntu 22.04 上安装 PHP 7.4 并针对您的开发或生产环境进行配置的步骤。

第 1 步:添加 PHP 存储库要添加包含 PHP 7.4 的 PHP 存储库

请打开终端并运行以下命令:

sudo add-apt-repository ppa:ondrej/php

第 2 步:更新软件包列表添加存储库后,更新软件包列表以包含新添加的 PHP 存储库:

sudo apt update

第 3 步:安装 PHP 7.4 现在,您可以使用以下命令安装 PHP 7.4 和必要的 PHP 扩展:

sudo apt install php7.4

第 4 步:安装 PHP 扩展(可选) 如果您的项目需要额外的 PHP 扩展,您可以将它们与 PHP 7.4 一起安装。例如,要安装 MySQL、XML、JSON、MBString 和 GD 等常用扩展,请运行以下命令:

sudo apt install php7.4-common php7.4-mysql php7.4-xml php7.4-json php7.4-mbstring php7.4-gd php7.4-curl

步骤 5:检查 PHP 版本安装完成后,运行以下命令验证 PHP 7.4 是否安装成功:

php -v

第 6 步:切换 PHP 版本(可选) 如果您的系统上安装了多个 PHP 版本并且想在它们之间切换,您可以使用该命令。此命令将列出所有已安装的 PHP 版本,并允许您选择默认版本:update-alternatives

sudo update-alternatives --config php

结论:通过遵循这些简单的步骤,您可以轻松地在 Ubuntu 7.4 上安装 PHP 22.04 并为您的开发或生产环境配置它。PHP 7.4 提供了各种性能改进、新功能和安全增强,使其成为 PHP 开发人员的推荐选择。立即升级到 PHP 7.4 以利用最新的改进并确保与现代 PHP 应用程序兼容。

参考

https://shaonmajumder.medium.com/how-to-install-php-7-4-on-ubuntu-22-04-56a6f312d6ea
https://www.rosehosting.com/blog/how-to-install-php-7-4-with-nginx-on-ubuntu-20-04/

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

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

相关文章

【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38722 在当今全球化加速演进、数字经济蓬勃发展的大背景下&#xff0c;跨境电商行业正以前所未有的态势重塑国际贸易格局&#xff0c;成为各方瞩目的焦点领域。 根据亚马逊发布的《2024年出口跨境电商促销趋势白皮书》&#xff0c;…

UE5材质节点Camera Vector/Reflection Vector

Camera Vector相机向量&#xff0c;输出像素到相机的方向&#xff0c;结果归一化 会随着相机移动而改变 Reflection Vector 反射向量&#xff0c;物体表面法线反射到相机的方向&#xff0c;x和y和camera vector相反 配合hdr使用

【数据仓库】spark大数据处理框架

文章目录 概述架构spark 架构角色下载安装启动pyspark启动spark-sehll启动spark-sqlspark-submit经验 概述 Spark是一个性能优异的集群计算框架&#xff0c;广泛应用于大数据领域。类似Hadoop&#xff0c;但对Hadoop做了优化&#xff0c;计算任务的中间结果可以存储在内存中&a…

【Elasticsearch】集群配置深度解析与实践

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

Three.js教程004:坐标辅助器与轨道控制器

文章目录 坐标辅助器与轨道控制器实现效果添加坐标辅助器添加轨道控制器完整代码完整代码下载坐标辅助器与轨道控制器 实现效果 添加坐标辅助器 创建坐标辅助器: const axesHelper = new Three.AxesHelper(5);添加到场景中: scene.

紫光展锐推出高性能四核4G 智能穿戴平台W377E,应用场景更丰富

近日&#xff0c;紫光展锐正式推出高性能4G 智能穿戴平台W377E。该产品面向不同的应用场景&#xff0c;拥有丰富特性和超低功耗&#xff0c;进一步壮大紫光展锐的智能穿戴产品组合。紫光展锐面向中高端和海量的智能穿戴市场&#xff0c;持续提供技术先进、高效安全、高质可靠的…

Android着色器SweepGradient渐变圆环,Kotlin

Android着色器SweepGradient渐变圆环&#xff0c;Kotlin import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.SweepGradient import android…

ES elasticsearch-8.17.0-windows-x86_64使用

1、下载ES(elasticsearch 简称 ES 下载链接&#xff1a;https://www.elastic.co/downloads/elasticsearch) ES 下载链接&#xff1a;https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.0-windows-x86_64.zip))&#xff0c;需要在修改ES配置&#xff0…

MySQL DBA需要掌握的 7 个问题

1. MySQL适用的场景是什么&#xff1f; 数据量建议单实例T级或以内&#xff0c;不依赖存储过程、函数、触发器的传统oltp场景都适用&#xff0c;因为是一个相对轻量级的数据库 灾备使用MySQL各类的高可用方案即可&#xff0c;比如主从、mha、mgr等。 2. MySQL巡检应该怎么做…

柱状图中最大的矩形 - 困难

************* c topic: 84. 柱状图中最大的矩形 - 力扣&#xff08;LeetCode&#xff09; ************* chenck the topic first: Think about the topics I have done before. the rains project comes:盛最多水的容器 - 中等难度-CSDN博客https://blog.csdn.net/ElseWhe…

【SQL server】教材数据库(5)

使用教材数据库&#xff08;1&#xff09;中的数据表完成以下题目&#xff1a; 1 根据上面基本表的信息定义视图显示每个学生姓名、应缴书费 2 观察基本表数据变化时&#xff0c;视图中数据的变化。 3利用视图&#xff0c;查询交费最高的学生。 1、create view 学生应缴费视…

spring入门程序

安装eclipse https://blog.csdn.net/qq_36437991/article/details/131644570 新建maven项目 安装依赖包 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&quo…

Spring-Mybatis 2.0

前言&#xff1a; 第一点&#xff1a;过于依赖代码生成器或AI&#xff0c;导致基于mybaits的CRUD通通忘了&#xff0c;所以为了找回遗忘的记忆&#xff0c;有了该系列内容。 第二点&#xff1a;通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能…

在线免费批量生成 Word 文档工具

为了方便的批量生成 Word 文档&#xff0c;写了个在线 Word 文档批量生成工具&#xff0c;可以根据 Excel 数据和 Word 模板批量生成大量个性化的 Word 文档。适用于需要批量生成格式统一但内容不同的文档场景。比如&#xff1a; 批量生成证书、奖状批量生成合同、协议批量生成…

R语言6种将字符转成数字的方法,写在新年来临之际

咱们临床研究中&#xff0c;拿到数据后首先要对数据进行清洗&#xff0c;把数据变成咱们想要的格式&#xff0c;才能进行下一步分析&#xff0c;其中数据中的字符转成数字是个重要的内容&#xff0c;因为字符中常含有特殊符号&#xff0c;不利于分析&#xff0c;转成数字后才能…

NVR管理平台EasyNVR设备通过ONVIF接入出现404访问错误是什么原因?

如今&#xff0c;视频监控在各行各业都得到了广泛应用&#xff0c;成为现代社会不可或缺的一部分。随着技术的不断进步&#xff0c;视频监控系统已经从传统的模拟监控发展到高清化、网络化和智能化阶段&#xff0c;其应用领域也从最初的安防扩展到智慧城市、智能家居、交通管理…

深度学习——神经网络中前向传播、反向传播与梯度计算原理

一、前向传播 1.1 概念 神经网络的前向传播&#xff08;Forward Propagation&#xff09;就像是一个数据处理的流水线。从输入层开始&#xff0c;按照网络的层次结构&#xff0c;每一层的神经元接收上一层神经元的输出作为自己的输入&#xff0c;经过线性变换&#xff08;加权…

MySQL线上事故:使用`WHERE`条件`!=xxx`无法查询到NULL数据

前言 在一次 MySQL 的线上查询操作中&#xff0c;因为 ! 的特性导致未能正确查询到为 NULL 的数据&#xff0c;险些引发严重后果。本文将详细解析 NULL 在 SQL 中的行为&#xff0c;如何避免类似问题&#xff0c;并提供实际操作建议。 1. 为什么NULL会查询不到&#xff1f; 在…

如何修复 WordPress 中的“Error establishing a database connection”问题

如何修复 WordPress 中的“Error establishing a database connection”问题 在使用 WordPress 建站时&#xff0c;如果你看到“Error establishing a database connection”的提示&#xff0c;不要慌张。这通常意味着网站无法连接到数据库&#xff0c;因此无法显示内容。下面…

MySQL数据库的锁

一、锁&#xff08;Lock&#xff09; 1. 概念 数据库锁是数据库管理系统中用来管理对数据库对象&#xff08;如行、页或表&#xff09;的并发访问的机制。 其主要目的是确保数据的完整性和一致性&#xff0c;同时允许合理的并发操作。 数据库锁可以防止多个事务同时修改同一…