从零开始搭建个人博客

本贴最后更新于 695 天前,其中的信息可能已经时异事殊

前言

由于我上次不小心导致我服务器数据被清空,并勒索我比特币。所以我把服务器重置了。重新整了下博客网站,这里记录下,下次换服务器的时候遇到问题就方便多了。

image-20220502174757329

配置信息

  1. 这里是基于 solo 搭建的一个个人博客
  2. 服务器是使用的阿里云的服务器,系统是 Centos 8
  3. MySQL 使用的是 8.0 版本
  4. 关于服务器购买和连接不懂的可以看 几分钟教会你从购买服务器到远程连接 这篇文章。

准备阶段

yum

镜像修改

  • 因为 centos 官方停止维护 yum 镜像源,所以我们要修改为阿里云的镜像
//进入镜像源
cd /etc/yum.repos.d

//删除原来的镜像
rm -f *.repo

//使用阿里云的
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

//缓存安装包
yum makecache

yum 源更新

yum clean all

yum makecache

yum -y update

MySQL

yum 安装 MySQL

  1. 下载 mysql yum 仓库的 RPM 包:这里我们也可以直接去官网下载,然后拷贝到我们的服务器里。点击去官网下载

    wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm
    
  2. 将下载好的安装包挂载到本地:(注意后面的文件,文件名按照下载的包名为准)

    yum localinstall mysql80-community-release-el8-1.noarch.rpm
    
  3. 禁用 centos8.0 自带的 yum mysql 模块

    yum module disable mysql
    
  4. 安装 mysql:

    yum install mysql-community-server
    
  5. mysql 的相关启动命令

    启动服务:systemctl start    mysqld
    停止服务:systemctl stop     mysqld
    重启服务:systemctl restart  mysqld 
    查看服务状态:systemctl status mysqld
    
    设置mysql开机自启:
    systemctl enable mysqld
    

MySQL 新建用户并设置远程连接

  1. 启动 mysql 之后,我们查看 mysql 安装时生成的随机密码,然后登陆 mysql

    grep 'temporary password' /var/log/mysqld.log
    
  2. 修改我们的密码,如果新密码因为太简单而报错,这边建议改成复杂点的密码,不然密码太简单挺危险的。如果就想用简单的密码,看第 3 条

    ALTER USER 'root' @'localhost' IDENTIFIED BY '新密码';
    
  3. 修改 MySQL 密码验证规则:

    • MySQL5.7 版本:
      mysql> set global validate_password_policy=0;
      
      mysql> set global validate_password_length=1;
      
    • MySQL8.0 版本:
      1. 先使用一个复杂的密码进去
      2. 运行下面的命令
        mysql> set global validate_password.policy=0;
        
        mysql> set global validate_password.length=1;
        
      3. 重新设置密码
        ALTER USER 'root' @'localhost' IDENTIFIED BY '新密码';
        
  4. 创建新用户,并且修改访问权限

    # 创建用户
    CREATE user 'solo'@'%' IDENTIFIED BY '设置solo用户的密码';
    
    #授予solo用户,solo数据库下所有表的所有权限
    GRANT ALL PRIVILEGES ON *.* TO 'solo.*' @'%' WITH GRANT OPTION;
    
    #刷新权限
    FLUSH PRIVILEGES;
    
    • GRANT:赋权命令
    • ALL PRIVILEGES:当前用户的所有权限
    • ON:介词
    • 当前用户对所有数据库和表的相应操作权限
    • TO:介词
    • ‘root’@’%’:权限赋给 root 用户,所有 ip 都能连接
    • IDENTIFIED BY ‘123456’:连接时输入密码,密码为 123456
  5. 测试是否能远程连接,使用 navicat 测试,测试完毕之后 MySQL 准备工作完成!
    image-20220503170029638

nginx

yum 安装 nginx

#安装
yum install nginx 

systemctl enable nginx.service  # 让 nginx 开机自启
systemctl disable nginx.service # 取消开机自启
systemclt start nginx.service   # 立即启动 nginx
systemclt restart nginx.service # 重启 nginx
systemclt stop nginx.service    # 停止 nginx
systemclt reload nginx.service  # 重新加载配置文件

docker

按照官网文档安装步骤:点击进入官网

solo 搭建

假设我们的域名是www.test.com** 使用的端口号是 8848**

  1. 使用 docke 拉取 solo 的最新镜像
    docker pull b3log/solo
    
  2. 启动容器
    docker run --detach --name solo --network=host \
        --env RUNTIME_DB="MYSQL" \
        --env JDBC_USERNAME="solo" \
        --env JDBC_PASSWORD="你的密码" \
        --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
        --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
        b3log/solo --listen_port=8848 --server_scheme=https --server_host=www.test.com --server_port=
    
  3. 启动之后配置 nginx 反向代理:进入 /etc/nginx/conf.d 下的 nginx 配置文件,修改配置如下即可
    upstream backend {
        server localhost:8848; # Solo 监听端口
    }
    server {
        listen       443 ssl; # 端口号
        server_name  test.com; # 绑定域名
    
        #记得换上自己的证书,这个自己去申请有免费的,下载nginx的,然后放到自己服务器中
        ssl_certificate /etc/nginx/certs/www.test.com.pem;
        ssl_certificate_key /etc/nginx/certs/www.test.com.key;
    
    
        ssl_session_cache shared:SSL:10m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5";
        ssl_prefer_server_ciphers on;
    
            access_log off;
    
        location / {
            proxy_pass http://backend$request_uri;
            proxy_set_header  Host $http_host;
            proxy_set_header  X-Real-IP $remote_addr;
            client_max_body_size  10m;
        }
    }
    
    # 将 http 协议跳转到 https
    server {
        listen       80;
        server_name  test.com;
        rewrite ^(.*)$  https://$host$1 permanent;
    }
    
  4. 此时我们访问自己的域名www.test.com** 就可以跳转到 solo 的主页了。**

注意事项!!!

  1. 服务器的防火墙不用的端口记得关闭
  2. 数据库密码不要太简单,因为很容易被黑客用脚本暴力试出来
  3. 每写一篇文章记得备份,留个后手
  4. 如果使用了 redis 的话,记得设置上密码,或者修改下默认的端口,否则服务器有很大几率被黑
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1424 引用 • 10041 回帖 • 469 关注
  • 博客

    记录并分享人生的经历。

    270 引用 • 2386 回帖
  • 安装

    你若安好,便是晴天。

    128 引用 • 1183 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...