共计 3678 个字符,预计需要花费 10 分钟才能阅读完成。
前言
前些天看见京东云有折扣,一时冲动买了个轻量服务器。
买都买了不能空闲着,折腾一下部署点服务,整个博客玩一玩。
Mariadb数据库部署方式选择
因为想到多个应用可能会使用数据库,如果每个数据库都单独使用docker安装会导致性能损失严重。
使用 Docker 部署多个 MariaDB 容器
- 优势:每个容器独立运行,拥有独立的进程、内存和磁盘空间(若挂载不同卷)。
- 劣势:
- 内存开销:每个 MariaDB 实例会占用独立的内存池(如
innodb_buffer_pool_size),总内存占用可能更高。 - CPU 竞争:多个容器共享宿主 CPU,高负载时可能因上下文切换增加延迟。
- I/O 争用:若所有容器共享同一物理磁盘,频繁的读写操作可能引发 I/O 瓶颈。
- 内存开销:每个 MariaDB 实例会占用独立的内存池(如
- 典型性能损耗:
- 内存:每个容器额外占用约 100-300 MB(基础进程 + 缓存)。
- CPU:容器化带来的额外开销约 5-10%(取决于负载类型)。
- 磁盘:若使用独立卷,随机写入性能可能下降(取决于存储驱动类型,如
overlay2)。
单个 MariaDB 实例中创建多个数据库
- 资源共享性:
- 优势:
- 内存利用率高:共享
innodb_buffer_pool_size,缓存池统一管理,减少重复缓存。 - I/O 优化:所有数据库的请求由同一实例调度,可能合并写入操作。
- 连接池共享:复用数据库连接池,减少连接建立开销。
- 内存利用率高:共享
- 劣势:
- 资源竞争:若某数据库负载过高(如复杂查询),可能影响其他数据库性能。
- 单点故障:实例崩溃会导致所有数据库不可用。
- 优势:
- 典型性能损耗:
- 几乎无额外开销,性能损耗主要取决于实例的全局配置和负载均衡策略。
所以我直接安装到Debian系统中。
Mariadb安装
以root用户执行安装,非root用户需要在命令前添加sudo
1、更新apt 列表
apt install update
2、安装Mariadb
apt install mariadb-server -y
3、启用mariadb并设置开机启动(一般默认就开启了)
systemctl start mariadb
systemctl enable mariadb
4、运行安全脚本(脚本会设置 root 密码、移除匿名用户、禁止 root 远程登录等)
mysql_secure_installation
root@JD-2C4G:~# mysql_secure_installation
#默认没有密码,直接回车
Enter current password for root (enter for none):
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'.
#询问是否使用'unix_socket'进行身份验证,建议不开启,默认Y,选n:n
Switch to unix_socket authentication [Y/n] n
... skipping.
#创建root密码,默认Y,直接回车
Change the root password? [Y/n]
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
#移除匿名用户,默认Y,直接回车
Remove anonymous users? [Y/n]
... Success!
#拒绝用户远程登录,我开启了,默认Y,直接回车
Disallow root login remotely? [Y/n]
... Success!
#删除测试库,直接回车,默认Y
Remove test database and access to it? [Y/n]
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
#重新加载权限,默认Y,直接回车
Reload privilege tables now? [Y/n]
... Success!
Cleaning up...
#显示这段话就完成了
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Mariadb创建用户名、数据库、授予权限、解除访问限制
root@JD-2C4G:~# mdydsql -u root -p #使用root用户登录
Enter password: #输入设置的root密码
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 39
Server version: 10.11.11-MariaDB-0+deb12u1 Debian 12
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
#创建wordpress数据库实例
MariaDB [(none)]> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.000 sec)
#创建wordpress用户,并设置密码,@'%'代表允许远程登录,@'localhost'代表只能本机访问
MariaDB [(none)]> CREATE USER 'wordpress'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.001 sec)
#对wordpress用户授予wordpress实例所有权限,.*代表不限制表
MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';
Query OK, 0 rows affected (0.001 sec)
#刷新权限使配置生效。
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)
#退出mariadb
MariaDB [(none)]> exit
#修改配置文件,找到bind-address改为0.0.0.0
nano /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 0.0.0.0
docker-compose安装WordPress
version: '3.8'
services:
wordpress:
image: wordpress:latest
container_name: wordpress
restart: unless-stopped
environment:
WORDPRESS_DB_HOST: 输入数据库地址 ip:3306
WORDPRESS_DB_USER: 用户名
WORDPRESS_DB_PASSWORD: 密码
WORDPRESS_DB_NAME: 数据库实例名
volumes:
- data:/var/www/html
network_mode: bridge
ports:
- "8080:80"
#创建持久化卷,默认路径/var/lib/docker/volumes,文件夹名为 容器名_卷名
volumes:
data:
防火墙放行8080端口
访问 https://ip:8080 ,进行语言、账号的设置。
调整wordpress上传文件大小限制
创建custom.ini 文件 并复制到php配置路径/usr/local/etc/php/conf.d
#创建custom.ini 文件
root@JD-VPS:~# nano custom.ini
#文件中写入以下信息
#单个上传文件的最大限制
upload_max_filesize = 64M
#所有通过 POST 请求提交的数据总大小(包括文件 + 表单字段)
post_max_size = 128M
#PHP 脚本可使用的最大内存
memory_limit = 500M
#PHP 脚本最长运行时间
max_execution_time = 300
#将custom.ini拷贝到容器内
root@JD-VPS:~# docker cp custom.ini wordpress:/usr/local/etc/php/conf.d
Successfully copied 2.05kB to wordpress:/usr/local/etc/php/conf.d
#重启docker容器
root@JD-VPS:~# docker restart wordpress
验证配置是否生效

正文完