如何在 Ubuntu 20.04 上搭建 LEMP 环境运行 WordPress

Wordpress 是最流行的内容管理系统之一,也是常用的 CMS(内容管理系统)程序之一。Wordpress 可以在 VPS 上以多种方式安装,除了上一篇文章讲解的LAMP软件环境运行Wordpress外,本次讲解同样非常流行的软件环境LEMP ( Linux + Nginx + MySQL + PHP )。

本教程讲解如何在 Ubuntu 20.04 上搭建 LEMP 环境运行 WordPress,学习后你可以轻松在自己的 VPS 上搭建使用 LEMP 软件环境的 Wordpress 博客。

第一步,准备 Ubuntu 20.04 系统环境

Wordpress 程序安装前,需要准备安装了 Ubuntu 20.04 TLS 系统的 VPS。你可以通过阿里云腾讯云购买性价比高的 VPS

购买 VPS 后,你可以获取到 VPS 的相关信息,包括 IP 地址,root帐号密码等。默认购买的 VPS 都开启 SSH 服务,你可以通过以下命令的方式 SSH 到 VPS 上进行一系列操作了。

ssh root@你VPS的IP地址

为安全起见,建议你使用 root 登录 VPS 后创建一个具有 sudo 权限的帐号

第二步、安装 Nginx

Apache Http Server 是一个开源的,非常流行,使用非常广泛的网页服务器软件。在 Ubuntu 20.04 系统中我们可以通过以下命令安装 Apache Http Server。

sudo apt updatesudo apt nginx

使用前面建议创建的非 root 帐号安装时,需要使用 sudo 命令。首次使用 sudo 时系统会提示输入密码,根据提示输入密码后回车即可。

安装完成后,nginx并不是默认自动启动,通过以下命令启动nginx:

sudo systemctl start nginx

启动完成后,可以输入以下命令查看 nginx 运行状态

systemctl status nginx.service

输出内容类似内容:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-06-28 02:47:42 UTC; 5s ago
       Docs: man:nginx(8)
    Process: 49088 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 49099 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 49100 (nginx)
      Tasks: 2 (limit: 1075)
     Memory: 8.3M
     CGroup: /system.slice/nginx.service
             ├─49100 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─49101 nginx: worker process

默认情况,Ubuntu 20.04 TLS 中使用 UFW 管理防火墙。防火墙需要允许 http(80) 和 https(443) 通讯,可以通过以下命令配置:

sudo ufw allow 80sudo ufw allow 443

如果 ufw 没有启动,建议启动防火墙,这样可以增加 VPS 系统安全性。

关于如何安装,查看,启停 UFW ,如何配置防火墙,可以查看如何在 Ubuntu 上使用 UFW 设置防火墙

可以通过http://your_server_ip访问,您将看到默认的Ubuntu Apache 欢迎页面,效果图如下:

image-20200628105938034

nginx可以正常工作了。

第三步、安装 MySQL

这一步我们来安装 MySQL,非常简单,运行如下命令即可:

sudo apt install mysql-server

如果需要密码,输入密码即可。之后,安装过程中一路下来默认根据提示默认输入Y,按回车即可。

安装完成后,MySQL 数据库默认启动,我们可以通过如下命令查看其运行状态 。

sudo systemctl status mysql

输出结果类似如下:

● mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-06-23 08:51:37 UTC; 5 days ago
   Main PID: 787 (mysqld)
     Status: "Server is operational"
      Tasks: 41 (limit: 1075)
     Memory: 145.0M
     CGroup: /system.slice/mysql.service
             └─787 /usr/sbin/mysqld

MySQL 安装完成后,为安全起见,建议运行 MySQL 的安全配置,设置 root 密码等,运行如下命令:

sudo mysql_secure_installation

选择密码策略,设置 root 密码,之后一路提示默认输入 y,回车即可。

第四步、安装 PHP

要显示动态内容,正常运行 Wordpress 我们需要安装 PHP,安装命令如下:

sudo apt install php-fpm php-opcache php-cli php-gd php-curl php-mysql

至此,PHP 及可能用到的扩展安装完成。

