如何在 Ubuntu 16.04、14.04 上安装 Nginx、PHP 7 和 MySQL

2023-10-23

PHP 7.2 的最新主要版本已经发布,在速度和安全性方面进行了大量优化。所以你应该尝试这个版本来进行开发。本教程将帮助您在 Ubuntu 17.10、16.04 和 14.04 LTS 版本上安装 Nginx、PHP 7.2 和 MySQL 5.7。

第 1 步 – Nginx 安装

首先,我们将在我们的系统上安装最新的 Nginx Web 服务器。使用以下命令添加 PPA,以便在 Ubuntu 14.04 (Trusty) 上安装最新的 Nginx 版本。


echo "deb http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx" >> /etc/apt/sources.list
echo "deb-src http://nginx.org/packages/mainline/ubuntu/ `lsb_release -cs` nginx"  >> /etc/apt/sources.list
  

并使用以下命令安装 Nginx Web 服务器。


curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install nginx
  

第 2 步 – PHP 和 PHP-FPM 安装

在您的系统上安装 python-software-properties 软件包,该软件包提供 add-apt-repository 命令,然后使用以下命令集在您的 Ubuntu 系统上添加带有 PHP-FPM 软件包的 PHP PPA 并安装它。


sudo apt-get install python-software-properties
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php7.2 php7.2-fpm
  

还要为您的应用程序安装所需的 php 模块。


sudo apt-get install php7.2-mysql php7.2-curl php7.2-json
  

步骤 3 – MySQL 安装

下载 MySQL 团队官方提供的 MySQL apt 配置 Debian 软件包并将其安装到您的系统上。对于 Ubuntu 16.04 及更高版本,MySQL 5.7 在默认 apt 存储库下可用,因此您无需启用其他存储库。


wget http://repo.mysql.com/mysql-apt-config_0.8.9-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.9-1_all.deb
  

使用以下命令在 Ubuntu 16.04 和 14.04 系统上安装 MySQL 服务器。目前,这是用户使用最流行的版本。


sudo apt-get update
sudo apt-get install mysql-server-5.7
  

你可以找到更多MySQL安装说明 here.

步骤 4 – PHP-FPM 配置

PHP-FPM(FastCGI 进程管理器)是另一种 PHP FastCGI 实现,具有一些附加功能。


sudo nano /etc/php/7.2/fpm/php.ini
  

取消注释 cgi.fix_pathinfo=1 行并将值设置为 0。


cgi.fix_pathinfo=0
  

现在在 /etc/php/7.2/fpm/pool.d/www.conf 配置文件中设置监听参数。在这里您可以使用 php7.2-fpm 套接字来工作或在特定端口上启动 php7.2-fpm 服务。我们将把它用作服务。


sudo nano /etc/php/7.2/fpm/pool.d/www.conf
  

现在对配置文件进行如下更改。推荐监听套接字文件并将其作为服务启用


#listen = /run/php/php7.2-fpm.sock
listen = 127.0.0.1:9000
  

第 5 步 – Nginx 虚拟主机配置

最后进行Nginx虚拟主机的配置。对于此示例,我们正在编辑默认配置文件。


sudo nano /etc/nginx/conf.d/default.conf
  

并进行如下更改。


server {
        listen   80;

        root /var/www;
        index index.php index.html index.htm;
        server_name  example.com www.example.com;

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/www;
        }

        location ~ .php$ {
                try_files $uri =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}
  

您必须在配置的所有虚拟主机中进行相同的更改。

第 6 步 – 重新启动所有服务

在系统上安装并配置所有服务后,重新启动所有必需的服务以重新加载所做的任何更改。


sudo service nginx restart
sudo service php7.2-fpm restart
  

步骤 7 – 允许防火墙访问

如果您使用 iptables,请使用以下命令打开端口 80 以供公共访问 Web 服务器。

iptables 用户:


sudo iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
  

UFW 用户:


$ sudo ufw allow 80/tcp
  

第 8 步 – 测试设置

最后,使用 NGINX 测试 PHP 7 的安装。让我们使用以下内容在网站文档根目录上创建一个文件 info.php。

1
2
3
<?php
phpinfo();
?>

