LCMP(Linux + Caddy + Mariadb + PHP)是一种Web服务器堆栈,可以在Linux操作系统上运行,并包括Caddy作为Web服务器,MariaDB作为数据库管理系统和PHP作为服务器端脚本语言。

MariaDB是MySQL的一个分支,具有高性能、可靠性和安全性,被广泛用于Web应用程序中。与MySQL类似,MariaDB也是一个关系型数据库管理系统,可以处理大量的数据并支持多种数据类型和查询语言。

LCMP C为caddy M为mariadb意味着在LCMP堆栈中,使用Caddy作为Web服务器,MariaDB作为数据库管理系统。相对于传统的Web服务器和数据库管理系统,使用Caddy和MariaDB作为LCMP堆栈的组件可以更轻松地搭建和管理Web应用程序,同时保证高性能和安全性。此外,由于MariaDB是MySQL的一个分支,它们之间有很多相似之处,因此开发人员可以使用熟悉的MySQL语言和工具来管理和查询MariaDB数据库。

这里以Debian11系统为例,来演示怎么安装lcmp并搭建typecho服务器

准备工作

安装必要的软件

apt update
apt upgrade -y
apt install -y screen sudo wget curl zip unzip

安装Caddy

下面两个二选一

稳定版本:

sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

测试版本(包括 beta 和候选版本):

sudo apt update
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-testing-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/testing/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-testing.list
sudo apt update
sudo apt install caddy

检查caddy是否成功安装

sudo systemctl status caddy

设置caddy开机自启

sudo systemctl enable caddy

安装Mariadb

apt update
apt install -y mariadb-server

检查caddy是否成功安装

sudo systemctl status mariadb

设置mariadb开机自启

sudo systemctl enable mariadb

初始化Mariadb

mysql_secure_installation

输入初始化命令的时候会提示

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 

直接按enter跳过

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] 

切换到 UNIX 套接字身份验证 输入 Y

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] 

是否更改mariadb的root密码输入 Y 后输入你需要更改的密码

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] 

是否删除anonymous账户 输入 Y

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 

是否不允许远程登录root账户 输入 Y

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] 

是否要移除test数据库 输入 Y

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 

是否立即重载数据库 输入 Y

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Maria DB已经初始化完成了

安装PHP

apt -y install php-fpm php-mysql php-mbstring php-curl php-iconv

可选安装

Sqlite3

apt -y install php-sqlite3

由于typecho支持sqlite3数据库。如果你的内存较小可以选择使用sqlite3而不去使用Mariadb,这样有助于节省内存。

SQLite3 是一个轻量级、自包含的嵌入式关系型数据库管理系统(RDBMS),它的数据存储在一个单一的、普通的磁盘文件中。它是一款开源软件,已经成为了世界上最广泛使用的数据库之一。

SQLite3 具有以下几个特点:

  1. 轻量级:SQLite3 的核心代码非常小,且不需要额外的服务器进程或操作系统服务,因此它非常适合在资源受限的环境中使用,比如嵌入式设备和移动设备。
  2. 事务支持:SQLite3 支持 ACID 事务(原子性、一致性、隔离性、持久性),确保数据的完整性和一致性。
  3. 丰富的数据类型:SQLite3 支持多种数据类型,包括 NULL、INTEGER、REAL、TEXT 和 BLOB。
  4. 嵌入式:SQLite3 不需要一个单独的数据库服务器进程,它的库文件可以直接链接到应用程序中,这使得它可以作为一个嵌入式库使用,而不需要安装或配置额外的软件。
  5. 跨平台:SQLite3 可以在多种操作系统上运行,包括 Windows、Linux、Mac OS X、iOS 和 Android 等。

SQLite3 还具有非常简单的语法和易于使用的 API,使得开发人员可以很容易地将其集成到自己的应用程序中。因此,SQLite3 被广泛应用于移动应用、桌面应用、Web 应用程序和嵌入式系统等各种场景中。

PHP8.2可选

PHP 8.2 建立在PHP 8.0和PHP 8.1提出的更新基础之上。计划于2022年11月24日发布。

PHP 8.2是PHP语言的最新版本。新特性包括,只读类,允许布尔值作为独立类型等。从mysqli中删除libmysql的支持等。

