Wordpress博客配置2024

起因

在大概2016年左右用搭建过一次wordpress的博客,那时候是在Windows环境下,通过Tomcat傻瓜式搭建的。一来是那个云服务器已经过期了,二来是访问速度实在是很慢,现在差不多10年过去了很多技术也和当年不一样了。所以这次简单再在Linux环境下搭建试试看。

本次环境是在cenos7.9,mysql8,然后docker和wordpress都使用的最新版本(截止2024年11月)。

架构

  1. 安装docker
  2. 安装mysql
  3. 使用docker在容器中运行wordpress
  4. 简单配置Wordpress
  5. 配置nginx、slb和https、域名解析等

1.安装docker

省流,使用如下脚本安装。

python 复制代码
#!/bin/bash
# 安装指定版本docker

# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 指定阿里云的repo,国外的镜像很慢
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 查看可用的版本
yum list docker-ce --showduplicates | sort -r
# 安装指定版本docker
sudo yum install -y docker-ce-24.0.6-1.el7 docker-ce-cli-24.0.6-1.el7 containerd.io docker-buildx-plugin docker-compose-plugin

# docker的systemd配置,代理配置
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://registry.aliyuncs.com",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn"
    ],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

# 查看版本
docker --version
# 启动docker
systemctl start docker
# 设置开机启动
systemctl enable docker

2.安装mysql

省流,使用如下脚本即可。

python 复制代码
#!/bin/bash
# 安装mysql8

# 下载rpm文件
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm -P /opt/

# 导入License
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

# 安装mysql
yum -y install /opt/mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server

# 启动mysql
systemctl start mysqld

init_pw=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
new_pw="Abc@1234"

# 设置root密码,会有一个warning,但是修改成功了
mysqladmin -uroot -p"$init_pw" password $new_pw

# 配置允许远程登录
sed -i 's/bind-address/#bind-address/g' /etc/my.cnf

# 更新用户主机
mysql -uroot -p"$new_pw" -e "use mysql;update user set user.Host='%' where user.User='root';flush privileges;"
sleep 2
mysql -uroot -p"$new_pw" -e "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Abc@123';flush privileges;"

# 重启mysql
systemctl restart mysqld

# 开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启一下防火墙服务
firewall-cmd --reload

3.安装Wordpress

拉取镜像

bash 复制代码
docker pull wordpress

使用如下命令在docker'中启动Wordpress

bash 复制代码
mkdir /opt/wordpress
docker run -it --name wordpress -p 9898:80 -v /opt/wordpress:/var/www/html -d wordpress

简单解释下各个参数:

  • ---name:给容器起一个名字
  • 9898:80:将宿主机的9898端口转发到容器的80端口
  • -v:挂载的目录,将宿主机目录挂载到容器中指定目录,这样便于上传文件
  • -d:后台运行
  • 刚刚的镜像名称

4.配置Wordpress

在浏览器访问 http://ip:9898/wp-admin/setup-config.php 进行安装。注意,我这里可以通过这种方式访问,是因为配置了到阿里云的vpn,相当于是内网。如果你的云服务器带公网地址的话可以直接访问,否则需要设置了SLB之后才能访问到。这块请自行取舍,第四步最后再配置也可以的。

输入数据库信息,注意以下已默认在数据库建了一个叫db_wordpress的数据库

也可以参考如下图片,手动进行配置。在上面图片上填写提交,实际上就会生成一个wp-config.php文件。

修改数据库配置文件

bash 复制代码
[root@node4 wordpress]# vim /opt/wordpress/wp-config-sample.php

修改以下部分

完事之后点上面的提交,后面的设置就比较简单了。根据画面提示进行操作即可。

5.配置https访问

配置https有2条路可以走,要么使用nginx,要么直接用阿里云的负载均衡。

顺便这里默认你已经配置好了域名解析和域名备案什么的。

  • nginx参考配置。证书申请略。请准备好证书丢在/etc/nginx/certs/里

    python 复制代码
        server {
            listen 443 ssl;
            server_name kayotin.cn;
            ssl_certificate /etc/nginx/certs/public.pem;
            ssl_certificate_key /etc/nginx/certs/private.key;
    
            root /var/www/html;
            index index.php index.html index.htm;
    
            location / {
                proxy_pass https://127.0.0.1:9898; # 反向代理到9898端口
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
            }
    
            # 重定向HTTP到HTTPS
            error_page 497 https://$host$request_uri;
    
        }
    
        # 确保HTTP流量被重定向到HTTPS
        server {
            listen 80;
            server_name kayotin.cn;
            return 301 https://$host$request_uri;
        }
  • 阿里云的slb参考配置(不使用nginx:

    阿里云的负载均衡就相当于一个nginx,里面可以直接添加证书。

  • 网站主url修改

    如下所示,在数据库的表wp_options中,这里请修改成https加你的域名

6.开启https访问后的一些配置修改

终于可以通过https访问网站了,再也不会有一个不安全的标记了。但是还有很多问题,首先是格式不太对,这是因为很多css样式的引用失败了;另外你会发现后台也登录不了。可以通过如下手段解决。

  1. 修改functions.php配置

    python 复制代码
    vim /opt/wordpress/wp-includes/functions.php

    在最下面添加如下配置,顺便vim可以用shift+G一下去到最下方。

    python 复制代码
    add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); } 
    
    add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2); function agnostic_style_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); }
  2. 修改wp-config.php

    python 复制代码
    vim /opt/wordpress/wp-config.php

    在最前面加上如下代码:

    python 复制代码
    $_SERVER['HTTPS'] = 'on';
    define('FORCE_SSL_LOGIN', true);
    define('FORCE_SSL_ADMIN', true);

终于大功告成啦。

相关推荐
内核程序员kevin3 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
i道i6 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
朝九晚五ฺ7 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
自由的dream7 小时前
Linux的桌面
linux
Oak Zhang7 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
xiaozhiwise8 小时前
Makefile 之 自动化变量
linux
久醉不在酒9 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql
WindFutrue9 小时前
使用Mybatis向Mysql中的插入Point类型的数据全方位解析
数据库·mysql·mybatis
意疏10 小时前
【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
linux·docker