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

yizhihongxing

下面我将为您详细讲解“在 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日

相关文章

  • CentOS7使用rpm包安装mysql 5.7.18

    下面是CentOS7使用rpm包安装MySQL 5.7.18的完整攻略: 1. 下载MySQL rpm包 从官方下载站点(https://dev.mysql.com/downloads/mysql/)下载适用于CentOS7的MySQL rpm包。可以根据自己的需要选择不同的包,比如选择一个基于gcc编译的通用Linux RPM安装包。 下载完成后可将安装包…

    database 2023年5月22日
    00
  • 如何有效防止sql注入的方法

    为了有效防止 SQL 注入攻击,我们需要采取一系列措施。下面是几种有效的防范措施: 使用参数化查询 使用参数化查询是最有效的防范 SQL 注入攻击的方法之一。参数化查询能够将用户输入的数据以一种安全的方式嵌入到 SQL 语句中。使用参数化查询,应用程序将用户输入的数据作为输入参数,而不是将其作为 SQL 查询语句的一部分直接拼接到查询语句中。例如,以下代码演…

    database 2023年5月21日
    00
  • 彻底解决MySQL使用中文乱码的方法

    关于如何彻底解决MySQL使用中文乱码的问题,可以从以下几个方面来考虑: 问题原因分析 MySQL使用中文乱码的问题主要是由于MySQL默认字符集和应用程序字符集不一致导致的。MySQL默认字符集为latin1,而大部分应用程序一般采用UTF-8字符集,这就容易出现中文乱码的问题。 解决方法1:修改MySQL默认字符集 可以通过修改MySQL默认字符集来解决…

    database 2023年5月22日
    00
  • Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误问题分析

    下面是Oracle 19c的参数sec_case_sensitive_logon与ORA-01017错误问题分析的完整攻略。 问题背景 在使用Oracle 19c时,可能会遇到ORA-01017错误,该错误通常是由于用户名或密码错误引起的。但在实际情况中,有些用户检查了用户名和密码都没有问题,却仍然遇到了ORA-01017错误,这很可能是由于Oracle 1…

    database 2023年5月21日
    00
  • JAVA语言编程格式高级规范

    JAVA语言编程格式高级规范攻略 Java是一种高度可读性的语言,可以易于阅读和理解。高级规范准则帮助开发人员制定一致的编码风格,提高代码可读性和可维护性。 在下面的攻略中,将展示Java编程的规范和实例,以帮助开发人员提高代码的可读性和可维护性。 命名规范 类名应使用驼峰式命名法,即首字母大写,其他单词首字母也大写,且不使用下划线。例如:MyClassNa…

    database 2023年5月21日
    00
  • Linux CentOS 7源码编译安装PostgreSQL9.5

    下面是详细的攻略: 准备工作 在开始编译安装 PostgreSQL 之前,需要先进行一些准备工作,具体如下: 系统环境 操作系统:CentOS 7.x 64位CPU核数:2核及以上内存: 2GB及以上 安装编译工具 在 CentOS 7.x 中默认已经安装了 gcc、make 等编译工具,但是还需要安装以下工具: readline(提供 psql 命令行交互…

    database 2023年5月22日
    00
  • Centos7下oracle12c的安装与配置图文教程(详细)

    以下是“Centos7下oracle12c的安装与配置图文教程(详细)”的完整攻略: 1. 安装前准备 在开始安装之前,需要安装一些必要的依赖和配置系统参数。具体步骤如下: 安装必要依赖 yum install binutils -y yum install compat-libcap1 -y yum install compat-libstdc++-33 …

    database 2023年5月22日
    00
  • sqlserver和oracle中对datetime进行条件查询的一点区别小结

    针对“sqlserver和oracle中对datetime进行条件查询的一点区别小结”的完整攻略,我为你提供以下内容: 标题:SQLServer和Oracle中对Datetime进行条件查询的区别 背景 在日常开发中,我们经常会碰到对Datetime类型进行条件查询的场景,而在不同的数据库中,对Datetime类型的查询有着不同的写法和区别。本文将会分析和总…

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