使用PHP8.2实测比Debian11 apt源中的PHP7.4要快不少。PHP8.2可以与PHP7.4共存,你可以选择安装PHP7.4也可以选择安装PHP8.2或者是全部安装。

下面是PHP8.2的安装步骤

sudo apt update
sudo apt-get install ca-certificates apt-transport-https software-properties-common -y
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -
sudo apt-get update -y
sudo apt-get install php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-curl php8.2-iconv php8.2-sqlite3 -y

验证PHP是否成功安装

输入 php -version 有以下提示则代表成功安装

PHP 7.4.33 (cli) (built: Feb 22 2023 20:07:47) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.33, Copyright (c), by Zend Technologies

注意!系统不同apt源中的PHP版本可能有区别 正常来说Typecho1.2版本需要PHP 7.2 以上版本

Typecho1.1版本需要PHP5.6及以上版本

安装 Typecho

Typecho 是一款简单、轻量级的个人博客程序,使用 PHP 和 MySQL/MariaDB 存储数据。你可以从官网下载 Typecho 的最新版,然后解压到 Web 服务器的根目录下 或者使用下面的指令

cd /home
mkdir www
cd ./www
mkdir typecho
cd ./typecho
wget  --no-check-certificate "https://github.com/typecho/typecho/releases/latest/download/typecho.zip"

github对于国内网络环境并不是太友好,你可以在官网下载后上传至/home/www/typecho目录

下载完成后需要解压typecho安装包

unzip typecho.zip

安装好后需要删除typecho.zip

sudo rm -f typecho.zip

配置caddy

打开 Caddy 的配置文件 /etc/caddy/Caddyfile,添加以下内容:

metahub.top {
    root /home/www/typecho
    php_fastcgi unix//run/php/php7.4-fpm.sock
    rewrite / {
        to {path} {path}/ /index.php?{query}
    }
}

将上述命令中的 metahub.top 替换为你的域名,并将 PHP FastCGI 的 sock 文件路径改为你的实际路径。

重载caddy使其配置生效

systemctl restart caddy

可选 开启tls

  1. 确保已经在Caddyfile中添加了要使用的域名或IP地址的配置,并且已经安装了相应的SSL证书。
  2. 在Caddyfile中为相应的域名或IP地址添加tls指令,如下所示:

    metahub.top {
        root /home/www/typecho
        php_fastcgi unix//run/php/php7.4-fpm.sock
        rewrite / {
            to {path} {path}/ /index.php?{query}
        }
        tls {
            # 证书文件路径
            cert_file /path/to/cert.pem
            # 私钥文件路径
            key_file /path/to/key.pem
        }
        # 其他Caddy配置指令
    }

    其中,cert_filekey_file是SSL证书文件的路径,可以使用自己的证书文件,也可以使用免费的Let's Encrypt证书。如果使用Let's Encrypt证书,可以使用Caddy自带的ACME协议自动化证书管理功能,只需要添加以下指令:

    metahub.top {
        root /home/www/typecho
        php_fastcgi unix//run/php/php7.4-fpm.sock
        rewrite / {
            to {path} {path}/ /index.php?{query}
        }
         tls {
       dns cloudflare {env.CLOUDFLARE_API_TOKEN}
         }
        # 其他Caddy配置指令
    }

    这将启用Caddy的自动HTTPS功能,并使用Cloudflare DNS验证您的域名。 {env.CLOUDFLARE_API_TOKEN}是指向您的Cloudflare API令牌的环境变量。您需要将其设置为适当的值。

  3. 重新加载Caddy配置文件,使其生效。

    sudo systemctl restart caddy

配置 MariaDB

登录 MariaDB:

sudo mysql -u root -p

输入之前设置的 root 密码后,执行以下命令:

CREATE DATABASE typecho;
GRANT ALL PRIVILEGES ON typecho.* TO 'typecho'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
exit;

将上述命令中的 your_password 替换为你自己设置的密码。

配置 Typecho

访问 http://metahub.top/install.php,按照提示进行安装。在安装过程中,需要填写 MariaDB 的数据库名、用户名和密码,以及你的网站信息和管理员信息等。

完成上述步骤后,你就可以通过 http://metahub.top 访问 Typecho

最后修改:2024 年 01 月 08 日
如果觉得我的文章对你有用,请随意赞赏