Docker+Discuz X3.2论坛部署记录
最新版的运维脚本见这里:CharlesNotes
首先安装Docker
sudo apt install docker docker.io
安装discuz
sudo mkdir -p /opt/discuz-data sudo docker run --restart=always --name discuz -p 80:80 -d -v /opt/discuz-data:/var/www/html/ dockerfiles/centos-lamp下载discuz安装包后解压,将里面的upload文件夹里面的内容全部复制到/opt/discuz-data 也许需要修改权限
chown www-data:www-data /opt/discuz-data -R chmod 777 -R /opt/discuz-data修改mysql密码
sudo docker exec -i discuz bash mysql_secure_installation直接打开服务器地址即可开始安装
配置服务器
在图形界面设置静态ip,关闭系统休眠、待机运维
- 打开shell:
sudo docker exec -i discuz bash - 复制文件: 
sudo docker cp file container:to_path 
设置+插件篇
- 买域名
 - 修改界面、论坛名称、备案号
 - MarkDown插件
 - Tex插件
 - 访问控制:开启手机访问、禁止未注册用户访问
 
我写的一些自动备份脚本,配合crontab使用,注意提前设置好备份服务器的ssh免密码登陆
#!/usr/bin/python3
import os
import time
backup_len = 1
backup_from = ['/opt/discuz-data/data/']
backup_ssh_user = 'user@host'
backup_ssh_port = '22'
backup_to = '/data/backup/discuz/hourly'
identity_file = '/root/.ssh/id_rsa'
now = time.strftime('%Y-%m-%d_%X', time.localtime(time.time()))
os.system('ssh -p {backup_ssh_port} -i {identity_file} {backup_ssh_user} -T "mkdir -p {backup_to}}/{now}}"'.format(
    identity_file=identity_file,
    backup_ssh_port=backup_ssh_port,
    backup_ssh_user=backup_ssh_user,
    backup_to=backup_to,
    now=now))
for path_i in backup_from:
    os.system("scp -p -P {backup_ssh_port} -i {identity_file} -r {backup_from} {backup_ssh_user}:{backup_to}}/{now}}".format(
        identity_file=identity_file,
        backup_ssh_port=backup_ssh_port,
        backup_from=path_i,
        backup_ssh_user=backup_ssh_user,
        backup_to=backup_to,
        now=now))
pipe = os.popen('ssh -p {backup_ssh_port} -i {identity_file} {backup_ssh_user} -T "ls {backup_to}"'.format(
    identity_file=identity_file,
    backup_ssh_port=backup_ssh_port,
    backup_ssh_user=backup_ssh_user,
    backup_to=backup_to), 'r', -1)
pathes = []
for i in pipe:
    pathes.append(i.strip())
pathes.sort()
if len(pathes) > backup_len:
    for i in pathes[:-backup_len]:
        os.system("ssh -p {backup_ssh_port} -i {identity_file} -T {backup_ssh_user} 'rm -rf {backup_to}}/{now}}'".format(
            backup_ssh_port=backup_ssh_port, identity_file=identity_file,
            backup_ssh_user=backup_ssh_user,
            backup_to=backup_to,
            now=i))
又写了一个把文件复制到crontab的脚本
#!/bin/bash cp $1 /etc/cron.hourly cp $1 /etc/cron.daily cp $1 /etc/cron.weekly cp $1 /etc/cron.monthly vi /etc/cron.hourly/$1 vi /etc/cron.daily/$1 vi /etc/cron.weekly/$1 vi /etc/cron.monthly/$1 echo /etc/cron.hourly/$1 cat /etc/cron.hourly/$1|grep -E '^backup_to' echo /etc/cron.daily/$1 cat /etc/cron.daily/$1|grep -E '^backup_to' echo /etc/cron.weekly/$1 cat /etc/cron.weekly/$1|grep -E '^backup_to' echo /etc/cron.monthly/$1 cat/etc/cron.monthly/$1|grep -E '^backup_to'
评论
发表评论