Ubuntu22.04安装LEMP堆栈(Nginx + MariaDB + PHP)教程
Ubuntu22.04安装WordPress教程(利用nginx环境和MariaDB数据库,安装使用WordPress)
本教程将展示如何在 Ubuntu22.04 上安装 LEMP 堆栈。
一个软件堆栈是捆绑在一起的一组软件工具。
LEMP 代表 Linux、Nginx (Engine-X)、MariaDB/MySQL 和 PHP,所有这些都是开源的,可以免费使用。它是为动态网站和 Web 应用程序提供支持的最常见软件堆栈。
Linux 是操作系统;
Nginx 是 Web 服务器;
MariaDB/MySQL是数据库服务器,
PHP是负责生成动态网页的服务器端脚本语言。
第 1 步:更新软件包
udo apt update && sudo apt upgrade -y
第 2 步:安装 Nginx Web 服务器
Nginx 是一种当前非常流行的高性能 Web 服务器。它也可以用作反向代理和缓存服务器。输入以下命令安装 Nginx Web 服务器。
sudo apt install nginx
安装后,我们可以通过运行以下命令使 Nginx 在启动时自动启动。
sudo systemctl enable nginx
然后使用以下命令启动 Nginx:
sudo systemctl start nginx
检查它的状态。
sudo systemctl status nginx
输出:
"Enabled"表示启用了启动时自动启动,我们可以看到 Nginx 正在运行。您还可以从输出中查看 Nginx 使用了多少 RAM。如果上述命令在运行后没有立即退出。您需要按"q"使其退出。
ubuntu默认是ufw防火墙,可能存在防火墙阻止对TCP端口80的传入请求,需要运行以下命令来打开 TCP 端口 80。
sudo ufw allow http
最后,让(Nginx 用户)成为 Web 目录的所有者。默认情况下,其权限归 root 用户所有。
sudo chown www-data:www-data /usr/share/nginx/html -R
第 3 步:安装 MariaDB 数据库服务器
MariaDB是MySQL的直接替代品。它是由MySQL团队的前成员开发的,他们担心Oracle可能会将MySQL变成一个闭源产品。输入以下命令在 Ubuntu 上安装 MariaDB
sudo apt install mariadb-server mariadb-client
安装后,MariaDB服务器应该会自动启动。使用 systemctl 检查其状态。
sudo systemctl status mariadb
输出:
如果它未运行,请使用以下命令启动它:
sudo systemctl start mariadb
要使 MariaDB 在启动时自动启动,需运行
sudo systemctl enable mariadb
第 4 步:安装 PHP
输入以下命令安装 PHP 和一些常用扩展。
sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-cli php8.1-common php-json p php8.1-readline php8.1-mbstring php8.1-xml php8.1-gd php8.1-curl
WordPress等内容管理系统(CMS)通常需要PHP扩展。例如,如果你的安装缺少 ,那么您的某些 WordPress 网站页面可能是空白的,可以在 Nginx 错误日志中找到错误
安装完上述扩展后启动启动 php-fpm。
sudo systemctl start php-fpm
在启动时启用自动启动。
sudo systemctl enable php-fpm
检查状态:
sudo systemctl status php-fpm
若状态为active(running) 即可
第 5 步:创建 Nginx 服务器块
Nginx 服务器块就像 Apache 中的虚拟主机。这里不会使用默认的服务器块,因为它不足以运行 PHP 代码,如果我们直接修改默认文件,会很容易变得乱七八糟。简单起见,这里直接通过运行以下命令删除目录中的符号链接。
sudo rm /etc/nginx/sites-enabled/default
然后使用像 vim 这样的文本编辑器在 /etc/nginx/conf.d/ 目录下创建一个全新的服务器文件。
sudo vim /etc/nginx/conf.d/default.conf
将以下文本粘贴到文件中。以下代码片段将使 Nginx 监听 IPv4 端口 80 和 IPv6 端口 80,并使用 catch-all 服务器名称。
8
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
保存并关闭文件。然后测试 Nginx 配置。
sudo nginx -t
如果测试成功,需重新加载 Nginx。
sudo systemctl reload nginx
至此,LEMP堆栈安装完毕
环境:ubunutu22.04.2LTS
利用nginx环境和MariaDB数据库,安装使用WordPress
前置条件
本教程需要已经在 Ubuntu 20.04 上设置了 LEMP 堆栈。如果没有,请查看以下教程。
-如何在ubuntu22.04上安装 LEMP堆栈(Nginx,MairaDB,PHP)
完成缺省的安装后,请返回此处继续阅读。
第 1 步:下载 WordPress
更新现有软件
sudo apt update && sudo apt upgrade
在终端中,键入 wget 命令,输入链接 ,下载wordpress
wget https://wordpress.org/latest.zip
随后使用以下命令解压缩下载的wordpress zip文档
sudo apt install unzip
sudo mkdir -p /usr/share/nginx
sudo unzip latest.zip -d /usr/share/nginx/
文档将被提取到 /usr/share/nginx/ 目录中,并创建一个新目录( /usr/share/nginx/wordpress )
第 2 步:为 WordPress 网站创建数据库和用户
使用以下命令以 root 身份登录 MariaDB shell。
sudo mariadb -u root
登录后,使用以下命令为 WordPress 创建数据库。
create database wordpress;
然后输入以下命令为 WordPress 创建数据库用户。此命令还向用户授予 WordPress 数据库的所有权限。将 用户名和密码 替换为你自己要设置的用户名和密码。
grant all privileges on wordpress.* to 用户名@localhost identified by '密码';
刷新权限表以使更改生效,然后退出 MariaDB shell。
flush privileges;
exit;
注:上述代码指令部分全大写或全小写
第 3 步:配置 WordPress
转到WordPress 所在目录。
cd /usr/share/nginx/wordpress/
复制示例配置文件并将其重命名为 :wp-config.php
sudo cp wp-config-sample.php wp-config.php
现在使用文本编辑器(如 vim)编辑新的配置文件。
sudo vim wp-config.php
找到以下行,并将下方中文文本替换为您在上一步中创建的数据库名称、用户名和密码。
/** The name of the database for WordPress */
define('DB_NAME', '这里填你自己创建的数据库名称');
/** MySQL database username */
define('DB_USER', '这里是你自己创建的用户名');
/** MySQL database password */
define('DB_PASSWORD', '这里是你自己设置的密码');
我们还需要使用以下命令将 Nginx 用户设置为 WordPress 站点目录的所有者。
sudo chown www-data:www-data /usr/share/nginx/wordpress/ -R
第 4 步:为 WordPress 创建 Nginx 服务器块
在目录中创建服务器块文件
sudo vim /etc/nginx/conf.d/wordpress.conf
将以下文本放入文件中
server {
listen 80;
listen [::]:80;
server_name www.wordpress wordpress;
root /usr/share/nginx/wordpress/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ ^/wp-json/ {
rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}
location ~* /wp-sitemap.*\.xml {
try_files $uri $uri/ /index.php$is_args$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
client_max_body_size 20M;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
fastcgi_buffers 1024 4k;
fastcgi_buffer_size 128k;
# Add headers to serve security related headers
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Permitted-Cross-Domain-Policies none;
add_header X-Frame-Options "SAMEORIGIN";
}
#enable gzip compression
gzip on;
gzip_vary on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_types application/json text/css application/x-javascript application/javascript image/svg+xml;
gzip_proxied any;
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
}
保存并关闭文件。然后测试 Nginx 配置。
sudo nginx -t
如果测试成功,请重新加载 Nginx。
sudo systemctl reload nginx
在浏览器地址栏中如下输入。
localhost/wp-admin/install.php
如果未显示安装向导,则可能需要安装一些 PHP 扩展。
sudo apt install php-imagick php-fpm php-mbstring php-bcmath php-xml php-mysql php-common php-gd php-json php-cli php-curl php-zip
然后重新加载 PHP-FPM 和 Nginx服务。现在应该显示向导。
sudo systemctl reload php8.1-fpm nginx
第5步:使用安装向导完成安装
如图填写信息创建一个管理员帐户,然后单击页面左下角"安装 WordPress"按钮。
第6步:启用 HTTPS
要加密 HTTP 流量,我们可以通过安装 Let's Encrypt 颁发的免费 TLS 证书来启用 HTTPS。运行以下命令以在 Ubuntu 22.04上安装 Let's Encrypt 客户端 (certbot)。
sudo apt install certbot python3-certbot-nginx
并运行此命令以获取并安装 TLS 证书。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d domainname1,domainname2
--nginx:使用 Nginx 插件。
--agree-tos:同意服务条款。
--redirect:强制 HTTPS by 301 重定向。
--hsts:将 Strict-Transport-Security 标头添加到每个 HTTP 响应中。强制浏览器始终对域使用 TLS。防御 SSL/TLS 剥离。
--staple-ocsp:启用 OCSP 装订。有效的 OCSP 响应将装订到服务器在 TLS 期间提供的证书中。
--email:用于注册和恢复联系人的电子邮件。
-d 后跟一个域名列表,用逗号分隔。最多可以添加 100 个域名。
重新加载WordPress设置向导,即可看到HTTP自动重定向到HTTPS连接。