开发一个仿朋友圈主题练手博客-Moment

很久没有发过博客了,最近在开发一个仿朋友圈主题的简陋版博客,但也没有完全完成开发,可能算是开发到了一半中的一半吧,期间捡起、放下、再捡起,需要重新看文档进行回忆,所以导致耽误了很长一段时间,即使这样,开发也不是一帆风顺,甚至说是磕磕绊绊,一个小问题可能导致耽误一天的时间。

这个项目我一般还是喜欢称它为:朋友圈,因为对于它的定位我其实也是捉摸不定的,目前权当是练手了。你可以在这里查看目前的内容:点击跳转到 Moment

目前完成了如下内容:

前端
– 昵称、头像、背景图、个性签名
– 动态显示头像、昵称(点击跳转网址链接)、内容、内容标签
– 发布天数
– 点赞
管理后台
仪表盘
– 显示发布动态数量
– 发布动态
设置
– 修改网址名称
– 修改网址头像
– 修改网址背景

这些看着很多,但其实功能都很简单,但作为刚开始学习的我来说,确实很麻烦,以至于有些地方写的很冗余、杂乱,欠缺考虑。但是也不能一直止步不前,只能在往后的时间里不断优化和完善内容了。

如果,你觉得这个项目对你来说有用处或者也想练练手,你可以选择帮忙一同开发维护,如果不介意,也可以帮忙点个 ⭐ Star。

前端:Moment

服务端:Moment Server

Docker 相关容器配置

自从服务器重置以后,重新安装了 Docker,下面记录一下正在使用的容器和相关配置内容。

创建容器间网络

docker network create -d bridge individual

Nginx

docker run -d \
--name nginx \
-p 80:80 \
-p 443:443 \
-v $PWD/nginx/html:/usr/share/nginx/html \
-v $PWD/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/nginx/log:/var/log/nginx \
-v $PWD/nginx/cert:/etc/nginx/cert \
-v $PWD/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
--restart=always \
nginx

MySQL

docker run -d \
--name mysql \
-p 3306:3306 \
-v $PWD/mysql/log:/var/log/mysql \
-v $PWD/mysql/data:/var/lib/mysql \
-v $PWD/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--restart=always \
--network individual mysql --lower_case_table_names=1

MySQL 密码修改

ALTER USER 'root'@'%' IDENTIFIED WITH [mysql_native_password, caching_sha2_password] BY '123456';

MySQL 配置

进入 $PWD/mysql/conf/conf.d/ 创建 mysqld.cnf 文件,粘贴以下内容:

[mysqld]
performance_schema_max_table_instances=400
table_definition_cache=400 #缓存
performance_schema=off #用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源东西
table_open_cache=64 #打开表的缓存
innodb_buffer_pool_chunk_size=64M #InnoDB缓冲池大小调整操作的块大小
innodb_buffer_pool_size=64M #InnoDB 存储引擎的表数据和索引数据的最大内存缓冲区大小

phpMyAdmin

docker run -d \
--name phpmyadmin \
--network individual \
-e PMA_HOST="mysql" \
-p 80:80 \
--restart=always \
phpmyadmin

Redis

创建目录:
mkdir -p $PWD/redis/conf
创建文件:
touch $PWD/redis/conf/redis.conf

docker run -d \
--name redis \
-p 6379:6379 \
--network individual \
-v $PWD/redis/data:/data \
-v $PWD/redis/conf:/etc/redis \
--restart=always \
redis \
redis-server /etc/redis/redis.conf \
--appendonly yes

Warchtowe

docker run -d \
--name watchtower \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock  \
containrrr/watchtower \
--cleanup \
-i 3600

WordPress

docker run -d \
--name wordpress \
--network individual \
--restart=always \
-v $PWD/wordpress:/var/www/html \
-p 8080:80 \
wordpress

Vaultwarden

docker run -d \
--name vaultwarden \
--restart=always \
-v $PWD/vaultwarden:/data \
-p 80:80 \
vaultwarden/server:latest

QianDao

docker run -d \
--name qiandao \
--restart=always \
-p 80:80 \
-v $(pwd)/qiandao/config:/usr/src/app/config \
a76yyyy/qiandao

Docker 下 MySQL 8 自动备份

MySQL logo

root@debian:~# crontab -e 进入crontab,添加以下内容:

0 2 * * * find /var/backup/ -mtime +5 -name "*.sql" -delete && docker exec mysql sh -c 'exec mysqldump --all-databases -u<username> -p<password> --all-databases' > /var/backup/bcksql_`date +\%F`.sql

0 2 * * *:crontab 每天 2 点

find /var/backup/ -mtime +5 -name "*.sql" -delete:查找该路径下的备份文件,删除 6 天前的备份任务,即保留 7 个版本

-u<username> -p<password>:数据库的用户名及密码

/var/backup/bcksql_`date +\%F`.sql:将备份文件保存到该路径下并命名为“bcksql_日期.sql”(以上路径需要有对应权限,否则无法正常存储)

mysqldump 常用操作示例

备份全部数据库的数据和结构

mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql

备份全部数据库的结构(加 -d 参数)

mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql

备份全部数据库的数据(加 -t 参数)

mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql

备份单个数据库的数据和结构(数据库名mydb)

mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql

备份单个数据库的结构

mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql

 备份单个数据库的数据

mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql

 备份多个表的数据和结构(数据,结构的单独备份方法与上同)

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql

一次备份多个数据库

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

Docker 部署青龙面板

部署青龙面板

docker pull qinglong

在相关目录创建 docker-compose.yml

mkdir ql
cd ql
touch docker-compose.yml

然后输入 vi docker-compose.yml 并填写以下内容

version: "3"
services:
  qinglong:
    image: whyour/qinglong:latest
    container_name: qinglong
    restart: unless-stopped
    tty: true
    ports:
      - 5700:5700
      - 5701:5701
    environment:
      - ENABLE_HANGUP=true
      - ENABLE_WEB_PANEL=true
    volumes:
      - ./config:/ql/config
      - ./log:/ql/log
      - ./db:/ql/db
      - ./repo:/ql/repo
      - ./raw:/ql/raw
      - ./scripts:/ql/scripts
      - ./jbot:/ql/jbot
      - ./ninja:/ql/ninja
      - ./damei:/ql/damei
    labels:
      - com.centurylinklabs.watchtower.enable=false

保存后退出,在窗口输入:

docker-compose up -d

等待下载完成

下载完成后提示 Creating qinglong *** done并返回root输入提示

Docker 常用命令

Docker logo

Docker 安装

curl -sSL https://get.daocloud.io/docker | sh

Docker-Compose 安装并设置权限

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.3.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

配置 Docker 镜像源

创建 daemon.json 文件

sudo mkdir -p /etc/docker

写入镜像源

sudo tee /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}

赋予普通用户执行 Docker 命令

gpasswd -a username docker

Docker 使用

搜索镜像

docker search debian

拉取镜像

docker pull debian

查看镜像文件

docker images

查看镜像层级关系

docker images tree

查看 Docker 所有进程

docker ps -a

查看 Docker 内存占用

docker stats

开启容器

docker start debian

开启所有容器

docker start $(docker ps -aq)

进入正在运行中的容器

docker exec -it debian /bin/bash

重启容器

docker restart 容器 ID

文件传输

docker cp 本地文件路径 ID全称:容器路径
或
docker cp ID全称:容器文件路径 本地路径

卸载

停止容器

docker stop debian

停止所有容器

docker stop $(docker ps -aq)

删除指定容器

docker rm 容器 ID

删除所有已停止容器

docker rm $(docker ps -aq)

删除所有镜像

docker rmi 镜像 ID