现在在网络浏览器中浏览该文件。它将提供有关版本和安装的所有详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 16.04、14.04 上安装 Nginx、PHP 7 和 MySQL 的相关文章

  • 我们如何在存储过程中使用 mysql_affected_rows()

    我们如何使用mysql affected rows 在存储过程中 Use the ROW COUNT http dev mysql com doc refman 5 1 en information functions html funct
  • 在插入行上返回最后一个 ID (IDENTITY) VB.NET MySQL

    Dim insert coupon query As String INSERT INTO qa discountcoupons id status code VALUES AUTO INCREMENT ID 5 Dim cmd query
  • 检索多行最后插入的 id

    当将数据插入具有自动递增 PK 的表时 我需要获取该密钥以在另一个语句中使用 正如许多问题所示 这可以在 PHP 中使用mysql insert id 但是 我一直将插入内容分组在一起 因此一次插入不止一行 我这样做是因为我猜测可能会存在一
  • 课程完成时更新外部数据库

    我的场景 Moodle 中的用户完成了一门课程 一旦发生这种情况 我想更新外部数据库 我的理解是 每次运行 cron 作业时都会触发 course completed 事件 使用一些简单值 例如已完成课程的用户名 ID 课程 ID 以及完成
  • mysql连接3个表

    如何连接三个具有一个公共列 id 的mysql表 例如 从表1中选择a b 从表2中选择c d 从表3中选择e f 其中id x 谢谢 SELECT t1 a t1 b t2 c t2 d t3 e t3 f FROM table1 t1
  • MySQL 编码问题 - 从 Windows 到 Linux 结果不同

    我有一个托管在 Windows 服务器上的 MySQL 数据库 当我使用 mysql 控制台从各种 Windows 机器查询特定记录时 我得到P ivi 不正确 当我使用 mysql 控制台从不同的 nix 机器查询相同的记录时 我得到P
  • Docker 与 nginx 组合不断显示欢迎页面

    我是新来的docker并尝试使用最简单的 docker compose yml 显示一个 hello world 页面 并在此基础上构建最终完整的LEMP堆栈它将与我的服务器具有相同的配置 然而大多数教程已经过时 并且有很多使用方法dock
  • Mysql正则表达式搜索不包含重复字符

    我有一个数据库表 其中包含字典中的单词 现在我想选择字谜词 例如 如果我给出字符串SEPIAN它应该获取像这样的值apes pain pains pies pines sepia etc 为此 我使用了查询 SELECT FROM word
  • 如何使用 CodeIgniter 计算 MySQL 中给定行之前的行数?

    简单来说 如何计算某一行之前有多少行 我使用的是增量 ID 但行是随机删除的 因此仅检查 ID 是行不通的 比如说 如果我有 30 行 并且我根据名称 或任何实际内容 选择了一行 那么在该行之前有多少行 它可以是 16 1 12 或任何值
  • 在 MySQL 中向 BIGINT 列添加索引有帮助吗?

    我有一个包含数百万个条目的表 以及一个包含BIGINT 20 每行的唯一值 它们不是主键 但在某些操作过程中 有数千个SELECTs 在中使用此列WHERE条款 问 向该列添加索引是否有帮助当条目数量增长到数百万时 我知道它适用于文本值 但
  • MySQL“插入...重复键”具有多个唯一键

    我一直在阅读如何使用MySQL在重复键上插入 看看它是否允许我避免选择一行 检查它是否存在 然后插入或更新 然而 当我阅读文档时 有一个地方让我感到困惑 文档是这样说的 如果指定 ON DUPLICATE KEY UPDATE 并且插入的行
  • uWSGI重启时停机

    每次当我有代码更新时重新启动服务器时 我都会遇到 uwsgi 问题 当我使用 sudo restart account 重新启动 uwsgi 时 停止和启动实例之间存在一个小间隙 导致停机并停止所有当前请求 当我尝试 sudo reload
  • 在 Mac 上设置 Laravel php artisan 迁移错误:没有这样的文件或目录 [重复]

    这个问题在这里已经有答案了 将一个完美运行的 laravel 项目从 git 拉到运行 MAMP 的 mac 上 项目在linux机器上完美运行 作曲家安装 php artisan migrate 出现以下错误 PDOException S
  • 如何进行快速但不准确的 InnoDB 行计数?

    PHPMyAdmin常见问题解答有话要说 http www phpmyadmin net documentation faq3 11关于 InnoDB 的大概行数 phpMyAdmin 使用快速方法来获取行数 并且此方法仅在 InnoDB
  • cron 作业或 PHP 调度程序

    我使用 MYSQL 作为我的数据库 PHP 作为我的编程语言 我想运行一个 cron 作业 该作业将运行直到当前系统日期与我的数据库表中名为 PROJECT 的 截止日期 日期 列匹配 一旦日期相同的是 必须运行更新查询 这会将状态 项目表
  • 来自两个表的数据而不重复第一个表的数据?

    我的 MySQL 数据库中有两个表 用户表和用户元表 我正在寻找一种方法 通过一个查询从两个表中获取所有信息 但不重复用户表中的信息 这也是与用户 ID 号相关的所有信息 例如 user id 1 有没有办法查询数据库并收集两个表中的所有信
  • 更改表以给出外键约束

    我有一个表 其中有 2 列 是从两个不同的表复制的 我现在要做的是对列名 email 和 id 给出外键约束 如下所示 ALTER TABLE users role map ADD CONSTRAINT FK users role map
  • 在学说监听器中插入元素

    我已经设置了一个学说监听器 它在不同的数据库操作上触发并创建一个日志实体并将其插入数据库 class FOO public function onFlush OnFlushEventArgs args foreach args gt get
  • mysql JOIN,这是如何解释的?

    如果我为 mysql 编写一条 sql 查询 并且只指定 JOIN 没有外连接 内连接 左连接等 那么默认的连接类型是什么 例如 SELECT count FROM Students p JOIN 班级 c ON p studentId c
  • 为什么我收到错误 #1136 - 列计数与第 1 行的值计数不匹配?

    我收到此错误 1136 Column count doesn t match value count at row 1 当我尝试这样做时 INSERT INTO folding cartons part no description cou

