Ubuntu 20.04 LTS 手动安装 LNMP 教程 (NGINX + MariaDB + PHP)

搬瓦工

LNMP = Linux + NGINX + MySQL + PHP,是非常常用的建站环境套装。老外通常也把这个称为 LEMP,因为 NGINX 发音开头为 EN,缩写自然是 E。今天老唐介绍一下在 Ubuntu 20.04 LTS 系统上手动安装 LNMP 建站环境的教程,安装的东西包括 NGINX、MariaDB、PHP。MariaDB 是 MySQL 的社区版本,功能是一样的。

如果需要一键安装,可以参考《一键安装 LNMP 建站环境,部署 PHP + MySQL》。

一、安装前准备

安装前我们需要一台 VPS,我们可以购买一台腾讯云、阿里云、Hostwinds、Vultr 或者搬瓦工的 VPS,具体可以参考《#老唐推荐# 最好用的国内云服务器、国外便宜 VPS 推荐》这里的推荐。

之后我们把系统重装为 Ubuntu 20.04 LTS 即可,然后获取 root 密码、登陆信息等,登陆到 VPS 之后开始后续操作。

二、安装 NGINX 和 MariaDB

使用下面命令进行安装:

$ sudo apt update && sudo apt install -y nginx mariadb-server

三、配置 MariaDB

安装完成后,首次运行 MySQL / MariaDB 的设置,默认会问我们输入密码,我们直接回车即可。

然后输入 N 并且回车,就可以重置密码。

$ sudo mysql_secure_installation

连接到 MariaDB 监控器:

$ sudo mariadb

新建一个数据库:

CREATE DATABASE example_db;

赋予权限(注意修改其中的用户名和密码):

GRANT ALL ON example_db.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

更新权限:

FLUSH PRIVILEGES;
exit

再次连接:

$ mariadb -u username -p

确保可以正常连接:

SHOW DATABASES;

设置为当前数据库:

USE example_db;

新建一个表以进行后续测试:

CREATE TABLE table1(column1 varchar(255));
INSERT INTO table1 VALUES("Database connection established successfully");
exit

四、安装 PHP 和 Certbot

安装 php-fpm 和 php-mysql

$ sudo apt install -y php-fpm php-mysql

安装 snap:

$ sudo apt install -y snap

安装 certbot:

$ sudo snap install --classic certbot

五、配置 NGINX

新建一个网站目录(注意替换 example.com):

$ sudo mkdir -p /var/www/example.com

设置正确权限:

$ sudo chown -R $USER:$USER /var/www/example.com

新建一个配置文件:

$ sudo vim /etc/nginx/sites-available/example.com

填写下面配置信息:

server {
    listen 80;
    listen [::]:80;
    server_name www.example.com;
    server_name example.com;
    root /var/www/example.com;
    location / {
        index index.html;
    }
}

重启 NGINX:

$ sudo systemctl restart nginx.service

运行一次 certbot:

$ sudo certbot certonly --dry-run --nginx -d example.com,www.example.com

获取 LetsEncrypt 证书:

$ sudo certbot certonly --nginx -d example.com,www.example.com

打开 NGINX 配置文件:

$ sudo vim /etc/nginx/sites-available/example.com

将所有内容都删除,然后复制下面内容进去:

server {
    listen 80;
    listen [::]:80;
    server_name www.example.com;
    server_name example.com;
    root /var/www/example.com;
    location / {
        return 301 https://example.com$request_uri;
    }
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    root /var/www/example.com;
    index index.php index.html index.htm index.nginx-debian.html;
    add_header X-XSS-Protection "1; mode=block";
    add_header Content-Security-Policy "default-src 'self'; script-src 'self';";
    add_header Referrer-Policy "no-referrer";
    add_header X-Frame-Options "SAMEORIGIN" always;
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
    server_name www.example.com;
    server_name example.com;
    access_log /var/log/example.com.log;
    error_log /var/log/example.com.error.log;
}

添加软连接:

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

重启 NGINX:

$ sudo systemctl restart nginx.service

六、测试

新建一个文件:

$ vim /var/www/example.com/testdb.php

添加如下内容:

<?php
$mysqli = new mysqli("localhost", "username", "password", "example_db");

if (mysqli_connect_errno()) {
    printf("Connection failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT column1 FROM table1";

if($result = $mysqli->query($query)) {
    while($row = $result->fetch_row()){
        printf("%s\n", $row[0]);
    }
    $result->close();
}

$mysqli->close();
?>

打开下面链接测试是否正常:

  • https://example.com/testdb.php

如果提示“Database connection established successfully”就是成功连接到数据库了,并且 PHP 也正常运行了。

参考:https://www.vultr.com/docs/install-a-lemp-stack-on-ubuntu-20-04-lts

赞(0)
未经允许不得转载:老唐笔记 » Ubuntu 20.04 LTS 手动安装 LNMP 教程 (NGINX + MariaDB + PHP)