Debian 13.5 下安装Apache+PHP+Mariadb+VSftp

Debian 13.5 下安装Apache+PHP+Mariadb+VSftp

准备工作:更新系统和安装必要工具

在开始安装任何软件之前,建议先更新系统的软件包索引,并安装一些常用的管理工具。

apt update

apt upgrade -y

apt install -y lsb-release ca-certificates curl

安装完成后,Apache 服务会自动启动。你可以通过以下命令验证它的运行状态

apt install -y apache2 apache2-utils

安装 PHP 及其 Apache 模块 在 Debian 系统中,最常用的方式就是通过 libapache2-mod-php 这个包,让 Apache 能够直接处理 PHP 文件

apt install php libapache2-mod-php -y

同时安装一些常用的 PHP 扩展,以满足大多数 Web 应用(如 WordPress)的需求

apt install php-mysqli php-imagick php-redis php-curl php-gd php-mbstring php-xml php-dom php-intl php-zip -y

PHP 版本号

php -v

PHP模块支持检查:

php -m | grep -E “mbstring|xml|gd|redis|curl|dom|imagick|zip|gd|intl”

PHP配置文件

vi /etc/php/*/apache2/php.ini

添加www用户组和www用户且不允许登录

useradd -d /var/www -g www -s /usr/sbin/nologin -M www

更改网站目录权限

chown -R www:www /var/www

配置Apache

vi /etc/apache2/apache2.conf

修改加入:

User www

Group www

vi /etc/apache2/ports.conf

vi /etc/apache2/sites-available/000-default.conf

开启 URL 重写 (mod_rewrite)

a2enmod rewrite ssl

配置网站目录以支持 .htaccess,为了让 Apache 读取并应用网站目录下的 .htaccess 文件,需要修改对应目录的 AllowOverride 设置。

vi /etc/apache2/sites-available/000-default.conf

在 <VirtualHost> 块内,为你的网站根目录添加或修改 <Directory> 配置,将 AllowOverride 设置为 All:

<VirtualHost *:80>

# … 其他配置 …

<Directory /var/www/html>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

</VirtualHost>

Apache配置检查

apache2ctl configtest

重启 Apache

systemctl restart apache2

安装 MariaDB 服务器和客户端:

apt install mariadb-server mariadb-client -y

安装完成后,MariaDB 服务通常会自动启动。你可以通过以下命令验证其状态:

systemctl status mariadb

确保 MariaDB 服务当前是运行状态时,设置开机自启

systemctl enable mariadb

初始化 root 密码(核心步骤)

mariadb-secure-installation

按提示进行交互设置(这里是关键):

Enter current password for root (enter for none):

因为是初次设置,直接按 Enter 跳过。

Switch to unix_socket authentication [Y/n]:

这里要特别注意。如果你希望使用密码登录,请输入 n(选择否),这样会保留密码认证方式。如果输入 y,则只能通过 sudo mariadb 登录。

Change the root password? [Y/n]:

输入 y,然后根据提示设置一个强密码。

Remove anonymous users? [Y/n]:

输入 y,删除匿名用户以提升安全性。

Disallow root login remotely? [Y/n]:

输入 y,禁止 root 用户远程登录(这是一种好习惯)。

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

输入 y,删除测试数据库。

Reload privilege tables now? [Y/n]:

输入 y,重新加载权限表使更改生效。

Debian常用操作

在命令行中查看MySQL安装路径

which mysql

查看MySQL服务器程序的安装路径

whereis mysqld

查看MySQL配置文件的位置

ls -l /etc/mysql

查看MySQL数据目录的位置

ls -l /var/lib/mysql

查看MySQL插件目录的位置

ls -l /usr/lib/mysql/plugin

apache2配置文件目录

/etc/apache2/

apache2启动

systemctl restart apache2

apache2停止

systemctl stop apache2

查看apache2启动错误

clear && systemctl status apache2.service

Apache多线程配置

开启prefork多线程模式

a2dismod mpm_event && a2dismod mpm_worker && a2enmod mpm_prefork && systemctl restart apache2

vi /etc/apache2/mods-enabled/mpm_prefork.conf

<IfModule mpm_prefork_module>

StartServers 5

MinSpareServers 5

MaxSpareServers 10

MaxRequestWorkers 150

MaxConnectionsPerChild 1000

</IfModule>

参数解释:

MaxRequestWorkers (关键参数):Apache 能同时处理的最大请求数。这是限制并发能力的核心参数。

如何设置:保守起见,可以用“服务器可用内存(MB) ÷ 单个 Apache 进程平均内存占用(MB)”来估算。例如,2GB内存,单进程约50MB,上限约40。如果服务器内存不大,一定要把这个值调小,比如设为 50 或更低,否则容易因内存耗尽而崩溃。

MaxConnectionsPerChild:每个子进程处理完指定数量的请求后自动销毁,可以有效防止因程序(如PHP)内存泄漏导致的内存耗尽。设为 1000 或 10000 是比较稳妥的做法。

StartServers、MinSpareServers、MaxSpareServers:控制进程池的大小,保证在请求到来时能快速响应。通常保持默认或按需微调即可。

配置虚拟网站

# 为两个示例网站创建目录

mkdir -p /var/www/www.1539.cn/public_html && mkdir -p /var/www/o.1539.cn/public_html && mkdir -p /var/www/api.1539.cn/public_html

# 创建简单的测试首页

echo “<h1>Welcome to www.1539.cn</h1>” | tee /var/www/www.1539.cn/public_html/index.html

echo “<h1>Welcome to o.1539.cn</h1>” | tee /var/www/o.1539.cn/public_html/index.html

echo “<h1>Welcome to api.1539.cn</h1>” | tee /var/www/api.1539.cn/public_html/index.html

# 设置目录所有者为你当前的用户和www组

chown -R www:www /var/www/www.1539.cn && chown -R www:www /var/www/o.1539.cn && chown -R www:www /var/www/api.1539.cn

# 设置适当的权限

chmod -R 755 /var/www/www.1539.cn && chmod -R 755 /var/www/o.1539.cn && chmod -R 755 /var/www/api.1539.cn

配置网站

vi /etc/apache2/sites-available/www.1539.cn.conf

复制粘贴:

<VirtualHost *:80>

ServerAdmin 28693177@qq.com

ServerName 1539.cn

ServerAlias www.1539.cn

DocumentRoot /var/www/www.1539.cn/public_html

<Directory /var/www/www.1539.cn/public_html>

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

ErrorLog ${APACHE_LOG_DIR}/www.1539.cn_error.log

CustomLog ${APACHE_LOG_DIR}/www.1539.cn_access.log combined

</VirtualHost>

# 启用新创建的虚拟主机

a2ensite www.1539.cn.conf

# 检查配置文件语法是否正确

apache2ctl configtest

以此类推,可以建立多个虚拟主机

1GB 内存 MariaDB 优化配置

vi /etc/mysql/mariadb.conf.d/50-server.cnf

内存与性能核心参数

key_buffer_size = 32M(非常重要)

作用:这是 MyISAM 存储引擎的专属索引缓冲区大小。它决定了数据库在处理 MyISAM 表的索引时,能使用多少内存来加速查询。

建议:如果你的系统主要使用 InnoDB(现代默认),这个值不宜过大,32M-64M 足够,因为 InnoDB 有自己的缓冲池。如果 MyISAM 表很多且索引很大,可以适当调大(如 256M),但不要超过物理内存的 30%。

max_allowed_packet = 10M

作用:允许客户端和服务器之间一次传输的最大数据包大小。这直接影响你能否导入大 SQL 文件、插入大文本或 BLOB 字段(如存图片/文件)。

建议:如果你的业务涉及大字段操作,通常需要调大,比如 128M 或 256M。如果默认太小,导入大数据库时会出现 Packet too large 错误。

max_connections = 100

允许的最大客户端并发连接数。默认通常是 151,如果你网站访问量大,需要调大(如 500),但要注意内存开销(每个连接会消耗约 2-4MB)。

table_cache = 64(在较新版本中改名为 table_open_cache)

表缓存数量:服务器能同时打开的表文件描述符数量。如果并发查询涉及很多表,这个值太小会导致频繁打开/关闭表,降低性能。繁忙服务器通常设到 2000 以上。

# — 核心:InnoDB 缓冲池 (最重要!) —

# 这是 InnoDB 引擎缓存数据和索引的地方。对于1GB内存,建议设置在 256M – 384M 之

# 留出足够内存给操作系统和其他进程,避免系统开始使用 Swap 交换空间,那会严重拖慢性能。

innodb_buffer_pool_size = 256M

安装FTP

apt install vsftpd -y

再添加一个名字叫做“fs_user ”FTP用户,只能访问 /var/www目录

useradd -d /var/www -g www -s /usr/sbin/nologin -M fs_user

参数解释:

-d /var/www:设置用户主目录为 /var/www

-g www:指定主工作组为 www

-s /usr/sbin/nologin:禁止 SSH 登录(该用户无法交互式登录)

-M:不自动创建家目录(因为 /var/www 已存在,避免权限覆盖)

fs_user:用户名

vi /etc/vsftpd.chroot_list

添加www用户名字和fs_user 名字,一行一个即可

vi /etc/vsftpd.conf

#启用在chroot_list_file的用户只能访问根目录

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

禁止匿名登录:

anonymous_enable=NO

启用了chroot的话,根目录要设置为不可写才能登录,否则就算是成功登录,也不会显示文件列表

chmod a-w /var/www

重启

systemctl restart vsftpd

设置开机自启:确保服务器重启后 vsftpd 能自动运行。

systemctl enable vsftpd

解决530错误

vi /etc/pam.d/vsftpd

注释掉下面两行再重启

auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth       required     pam_shells.so

//查看FTP配置项目

cat /etc/vsftpd.conf |grep ^[^#]

FlashFXP登录软件设置:

新建站点  》 FTP  》 数据连接模式  》 主动模式(PORT)

注意,现在FTP客户端软件默认都是被动模式,现在我们设置必须选择主动模式才能登录。

如果VSFTP用着一直没有问题,突然有问题了,可能是防火墙设置错误,可关闭试试