个人博客搭建

wordpress个人博客搭建

一.LNMP环境的搭建

LNMP: L(Linux)、N(Nginx)、MySQL(MariaDB)、PHP\Python\Perl 用于搭建 Web 服务器环境的缩写

1.1 LNMP介绍

  • Linux(L):Linux操作系统核心组件

    • 功能

      • 提供服务器硬件和软件之间的接口

    • 特点:高度可定制、稳定性高、支持多用户多任务、广泛的社区支持

  • Nginx(N): 高性能的Web服务器和反向代理服务器

    • 功能

      • 提供高并发、低内存消耗及高度可扩展的服务

      • 可以处理静态资源,同时也可以代理动态请求到后端的应用服务器

    • LNMP中的作用

      • 负责接收用户的请求,并将请求分发给后端的应用服务器,比如 PHP-FPM

    • 特点:处理静态文件、索引文件和自动索引高效;低内存消耗;设置简单;支持反向代理、负载均衡和HTTP缓存

  • MySQL/MariaDB(M):关系型数据库管理系统

    • 功能

      • 存储和管理应用程序的数据

    • LNMP中作用

      • 负责处理应用程序与数据库之间的数据交互

  • PHP/Python/Perl(P):表示一种服务器端脚本语言

    • LNMP中作用

      • 与 Web 服务器(通常是 Nginx)集成,处理动态请求,生成并返回动态内容给用户

      • 通常使用PHP-FPM(FastCGI Process Manager)来处理 PHP 脚本

1.2 工作流程

  • 用户请求

    • 通过web浏览器发起请求,通过互联网发到托管LNMP堆栈的服务器

  • Nginx处理请求

    • 若为静态内容(图片、CSS文件、JavaScript文件等),直接从文件系统检索文件并返回给用户

    • 若为动态内容请求(PHP、Python或Perl脚本),Nginx将请求转发给相应处理器(如PHP-FPM)

  • 动态内容处理

    • 通过PHP-FPM(FastCGI Process Manager)处理

    • PHP脚本可能从数据库检索或存储数据,数据库服务器响应对应请求返回结果给PHP处理器,PHP处理器处理完后生成HTML、JSON或其他格式的响应数据传回Nginx,Nginx收到后发回请求的客户端

  • 用户接受响应

    • Web浏览器接收到Nginx服务器发送的数据,处理并显示给用户

1.3 LNMP环境搭建及wordpress下载

安装软件前先更新下系统包 sudo apt update sudo apt upgrade -y

  • Linux

    • Ubuntu Server 22.04 LTS 64bi 系统

    • 腾讯云服务器

  • Nginx安装

    • sudo apt install nginx -y

      • -y 安装过程中自动回复是

      • 等安装完使用nginx -v 查看版本若有则安装正常

    • 启动并使Nginx服务在系统启动时自动运行

  • MySQL或MariaDB安装

    • MySQL

      • 安装MySQL服务器

        • sudo apt install mysql-server -y

      • 运行安全安装脚本设置MySQL

        • sudo mysql_secure_installation

          • 设置root密码(保护root账户)

          • 移除匿名用户(安装默认有一个匿名用户,允许任何人登录到MySQL而不需要用户名)

          • 禁止root远程登录

          • 移除测试数据库:默认会生成一个test数据库,任何人都可访问

          • 重新加载权限表:使设置生效

      • 检查MySQL服务是否运行

        • sudo systemctl status mysql.service

          • 若没有运行,输入一下命令启动服务

            • sudo systemctl start mysql

    • MariaDB

      • 安装MariaDB

        • apt install mariadb-server

      • 运行安全安装脚本设置MySQL

        • sudo mysql_secure_installation

      • 检查服务状态

        • sudo systemctl status mariadb

          • 若没运行,输入一下命令启动服务

            • sudo systemctl start mariadb

      • 设置MariaDB启动时运行

        • sudo systemctl enable mariadb

          MySQL也可设置

  • PHP安装

    • sudo apt install php-fpm php-mysql php-xml php-xmlrpc php-gd php-curl php-mbstring -y

      • php-fpm(PHP FastCGI Process Manager):用于高性能网站,提供了一个健壯的、高效的方式来运行PHP代码

      • php-mysql:提供PHP通过MySQL或MariaDB数据库进行操作的能力

      • php-xml:提供操作XML文件的能力,对于需要解析、生成XML文件的应用是必需的

      • php-xmlrpc:使PHP支持XML-RPC,一种远程过程调用协议

      • php-gd:提供对图像处理的支持,例如创建缩略图、处理JPEG、PNG等格式的图片'

      • php-curl:提供PHP访问网络资源的能力,如通过HTTP、FTP等协议获取网页内容

        • 应用需要访问外部API或网页,这个扩展是必需的

      • php-mbstring:提供多字节字符串处理的功能,对于处理非ASCII字符集(如UTF-8)是必需的

    • 启动PHP-FPM服务

      • systemctl start phpX.X-fpm

      • systemctl enable phpX.X-fpm X.X为安装的php版本

  • wordpress下载

    • 将wordpress安装在/var/www/html

      • 安装目录理论上可任意,只要之后web服务器配置正确指向该目录即可

      • 到/var/www/html目录:cd /var/www/html

      • 下载wordpress最新中文版

      • 解压

        • unzip latest-zh_CN.zip

          • 解压到当前目录,若要指定目录需加参数-d

            • 如:unzip latest-zh_CN.zip -d /var/www/html *到此步,LNMP及wordpress相关软件都已安装完毕,之后对他们关于wordpress进行相关配置