随机推荐

  • SSH 连接被拒绝(原因和解决方案)

    本教程将介绍您在使用 SSH 时可能遇到的最常见错误 连接被拒绝 请继续阅读 详细了解这个问题及其各种解决方案 Secure Shell SSH 是系统管理员最常用的工具之一 它对于管理所有服务器和执行日常任务至关重要 目录 hide 1
  • Linux env 命令:深入了解 Linux 环境管理

    The envLinux中的命令用于显示或设置环境变量 它可用于在修改后的环境中运行程序或显示当前环境 在本教程中 我们将深入研究其各种论点 并揭示其与脚本的集成 目录 hide 1 参数概览 2 执行不带参数的 env 命令 3 使用 e
  • 揭示 Linux 虚拟文件系统的强大功能

    Linux 虚拟文件系统或虚拟文件系统通常是位于实际文件系统之上的一层 它允许用户访问不同类型的文件系统 可以将虚拟文件系统视为内核与实际文件系统之间的接口 这意味着您将在 etc fstab 文件中找不到这些 Linux 虚拟文件系统的任
  • NumPy 随机种子(生成可预测的随机数)

    在计算科学中 随机种子是生成的伪随机数序列的起点 这些数字看似随机 但它们遵循确定性序列 种子决定了该序列的初始状态 在 Python 中NumPy 库 您可以使用设置随机种子numpy random seed 功能 这将使随机数生成的输出
  • Python map() 函数(转换可迭代对象)

    The map Python 中的 function 是一个内置函数 用于将函数应用于可迭代对象 数组 列表 元组 字典 集合 中的每个项目并返回一个迭代器 这使得它对于转换可迭代数据非常有用 目录 hide 1 Python map 函数
  • 使用 matplotlib 在 Python 中进行 3D 绘图

    数据可视化就是这样一个领域 大量的库都是用 Python 开发的 在这些当中 Matplotlib是数据可视化最流行的选择 虽然最初是为了绘制二维图表而开发的 例如直方图 条形图 散点图 线图等 Matplotlib 还扩展了其功能以提供
  • Bash 脚本编写第 6 部分 – 创建和使用 Bash 函数

    在讨论 bash 函数之前 我们先讨论一下这种情况 编写 bash 脚本时 您会发现自己在多个地方使用相同的代码 如果您厌倦了在 bash 脚本中一次又一次地编写相同的代码行 那么最好编写一次代码块并在 bash 脚本中的任何位置调用它 b
  • Python PDF处理教程

    PDF 或便携式文档格式首先由 Adob e 推出 但现在由国际标准化组织 ISO 维护 并且它是一个开放标准 PDF 文件的一些主要组件是纯文本 按钮 表单 单选按钮 图像 音频 视频 签名和元数据 在 Python 中 我们可以执行不同
  • 使用 LRU 缓存提升您的 Python 代码

    LRU 缓存或 最近最少使用 缓存是一种缓存 当缓存达到其大小限制时 最近最少使用的条目将被丢弃 关键思想是通过重用以前的结果来加快对相同数据的后续请求 这种技术称为记忆化 在本教程中 我们将深入研究 LRU 缓存的概念 探索其底层机制 以
  • Python 数学函数(简单示例)

    在本教程中 您将了解 Python 数学函数mathPython 的模块 任何类型的项目都始终需要数学计算 在 Python 中 一些内置数学运算符不需要数学模块 例如加法 减法 乘法 除法 三角函数 正弦 余弦等 对数 指数或阶乘等高级运
  • Bash For 循环范围:简单指南

    在 Bash shell 中 for loop使您能够有效地迭代数字或字符序列 当涉及到定义序列时 范围就发挥了作用 本教程重点介绍 Bash 范围创建强大循环的能力 目录 hide 1 使用大括号 进行范围定义 2 基本数字序列 star
  • 网页设计趋势将持续存在

    第一个网站是纯文本网站 今天很难想象会有这样一个网站 第一个同时提供图片和文字的网站于 1993 年上线 blog hubspot com Lindsay Kolowich 2015 年 3 月 这些年来 网页设计取得了很大的发展和进步 为
  • 如何从 CentOS 7.7-7.0 升级 CentOS 7.8

    最新版本 CentOS 7 8 可供升级 所有 CentOS 7 7 7 6 7 5 7 4 7 3 7 2 7 1 和 7 0 用户都可以将系统升级到最新版本 所有使用 WHM cPanel 运行的用户都不需要执行任何操作 WHM cPa
  • 如何在 CentOS/RHEL 8/7/6 上安装 Angular CLI

    Angular是一个框架 库 资产和实用程序 它跟踪所有组件并定期检查其更新 本教程将帮助您在 CentOS 8 7 6 和 RHEL 8 7 6 Linux 操作系统上安装 Angular CLI 工具 第 1 步 安装 Node js
  • 在 Bash 中检查文件是否为空的 5 种方法

    在 Linux 中 空文件是大小为零字节的文件 这意味着该文件不包含任何数据 并且在文本编辑器中打开时没有任何内容 可以使用 touch 命令创建一个空文件 touch myfile txt 这将在当前目录中创建一个名为 myfile tx
  • 如何在 MySQL 中创建管理员用户

    在 MySQL 中管理数据库通常需要使用特权用户或超级管理员用户 他们拥有读取 写入 更新和管理数据库的所有权限 在 MySQL 中 这通常是 root 用户 但建议创建单独的超级管理员用户以实现更好的安全管理 本文将指导您如何在 MySQ
  • 如何在 Fedora 36/35/34 上安装 TeamViewer

    团队查看器是一款功能强大的远程桌面和文件共享应用程序 适用于大多数操作系统和移动设备 为了将 TeamViewer 的使用商业化 您必须购买许可证 您可以免费使用它 仅供个人使用 Teamviewer 的 RPM 包由官方团队构建 可以安装
  • 如何更改 PHP 会话超时

    作为 Web 开发人员 了解 PHP 会话超时对于构建安全可靠的 Web 应用程序至关重要 PHP 会话是一种跨多个页面存储用户信息的方式 会话超时是指会话在过期之前保持活动状态的持续时间 在本分步指南中 我们将引导您完成更改 PHP 会话
  • 如何在 Ubuntu、Debian 和 LinuxMint 上安装 Python 3.7

    在撰写本文时 Python 3 7 系列的最新稳定版本已可供安装 本文将帮助您在 Ubuntu 和 LinuxMint 操作系统上安装 Python 3 7 9 你可以拜访here阅读有关 Python 版本的更多信息 先决条件 保持软件包
  • 如何在 Ubuntu 16.04、14.04 上安装 Nginx、PHP 7 和 MySQL

    PHP 7 2 的最新主要版本已经发布 在速度和安全性方面进行了大量优化 所以你应该尝试这个版本来进行开发 本教程将帮助您在 Ubuntu 17 10 16 04 和 14 04 LTS 版本上安装 Nginx PHP 7 2 和 MySQ