在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0)

下面我将为您详细讲解“在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0)”的完整攻略。

环境要求

在开始设置 LEMP 环境之前,请确保已满足以下条件:

  • 已使用 sudo 权限登录到 Ubuntu 16.04 服务器;
  • 已安装 Nginx 服务器;
  • 已配置域名解析到服务器的 IP 地址。

安装 MariaDB

使用以下命令从 MariaDB 官方网站添加软件包源,并安装 MariaDB 数据库:

sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.5/ubuntu focal main'
sudo apt update
sudo apt install -y mariadb-server

配置 MariaDB

安装完 MariaDB 后,需要配置它以增强安全性并更好地适应实际情况。

使用以下命令从命令行启动 MariaDB,并运行安全脚本。

sudo mysql_secure_installation

脚本将提示您输入 MariaDB root 用户密码。如果未设置,请按 Enter 键跳过此步骤。

随后脚本将提示你进行以下操作:

  1. 更改 MariaDB root 用户密码
  2. 删除匿名用户
  3. 禁用 root 远程登录
  4. 删除 test 数据库和相关用户

根据需要选择和完成每个操作。建议按照脚本的建议进行操作。

安装 PHP 7

使用以下命令安装 PHP 7 和相关扩展:

sudo apt install -y php-fpm php-mysql php-mbstring php-xml php-zip php-gd

安装完成后,编辑 /etc/php/7.0/fpm/php.ini 文件,找到如下配置:

;cgi.fix_pathinfo=1

将其改为:

cgi.fix_pathinfo=0

然后,重新启动 PHP-FPM 服务:

sudo systemctl restart php7.0-fpm

配置 Nginx 支持 PHP

默认情况下,Nginx 不支持 PHP,我们需要进行以下设置:

首先,在 /etc/nginx/sites-available/ 目录下创建一个新的虚拟主机配置文件:

sudo nano /etc/nginx/sites-available/example.com

将以下内容复制到文件中:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
    location ~ /\.ht {
        deny all;
    }
}

将其中的 server_name 修改为你的域名,root 修改为你的网站目录。

保存并关闭文件,使用以下命令创建软链接到 Nginx 的 sites-enabled 目录中:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

然后检查 Nginx 的配置文件是否存在语法错误:

sudo nginx -t

如没有出现错误,重新启动 Nginx 服务:

sudo systemctl restart nginx

支持 HTTP 2.0

要启用 HTTP 2.0,您需要使用 TLS/SSL。可以使用 Let's Encrypt 免费证书。在 http{} 部分的 server{} block 的配置中增加 ssl 配置即可开启:

listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

其中 example.com 改为你的域名。

同时您需要在 /etc/nginx/nginx.conf 文件里增加以下代码:

http2_idle_timeout 5m; 

重启 Nginx 服务,即可启用 HTTP 2.0:

sudo systemctl restart nginx

示例说明

示例一:为 example.com 设置 LEMP 环境

假设我们的域名为 example.com,网站根目录为 /var/www/html。

首先,安装 MariaDB:

sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/mariadb/repo/10.5/ubuntu focal main'
sudo apt update
sudo apt install -y mariadb-server

然后启动 MariaDB,进行安全配置:

sudo systemctl start mariadb
sudo mysql_secure_installation

接着,安装 PHP 7 和相关扩展:

sudo apt install -y php-fpm php-mysql php-mbstring php-xml php-zip php-gd

修改 php.ini:

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

修改以下内容:

cgi.fix_pathinfo=0

然后重启服务:

sudo systemctl restart php7.0-fpm

最后,创建虚拟主机配置文件:

sudo nano /etc/nginx/sites-available/example.com

将以下文本复制到文件中:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html index.htm;
    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
    location ~ /\.ht {
        deny all;
    }
}

保存文件并创建软链接:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

最后,检查 Nginx 的语法是否正确,然后重新启动服务:

sudo nginx -t
sudo systemctl restart nginx

现在您的例子域名 example.com 已完成 LEMP 环境配置。

示例二:启用 HTTP 2.0

假设您已经具有有效的域名和 Let's Encrypt SSL 证书,你可以在 Nginx 的虚拟主机配置文件中添加以下内容:

listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

其中 example.com 改为你的域名。

然后,您需要编辑 /etc/nginx/nginx.conf 文件,并添加以下代码:

http2_idle_timeout 5m;

重启 Nginx 服务:

sudo systemctl restart nginx

就可以启用 HTTP 2.0 了。

这就是完整的“在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0)”攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在 Ubuntu 16.04 为 Nginx 服务器安装 LEMP 环境(MariaDB,PHP 7 并支持 HTTP 2.0) - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Oracle to_char函数的使用方法

    Oracle to_char函数的使用方法 to_char函数是Oracle内置函数之一,主要用于将日期、数值等数据类型转换为字符串类型。在Oracle数据库中,to_char函数具有广泛的应用场景,如在SELECT查询语句中使用,将日期格式化为不同的字符串格式;或者在创建视图、触发器等数据库对象时使用。 语法 下面是to_char函数的语法: to_cha…

    database 2023年5月21日
    00
  • mysql查询优化之100万条数据的一张表优化方案

    MySQL是互联网业务中最常用的关系型数据库之一。在数据量较大时,表的查询效率往往会受到影响。因此,为了优化查询效率,需要对表进行优化。下面我将分享“mysql查询优化之100万条数据的一张表优化方案”的完整攻略,包括以下几个步骤: 步骤一:添加索引 索引是MySQL优化的重点。使用索引可以快速的定位到表中的特定行,加快查询效率。首先,我们需要分析表中的字段…

    database 2023年5月19日
    00
  • MySQL查看版本的五种方法总结

    下面就给您详细讲解“MySQL查看版本的五种方法总结”的完整攻略。 一、查看 MySQL 版本的意义 在开发和维护 MySQL 数据库时,经常需要查看 MySQL 的版本号,以此为基础确定它是否支持所需的功能,特别是在特定情况下,如升级或修复问题时。 二、五种查看 MySQL 版本的方法 1. 使用命令行方法 打开终端, 进入 MySQL 的 bin 目录,…

    database 2023年5月22日
    00
  • 深入了解MySQL中索引优化器的工作原理

    深入了解 MySQL 中索引优化器的工作原理 MySQL 的索引优化器负责选择查询语句中最合适的索引来加速查询操作。在了解索引优化器工作原理之前,我们需要先了解几个概念: 索引类型 MySQL 支持多种不同类型的索引,包括 B-Tree、Hash、Full-text 等。其中 B-Tree(B树)是最常见的一种索引类型。B-Tree 索引在处理大量数据和范围…

    database 2023年5月19日
    00
  • DBMS 中泛化和专业化的区别

    DBMS中的泛化和专业化是数据处理中常用的两个概念。泛化是通过抽取主要特征和抽象,将数据转化为更高层次的概念或模型,从而使得其具有更广泛的应用价值。而专业化则是将泛化后的模型或概念转化为具体的实现或应用。 在实际应用中,泛化和专业化在数据处理中的作用是互为补充的。泛化可以从大量数据中提炼出主要特征和规律,将其转换为更高层次、更具普遍性的概念,使得数据处理变得…

    database 2023年3月27日
    00
  • Flutter上的数据监控深入理解

    Flutter上的数据监控深入理解 在Flutter开发过程中,我们需要对应用程序中的数据进行监控,以便及时发现和解决潜在的问题,提高应用程序的质量和性能。本文将详细探讨在Flutter上的数据监控深入理解,包括监控方式、监控工具和示例说明。 监控方式 在Flutter中,我们可以使用一些常用的方式来进行数据监控: 手动打印Log:通过Log来输出相关变量和…

    database 2023年5月19日
    00
  • Oracle 中文字段进行排序的sql语句

    当使用Oracle数据库进行排序时,如果涉及中文字段,需要使用一些特殊的处理方法,以下是详细的“Oracle 中文字段进行排序的 SQL 语句”攻略: 步骤一:安装NLS_LANG字符集 首先,为了能够正确排序中文字符,需要安装相应的本地字符集(NLS_LANG)。可以通过oracle官方的安装包来进行安装,或者通过oracle的管理控制台来安装。 步骤二:…

    database 2023年5月21日
    00
  • ServiceStack.Redis 破解

    在github上下载了ServiceStack.Redis,做测试发现有限制,居然从v4开始就收费,无聊时,做了个源码分析 废话不多,上测试代码 try { for (int i = 0; i < 7000; i++) { redisClient = new RedisClient(host, port); redisClient.Set<str…

    Redis 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部