在 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日

相关文章

  • Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法

    MySQL数据库从5.6.28版本升级到8.0.11版本可能会遇到以下问题: 数据库备份不兼容 MySQL 8.0.11版本中更改了密码散列格式,这意味着使用早期版本的备份还原数据将会失败。要解决这个问题,你需要在升级之前进行一次新备份,以便你可以使用新格式的密码恢复你的数据。 示例:使用mysqldump命令进行备份 $ mysqldump -u root…

    database 2023年5月18日
    00
  • 初识 ASP.NET Membership 用户管理

    ASP.NET Membership 是 .NET Framework 提供的一组 API,用于实现安全的用户管理功能。它可以帮助开发者轻松地实现用户登录、注册、密码重置等操作,并且可以管理用户角色和权限。 下面是初识 ASP.NET Membership 用户管理的完整攻略: 安装Membership 在使用Membership之前,我们需要先安装Memb…

    database 2023年5月22日
    00
  • redis配置文件redis.conf中文版(基于2.4)

    下面就为您详细讲解 redis 配置文件 redis.conf 中文版的完整攻略。 1. redis.conf 是什么? redis.conf 是 Redis 配置文件的默认命名,详细路径通常在 /etc/redis/redis.conf。 Redis 在启动时会读取该配置文件,并根据其中的参数进行设置。 2. redis.conf 中的常用参数 redis…

    database 2023年5月22日
    00
  • centos编译安装mariadb的详细过程

    下面就为您详细讲解CentOS编译安装MariaDB的完整攻略,步骤如下: 安装编译依赖 在编译MariaDB之前,我们需要先安装一些编译依赖,可以使用yum命令进行安装: yum install -y wget gcc gcc-c++ ncurses-devel perl-Data-Dumper perl-Test-Harness 下载并解压MariaDB…

    database 2023年5月18日
    00
  • ubuntu 16.04安装redis的两种方式教程详解(apt和编译方式)

    下面是“ubuntu 16.04安装redis的两种方式教程详解(apt和编译方式)”的完整攻略: 1. apt方式安装redis apt是ubuntu下的软件包管理工具,安装redis可以直接使用apt安装,下面是具体的安装步骤: 1.1 更新apt源 在使用apt前,我们需要先更新apt的源,使其包含最新的软件包。在终端中输入以下命令: sudo apt…

    database 2023年5月22日
    00
  • 列出SQL Server中具有默认值的所有字段的语句

    要列出 SQL Server 数据库中具有默认值的所有字段,可以使用以下两种方法。 方法一:查询系统表 sys.columns 可以通过查询系统表 sys.columns,以获取具有默认值的列信息。 SELECT OBJECT_SCHEMA_NAME(c.object_id) AS [Schema], OBJECT_NAME(c.object_id) AS …

    database 2023年5月21日
    00
  • 详解MySQL HAVING:过滤分组

    HAVING是MySQL用于在GROUP BY子句之后对数据进行过滤的关键字,HAVING的使用方式与WHERE相似,可以使用诸如SUM、AVG等聚合函数、关系运算符、逻辑运算符等对数据进行筛选。在使用HAVING之前,需要先进行GROUP BY操作,将数据按照一定规则分组。 下面是一些示例说明: 假设有一个订单表orders,包含以下字段: order_i…

    MySQL 2023年3月9日
    00
  • MySQL和Oracle批量插入SQL的通用写法示例

    MySQL和Oracle是两个流行的关系型数据库系统,它们之间的一些SQL语句操作和语法有些不同,但是在批量插入数据时,可以采用一些通用写法来提高效率。下面就来详细讲解MySQL和Oracle批量插入SQL的通用写法示例的完整攻略。 一、背景知识 在介绍批量插入SQL的通用写法之前,我们需要了解几个背景知识: MySQL和Oracle都支持使用JDBC操作数…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部