歲月留聲

Debian 12 bookworm手工安装LNMP建站环境

LNMP 一键安装包 (lnmp.org 提供) 日前被安全公司安恒信息发现供应链投毒,前阵子 OneinStack 也有过类似风险,看来还是得学学手动安装 Web 环境「LNMP 建站环境」。

「Debian 12 bookworm手工安装LNMP建站环境:https://0xo.net/650」

Debian 12 bookworm手工安装LNMP建站环境 - 第1张图片

Debian 12 代号 Bookworm(书虫)。OneinStack 和 lnmp.org 都提供 LNMP(即 Linux + Nginx + MySQL + PHP)一键安装诸多组件,减少手动下载安装各个组件以及配置文件修改等操作,确实很方便。不过这个方便的同时有一定风险……

下面记录一下 Debian 12 bookworm 手工安装 LNMP 建站环境操作步骤。点此查看 Debian 12 bookworm 可直接安装的所有 软件包(php、nginx 等)

「Debian 12 bookworm手工安装LNMP建站环境:https://0xo.net/650」

测试 VPS 来自 DigitalOcean,1C AMD CPU + 1G 内存,Debian 12。

准备工作

确保使用 root 用户登录来安装。如果 VPS 在国内,修改为国内源比较快,腾讯云、阿里云可能默认已经使用自家源,如果没有修改,可以修改为 ustc 源:

sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

修改源后更新一下:

「Debian 12 bookworm手工安装LNMP建站环境:https://0xo.net/650」
apt-get -y update && apt-get -y upgrade

接着安装所需要依赖软件工具包:

apt-get install -y wget libcurl4-openssl-dev libevent-dev ca-certificates libssl-dev pkg-config build-essential intltool git autoconf automake libtool autopoint libxml2-dev zip unzip net-tools screen curl lsb-release gnupg2

安装 php8.2

Debian 12 软件库里,默认是 php8.2,直接安装即可,可安装 php 扩展软件包在这个页面查询:属于 "bookworm" 发行版 php 子版面的软件包

apt-get install -y php8.2 php8.2-common php8.2-cli php8.2-fpm php8.2-mysql php8.2-zip php8.2-gd  php8.2-mbstring php8.2-curl php8.2-xml php8.2-bcmath php8.2-memcache php8.2-memcached php8.2-opcache

若是安装 WordPress 博客,建议把 memcache、memcached 和 opcache 扩展安装上,速度提升很明显。

「Debian 12 bookworm手工安装LNMP建站环境:https://0xo.net/650」

安装 nginx

更新一下,直接安装 nginx-full 即可(nginx 官方指引):

apt-get update -y
apt-get install -y nginx-full

php.ini、nginx.conf 及站点配置

sed -i 's/^;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/8.2/fpm/php.ini
sed -i 's/# server_names_hash_bucket_size/server_names_hash_bucket_size/' /etc/nginx/nginx.conf

默认网站模板配置

cat > /etc/nginx/sites-enabled/default << "EOF"
# Default server
server {
listen 80 default_server;
listen [::]:80 default_server;

server_name _;
root /var/www/default;
index index.php index.html index.htm default.html;

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

# pass the PHP scripts to FastCGI server
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
# optimize static file serving
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 30d;
}

# deny access to .htaccess files, should an Apache document root conflict with nginx
location ~ /\.ht {
deny all;
}
}
EOF

网站目录配置

rm -rf /var/www/html
chown www-data:www-data -R /var/www
chmod g+s -R /var/www/.
mkdir -p /var/www/default
wget -P /var/www/default https://github.com/kmvan/x-prober/releases/download/8.16/prober.php

备忘:ps aux | grep nginx 可查看 nginx 用户名和用户组,在 /etc/nginx/nginx.conf 中也可以看到。

检查一下 nginx 配置是否正确:

nginx -t

输出如下提示:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

表示配置正确,重启 php 和 nginx:

systemctl restart php8.2-fpm
systemctl restart nginx

如无意外,访问 http://「vps ip 地址如 1.1.1.1」/prober.php 可看到 php 探针信息。

安装数据库 MariaDB-server、MariaDB-client 和 phpMyAdmin

一条命令安装即可:

apt-get install -y mariadb-server mariadb-client

设置 Mariadb 数据库 root 密码:

mysqladmin -u root password "1230xo.net456"

记得把其中 1230xo.net456 替换换成你自己的密码。

重启 MariaDB:

systemctl restart mariadb

安装 phpMyAdmin

cd /var/www/default
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.tar.gz
tar -xvf phpMyAdmin-5.2.1-all-languages.tar.gz
mv phpMyAdmin-5.2.1-all-languages phpmyadmin
chown www-data:www-data -R /var/www

进入 phpmyadmin,复制 phpmyadmin 自带配置文件,作为默认配置文件:

cd phpmyadmin
cp config.sample.inc.php config.inc.php
vi config.inc.php

这里配置一下 $cfg['blowfish_secret'] = ''; 32 字符即可。如:

$cfg['blowfish_secret'] = 'h^Mij2#mU9n3HWA%RLU5XhNFM$tMJJfE';

其它一般默认即可。

在 Debian 12 上安装 Memcached

Memcached 是一个免费开源高性能分布式的内存对象缓存系统。Memcached 简单而强大,其简单的设计有利于快速开发,简化开发并解决了大数据量的许多问题。

Debian 12 包含 memcached 软件包,通过以下命令即可快速安装:

sudo apt install memcached

安装完成,通过以下命令启动 memcached:

sudo systemctl start memcached

检查 memcached 运行状态:

sudo systemctl status memcached

正常会有类似如下结果输出:

 memcached.service - memcached daemon
Loaded: loaded (/lib/systemd/system/memcached.service; enabled; preset: enabled)
Active: active (running) since Fri 2023-09-22 06:26:45 UTC; 1h 10min ago
Docs: man:memcached(1)
Main PID: 34715 (memcached)
Tasks: 10 (limit: 1107)
Memory: 3.7M
CPU: 752ms
CGroup: /system.slice/memcached.service
└─34715 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached

设置 memcached 服务随系统自动启动:

sudo systemctl enable memcached

配置 Memcached

Memcached 默认配置文件路径:/etc/memcached.conf,可以根据需要进行配置。Memcached 配置为默认本机地址,端口为 11211,默认配置下可以满足在本机大部分应用需求,如果需要暴露在外网,切记做好安全防护

-m 64  默认分配 64M 内存
-p 11211 默认监听端口
-l 127.0.0.1 默认监听本地 ip

按需要修改完成后,保存关闭文件并重启服务使配置生效:

sudo systemctl restart memcached

LNMP 手动安装完成

至此,Debian 12 bookworm 手工安装 LNMP 建站环境初步完成,访问 http://「vps ip 地址如 1.1.1.1」/prober.php 可看到 php 探针信息。

可以登录 phpMyAdmin 创建数据库,然后下载 WordPress 安装测试:

cd /var/www/default && wget -O w.zip https://wordpress.org/latest.zip && unzip w.zip && cd wordpress/ && mv * ../ && chown www-data:www-data -R /var/www/default && cd .. && rm -rf wordpress && rm -rf w.zip

日常重启服务命令:

重启 nginx:systemctl restart nginx
重启 php:systemctl restart php8.2-fpm
重启 mariadb:systemctl restart mariadb

后续优化还可以配置 php 缓存,nginx 缓存,以及安装 ACME 自动签发、续期 SSL 证书等。

退出移动版