第五步、使用 Let` Encrypt 加密使用 Nginx 的 Wordpress 网站

自动安装Let's Encrypt ,因为涉及到要验证域名,所以请提前将你的域名解析到你的VPS主机上。

这里推荐你访问 https://certbot.eff.org/ 网站,使用 certbot 工具来自动配置。

登录系统后,根据你实际站点的运行环境选择 web 容器,运行操作系统,如下图所示:

image-20200629164450367

选择之后,下方会自动出现操作步骤,你只需要按操作步骤在你系统上执行相应的命令即可。

注意,命令执行之前你的域名已经配置解析到你的VPS并且已经生效,否则生成证书过程会失败。

以下是配置好后,linux265.conf 的配置文件内容,供参考!

# Redirect HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# Redirect WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    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/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

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

    # SSL parameters
    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/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }
}

运行以下命令来验证配置文件的正确性:

sudo nginx -t

如果检测没有问题,可以通过以下命令重新载入配置文件:

sudo nginx -s reload

如果你想重新启动nginx服务,可以通过以下命令:

sudo systemctl restart nginx

第六步、安装 Wordpress

安装Wordpress之前,需要先创建对应数据库及帐号用于安装wordpress使用。

sudo mysql

创建 Wordpress运行需要的数据库和帐号,这里使用的数据库名wdpressdb,用户名wdpressuser,密码WdPress&Password123 可以根据自己需要修改。

CREATE DATABASE wdpressdb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;CREATE USER 'wdpressuser'@'localhost' IDENTIFIED BY 'WdPress&Password123';GRANT ALL ON wdpressdb.* TO 'wdpressuser'@'localhost' IDENTIFIED BY 'WdPress&Password123';GRANT ALL PRIVILEGES ON *.* TO 'wdpressuser'@'localhost';

需要注意,这里使用的默认安装的 MySQL 8.0.20。

成功创建完成后,输入以下命令,更新变更。

FLUSH PRIVILEGES;

最后,我们开始下载wordpress软件包,并部署wordpress,我们先通过cd命令转入tmp目录。

cd tmp

使用curl命令下载最新版本的wordpress。

curl -O https://wordpress.org/latest.tar.gz

下载完成后,通过tar命令解压软件包。

sudo tar xzvf latest.tar.gz

解压后,通过cd命令进入wordpress目录,使用mv命令重命名 wp-config-sample.php 文件为 wp-config.php

cd /tmp/wordpresssudo mv /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

通过cp命令将文件内容拷贝到/var/www/html/example.com目录中。

sudo cp -a /tmp/wordpress/. /var/www/html/example.com

为避免任何权限问题,我们可以将域文档根目录的所有权使用chown命令更改为 apache 用户(www-data):

sudo chown -R www-data: /var/www/html/example.com

至此,配置完成,下一步我们将进入 Wordpress 运行配置界面。

在浏览器中输入https://example.com(你自己的域名),你会看到如下配置界面:

点击 “Let `s go!”,进入数据库连接配置界面,如下图所示:


image

这里我们输入之前创建的数据库,用户名,密码。点击 “Submit”,继续。

image

出现这个界面,点击 "Run the installation",继续。

image

这里就输入站点名称,管理帐号名称及密码,email等内容后,点击"Install Wordpress"完成Wordpress安装。 至此,我们完成了Wordpress的安装,来看下默认的效果界面。 地址输入:https://example.com ,效果如下:

(这里的域名仅做验收使用,实际情况下需要你配置自己的域名)

剩下的事情就是登录 Wordpress 的管理界面,安装你喜欢的主题,开始你的 Wordpress 之旅吧。

写在最后

本教程详细讲解了如何在 Ubuntu 20.04 上搭建 LEMP 环境运行 WordPress 的方法,通过本教程你应该学会了如何在 VPS 上使用 Wordpress 建站。

如果你有不清楚的地方,欢迎留言讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,265评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,274评论 1 288
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,087评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,479评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,782评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,218评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,594评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,316评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,955评论 1 237
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,274评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,803评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,177评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,732评论 3 229
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,953评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,687评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,263评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,189评论 2 258