1.4wordpress及LNMP相关配置

  • Nginx配置

    • 找到Nginx默认配置文件,一般在/etc/nginx

    • 打开配置文件:nginx.conf

      • sudo vim nginx.conf

        • 默认内容如下:

          • 其中 user www-data表示运行Nginx工作进程的默认用户

          • pid /run/nginx.pid 指定Nginx主进程的PID存储文件位置

          • include…… 表示包含此目录下的所有以conf结尾的配置文件

          • event{...} : event块

            • 用于指定与工作进程和连接处理相关的设置

            • worker_conections 768; 表示每个工作进程可以同时处理最对多768个网络连接

            • multi_accept oh:每个工作进程在被通知有新的连接请求时,将接受所有新的连接请求,而不是一次只接受一个

          • http{...}:http块

            • 用于定义HTTP服务器的全局配置,包括文件传输、日志记录、压缩等设置

            • 基本设置

              • sendfile on:启用高效文件传输,直接在内核中传输文件,减少CPU负担

              • tcp_nopush on:将多个小的网络合并为大的网络包发送,减少网络传输开销

              • types_hash_max_size 2048;:设置最大的types哈希表大小,这可以在有很多MIME类型时提高性能

              • include /etc/nginx/mime.types;:包含MIME类型的定义文件,告诉Nginx如何处理不同类型的文件

              • default_type application/octet-stream;:设置默认的MIME类型。如果请求的文件类型未在mime.types文件中定义,则使用此默认类型

            • SSL设置

              • ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;:定义允许的SSL协议版本,这里推荐使用TLSv1.2和TLSv1.3,同时避免使用已被认为不安全的协议(如SSLv3)。

              • ssl_prefer_server_ciphers on;:确保服务器优先选择加密套件,这样可以使用更安全的选项

            • 日志设置

              • access_log /var/log/nginx/access.log;:定义访问日志的存储位置。

              • error_log /var/log/nginx/error.log;:定义错误日志的存储位置

            • Gzip设置

              • gzip on;:启用gzip压缩,减少传输数据的大小,提高加载速度。注释掉的部分提供了进一步的gzip配置选项,例如调整压缩级别、指定哪些类型的响应应该被压缩等

            • 虚拟主机配置

              • include /etc/nginx/conf.d/*.conf;:自动包含/etc/nginx/conf.d/目录下的所有.conf文件。这个目录通常用于存放具体站点的配置。

              • include /etc/nginx/sites-enabled/*;:包含/etc/nginx/sites-enabled/目录下的配置文件,这是一个常见的做法,用于启用特定的网站配置(之后新增配置文件就在此处

      • 此配置文件为全局配置文件,不对其作修改,只是大概看下整体框架,其余.conf文件都是包含在其中,现在需要增加的配置文件就在/etc/nginx/sites-enabled/目录下的default

      • 总结:

        • Nginx的 nginx.conf配置文件结构

          • 全局块:文件最开始,配置用户、工作进程数等

          • events块

          • http块

            • 其中包含多个子块和指令:

              • server块:服务器块。定义一个或多个服务器,每个服务器可以监听一个端口并处理特定的域名请求。

                • location块:位置块,用于根据请求的URI匹配不同的处理规则

                  • 服务器块可以包含多个位置(location)块

              • upstream块:上游块。定义一组服务器,用于负载均衡

              • include:引入其他配置文件,常用于模块化管理虚拟主机配置

              • 日志、压缩、缓存设置:配置访问日志(access_log)、错误日志(error_log)、启用gzip压缩(gzip)等

          • mail块:使用Nginx作为邮件代理服务器,这个块用于配置邮件服务相关的设置,如认证方式、SSL配置等

            • 不常见,通常被注释掉

          • steam块:用于配置TCP/UDP流处理,如负载均衡、端口转发等(这也是一个高级功能,不是所有配置都会用到)

    • /etc/nginx/sites-enabled/下default的配置(需要做修改的配置文件)

      • 配置思路:主要是监听80端口(http),并对此端口的请求处理做出规定

      • 主要就是配置server块(包含于nginx.conf中的http块):

        • 配置监听端口80对IPv4和IPv6的请求;

          • default_server 表面如果没有其他服务器模块匹配到请求,这个块将作为默认回应

        • 设置网站文件根目录和首页

          • 根目录:根据安装解压wordpress的位置配置:root /var/www/html/wordpress;

          • 首页:index index.php;:指定index.php作为默认的主页文件

        • 服务器名称和日志文件

          • 服务器名称:server_name xxx.xxx.xxx.xxx;:意味着这个服务器块将接受xxx.xxx.xxx.xxx的请求,若已注册域名,则可将xxx.xxx.xxx.xxx替换为自己的域名,比如:我的博客域名:aisrtech.top 或www.asirtech.top;可并列添加多个域名,中间由空格隔开(如:`server_name aisrtech.top www.asirtech.top)

        • 设置客户端请求体大小

          • client_max_body_size 128M;:设置客户端请求的最大允许体积为128MB,这对于允许上传大文件至WordPress网站非常有用

        • 处理普通请求的位置块

          • location / { try_files $uri $uri/ =404; }:这个location块试图将请求定向到对应的静态文件。如果没有找到文件或目录,则返回404错误

        • 处理PHP文件的位置块:

          • location ~ \.php$ { ... }:这个location块用于处理所有以.php结尾的请求。它通过fastcgi_pass指令将请求转发到PHP的FastCGI进程管理器(FPM),这里是指向php8.1-fpm的socket文件。fastcgi_intercept_errors on;允许Nginx处理来自FastCGI服务器的错误。

      • 具体配置文件如下:

      • 配置好后测试并重启服务:

        • nginx -t

        • systemctl reload nginx

  • 数据库配置(MariaDB为例子)

    • 登陆mysql:

      • sudo mysql -u root -ps

    • 建立一个wordpress数据库

      • CREATE DATABASE wordpress;

      • 执行MySQL语句记得最后加封号结束命令

    • 建立用户,设定用户名及密码:

      • CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

    • 将wordpress数据库的权限赋予username

      • GRANT ALL PRIVILEGES ON wordpress.* TO 'username'@'localhost';

    • 刷新权限即可推出MySQL

      • FLUSH PRIVILEGES;

  • 配置wordpress

    • 在安装目录(/var/www/html/wordpress)下,安装完由名为wp-config-sample.php(模板,真正调用的是wp-config.php),将其做修改并改名为wp-config.php即可配置调用

    • 修改其中的数据库的名称、用户名和密码即可:如下图

      • 使用命令:sudo vim /var/www/html/wordpress/wp-config-sample.php

      • 保存后改名:sudo mv /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php 即可

    • 修改wordpress目录权限

      • 确保网络服务器能够访问,一般将wordpress所有文件所属用户和组改为www-data

        • sudo chown -R www-data:www-data /var/www/html/wordpress

  • PHP配置

    • 修改php.ini(位于/etc/php/X.X/fpm/php.ini X.X为所安装php版本)可更改脚本相关配置:

      • 可更改以下几项

到此LNMP及wordpress便全部配置完毕

1.5在客户端访问IP地址并安装wordpress

  • 本地浏览器输入对应域名或IP地址即可进入wordpress安装界面,安装好后基本网站就搭建好了

  • 注意开放云服务器的80(HTTP)端口,否则不能访问

    • 填写基本信息安装即可

    • 安装完毕后既可进去wordpress后台

 

 

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部