文章目录[隐藏]
一、概述
1.1 概要
今天将会教大家通过docker 搭建wordpress个人博客站,具有轻量级、易部署、易维护特点,便于后续数据迁移,避免数据丢失登问题!
1.2 作用
拥有一个自己专属、功能强大、美观的个人网站,人人都是博主、人人都是创作者,记录下每一刻。
二、wordpress相关
2.1 wordpress介绍
WordPress是一种广泛使用的开源内容管理系统(CMS),它提供了一个简单而强大的平台,用于创建和管理网站、博客和在线应用程序。
2.2 wordpress优势
- 非常成熟、操作简单、功能强大
- 插件非常多,可以实现各种各样的功能。如谷歌身份验证器、访问者统计等等。
三、搭建过程
3.1 安装docker环境
注意事项:此代码在debian系统可能会出问题,目前博主在用ubuntu
curl -fsSL https://get.docker.com | sh && ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin
3.2 docker部署mysql环境
3.2.1 部署mysql
docker run -d \
-p 3306:3306 \
--privileged=true \
--name mysql \
--restart=always \
-v /usr/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=wordpress123 \
mysql:latest
--privileged=true: 表示容器将以特权模式运行,即容器内的进程将拥有宿主机的权限。CentOS系统下的安全Selinux禁止了一些安全权限,导致MySQL容器在运行时会因为权限不足而报错,所以需要增加该选项
-e: 环境变量,设置镜像中MySQL的root 密码
3.2.2 创建需要的数据库
1、进入mysql容器
docker exec -it mysql /bin/bash
2、在容器内登陆mysql
mysql -u root -p
3、创建blog数据库
create database blog DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
4、检查是否创建成功
show databases;
3.3 docker部署wordpress
3.3.1 启动容器
docker run -d \
-p 542:80 \
--link mysql \
--restart=always \
--name wordpressblog \
-v /usr/wordpress:/var/www/html \
wordpress:latest
-d:该参数是docker run命令的一个选项,表示以"分离模式"(detached mode)运行容器。这意味着容器将在后台运行,并且不会占用当前终端的控制台。
-p 542:80:该参数用于设置容器的端口映射。它将主机的端口542与容器的端口80进行映射。这意味着,通过访问主机的542端口,可以访问到容器内运行的服务(在此例中是WordPress)所使用的80端口。
--link mysql:该参数用于创建容器之间的链接(link)。它将容器wordpressblog与命名为mysql的另一个容器进行链接。这样,wordpressblog容器可以通过该链接访问到mysql容器,以便进行数据库等资源的交互。
--restart=always:该参数用于设置容器的重启策略。always表示无论何时容器退出,Docker引擎都会自动重启容器。这样可以确保容器在发生意外退出或系统重启后能够自动恢复运行。
--name wordpressblog:该参数用于为容器指定一个名称,即wordpressblog。通过该名称,可以方便地管理和操作容器,如停止、启动、查看日志等。
-v /usr/wordpress:/var/www/html:该参数用于设置容器内的数据卷挂载。它将主机上的/usr/wordpress目录与容器内的/var/www/html目录进行挂载。这样可以将主机上的文件和目录与容器内部的目录进行共享,实现数据持久化和容器的可移植性。
wordpress:latest:该参数指定了要运行的镜像名称和标签(tag)。在此例中,使用的是名为wordpress的镜像,并选择了最新的版本(latest)。
3.3.2 确认容器是否跑起来
docker ps
3.4 访问配配置网站
公网ip:端口
3.5 配置nginx反向代理
#全局块
#user nobody;
worker_processes auto; #worker_processes指的是开启的线程数,一般跟逻辑CPU核数一致
#event块
events {
worker_connections 1024; #定义每个进程的最大连接数,受系统进程的最大打开文件数量限制
}
#http块
http {
#http全局块
include mime.types;
default_type application/octet-stream; #核心模块指令,默认设置为二进制流
sendfile on; #开启高效文件传输模式
keepalive_timeout 65; #keepalive_timeout设置客户端连接保存活动的超时时间
#server虚拟主机块
server {
#server全局块
listen 80; #监听端口
server_name 80hou.stutimes.com; #设置主机域名
#charset koi8-r; #设置访问的语言编码
#location块
location / { #location设置虚拟主机的基本信息
proxy_pass http://127.0.0.1:542;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
} #这个是server的大括号
#这边可以有多个server块,监听多个端口,直接把上面的server复制下来即可
}
#这个是http的大括号
三、总结
三、总结
- wordpress部署非常容易,难得是处理可能会面临的各种问题,问题非常多,比如说上传大小限制、https配置等等。
- wordpress的数据备份非常重要,比如说数据迁移备份等,将网站部署在甲骨文免费服务器,就要随时留意服务器释放数据丢失的问题,所以一定要做数据的自动化备份,这就涉及wordpress数据库的备份,以及上传数据的备份,这个涉及的内容也很多。
- wordpress的安全同样重要,需要装哪些插件来保护站点安全呢?这个也非常多,博主装了一个谷歌身份验证器的插件,可以保障网站无法被其他人登陆。