温馨提示×

如何使用LNMP搭建博客

小樊
35
2025-10-26 12:24:25
栏目: 编程语言

一、准备工作
确保你有一台运行Linux(如Ubuntu 22.04/20.04、CentOS 7/8)的服务器,且具备root或sudo权限。提前准备好域名(可选,用于后续绑定),并确保服务器网络畅通。

二、安装LNMP组件

1. 更新系统

运行以下命令更新系统软件包,确保后续安装的组件兼容性:

sudo apt update && sudo apt upgrade -y  # Ubuntu/Debian
# 或
sudo yum update -y                      # CentOS/RHEL

2. 安装Nginx(Web服务器)

安装Nginx并启动服务,设置开机自启:

sudo apt install nginx -y               # Ubuntu/Debian
# 或
sudo yum install nginx -y               # CentOS/RHEL
sudo systemctl start nginx
sudo systemctl enable nginx

安装完成后,在浏览器访问服务器IP,若看到Nginx欢迎页面,说明安装成功。

3. 安装MySQL/MariaDB(数据库)

选择MySQL或MariaDB作为数据库(两者用法类似,推荐MariaDB):

sudo apt install mariadb-server -y      # Ubuntu/Debian(推荐)
# 或
sudo yum install mariadb-server -y      # CentOS/RHEL
sudo systemctl start mariadb
sudo systemctl enable mariadb

运行安全脚本强化数据库安全(设置root密码、删除匿名用户、禁止root远程登录等):

sudo mysql_secure_installation

4. 安装PHP(后端语言)

安装PHP及常用扩展(需包含php-fpmphp-mysql,用于支持WordPress等博客系统):

sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml -y  # Ubuntu/Debian
# 或
sudo yum install php php-fpm php-mysqlnd -y                              # CentOS/RHEL
sudo systemctl start php7.4-fpm  # 根据PHP版本调整(如Ubuntu 22.04为php8.1-fpm)
sudo systemctl enable php7.4-fpm

关键配置:编辑PHP-FPM池配置文件(路径如/etc/php/7.4/fpm/pool.d/www.conf),确保listen指令与Nginx配置一致(如listen = /run/php/php7.4-fpm.sock)。

三、配置Nginx支持PHP
编辑Nginx默认站点配置文件(路径如/etc/nginx/sites-available/default),在server块中添加PHP处理逻辑:

sudo nano /etc/nginx/sites-available/default

修改后的server块内容如下(重点关注location ~ \.php$部分):

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html;
    index index.php index.html index.htm;
    server_name _;  # 若有域名,替换为你的域名(如blog.example.com)

    location / {
        try_files $uri $uri/ =404;
    }

    # PHP处理配置
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;  # 根据PHP版本调整路径
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问.htaccess文件
    location ~ /\.ht {
        deny all;
    }
}

保存退出后,测试Nginx配置语法是否正确:

sudo nginx -t

若输出“syntax is ok”,则重新加载Nginx使配置生效:

sudo systemctl reload nginx

四、创建数据库与用户
登录MySQL/MariaDB,创建专门用于博客的数据库和用户(避免使用root账户):

sudo mysql -u root -p

在MySQL shell中执行以下命令(将blog_dbblog_useryour_password替换为你的实际名称和密码):

CREATE DATABASE blog_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON blog_db.* TO 'blog_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

五、部署WordPress(博客系统)
以WordPress为例(最流行的PHP博客系统),部署步骤如下:

  1. 下载并解压WordPress:
cd /var/www/html
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzvf latest.tar.gz
sudo mv wordpress/* .  # 将WordPress文件移动到网站根目录
sudo rm -rf wordpress latest.tar.gz  # 删除临时文件
  1. 配置WordPress数据库连接:
    复制wp-config-sample.phpwp-config.php,并编辑该文件:
sudo nano /var/www/html/wp-config.php

修改以下参数(对应数据库信息):

define('DB_NAME', 'blog_db');
define('DB_USER', 'blog_user');
define('DB_PASSWORD', 'your_password');
define('DB_HOST', 'localhost');
  1. 设置文件权限:
    确保Web服务器用户(通常为www-data)对WordPress目录有读写权限:
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;

六、完成博客安装

  1. 在浏览器访问服务器IP或域名(如http://your_domain.com),将进入WordPress安装向导。
  2. 选择语言(如中文),点击“继续”。
  3. 输入之前创建的数据库信息(数据库名、用户名、密码),点击“提交”→“运行安装程序”。
  4. 设置博客标题、管理员账号(建议使用强密码)、邮箱等信息,完成安装。

七、安全优化(可选但重要)

  1. 安装SSL证书(启用HTTPS):使用Let’s Encrypt免费获取SSL证书,提升网站安全性:
sudo apt install certbot python3-certbot-nginx -y  # Ubuntu/Debian
sudo certbot --nginx -d your_domain.com -d www.your_domain.com  # 替换为你的域名

按照提示完成证书安装,Certbot会自动配置Nginx重定向HTTP到HTTPS。

  1. 配置防火墙:若使用UFW(Uncomplicated Firewall),允许HTTP(80)和HTTPS(443)流量:
sudo ufw allow 'Nginx Full'
sudo ufw enable
  1. 定期更新:定期运行sudo apt update && sudo apt upgrade -y(或CentOS对应的yum update -y),更新系统和软件包,修复安全漏洞。

通过以上步骤,你已成功使用LNMP搭建了一个功能完整的WordPress博客。可根据需求进一步定制主题、安装插件(如Yoast SEO、Akismet)或优化性能(如开启OPcache、缓存插件)。

0