阿里云ECS上部署豆米博客

发表于 2024-03-27
更新于 2024-05-23
分类于 技术专栏
阅读量 105
字数统计 4273

1、背景

最近刚好赶上阿里云的打折活动,99块钱就可以拿下一个2核2G的ECS服务器,于是我就把之前预定的ECS服务器释放退费掉,换成这个活动的价格,实在是更香。以前博客是采用复杂的架构(前端静态文件放在CDN上,接口放在ECS服务上)实现的,对于SEO特别不友好,于是趁着这个机会,把豆米博客重构了一下,并重新部署。本篇就是讲一下部署豆米博客的一些流程,以防后续还会用到。

2、安装常用的软件

安装之前先执行更新:

1apt-get update 2apt-get upgrade

2.1、nginx

安装nginx:apt-get install nginx

之后在/etc/nginx/sites-available下创建blog.5udou.cn这个域名的解析:(后面执行SSL证书的时候,certbot会自动追加SSL相关内容进去)

1# the IP(s) on which your node server is running. I chose port 3000. 2upstream app_blog5uDou { 3 server 127.0.0.1:3000; 4 keepalive 8; 5} 6 7# the nginx server instance 8server { 9 server_name blog.5udou.cn; 10 access_log /var/log/nginx/blog5uDou.log; 11 12 # pass the request to the node.js server with the correct headers 13 # and much more can be added, see nginx config options 14 location / { 15 proxy_set_header X-Real-IP $remote_addr; 16 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 17 proxy_set_header Host $http_host; 18 proxy_set_header X-NginX-Proxy true; 19 20 # 继续转发到上面的upstream 21 proxy_pass http://app_blog5uDou/; 22 proxy_redirect off; 23 } 24} 25 26server { 27 # 监听80端口,遇到blog.5udou.cn的refer,转发到上面那个 28 # blog.5udou.cn的server 29 listen 0.0.0.0:80; 30 server_name blog.5udou.cn; 31} 32

接着在/etc/nginx/sites-enable下创建软链接:

1ln -s /etc/nginx/sites-available/blog.5udou.cn blog.5udou.cn

重启nginx即可:systemctl restart nginx

2.2、nodejs

接着安装最新稳定版nodejs(v20.11.1):

1curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - 2apt-get install -y nodejs 3

2.3、git

系统已经内置git软件,跳过即可

2.4、Mysql

这个时候安装Mysql:sudo apt install mysql-server

安装完之后需要做一些配置。

2.4.1、配置Mysql

执行下面的命令进行安全性配置:sudo mysql_secure_installation,里面的配置按照个人需求选择即可,有两个注意一下:

1# 选择密码强度,我这里选择了2 2Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2 3 4# Root密码这里不要设置了,因为使用了auth_socket,网上很多说这里需要设置,都是旧的版本 5Skipping password set for root as authentication with auth_socket is used by default. 6If you would like to use password authentication instead, this can be done with the "ALTER_USER" command. 7See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.

然后我们需要禁用掉远程以Root用户登录的权限,这样配置之后,在终端中执行mysql -u root -p,随便输入啥都可以直接登录了。

最后一步配置可以任何IP地址都可以访问该数据库,方便我们远程连接:

修改可以远程登录:/etc/mysql/mysql.conf.d/mysqld.cnf中的:

bind-address            = 0.0.0.0 

并更新ECS服务的入端口的防火墙

这样我们就可以用待会创建的用户远程登录ECS内部的数据库了。

2.4.2、创建数据库

接下来初始化博客数据库并添加一个用户对该数据库拥有所有权限:

1mysql > create database douMiBlog CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 2 3mysql > use mysql; 4 5mysql > CREATE USER 'test'@'%' IDENTIFIED BY 'test'; 6 7mysql > GRANT ALL ON douMiBlog.* TO 'test'@'%'; 8 9mysql > FLUSH PRIVILEGES; 10

3、安装证书

因为之前授权过blog.5udou.cn的证书,因此我们按照官网上说的步骤就可以授权成功:

certbot instructions

记得配置一下定时续约任务:

执行sudo certbot renew --dry-run即可。

4、备份数据库的一些操作

备份数据库的脚本:

1#!/bin/bash 2#数据库ip 3DBHOST='127.0.0.1' 4#数据库用户名 5DBUSER='test' 6#数据库用密码 7DBPASSWD='test' 8#需要备份的数据库,多个数据库用空格分开 9DBNAMES='douMiBlog' 10 11#备份时间 12backtime=`date +%Y-%m-%d_%H%M%S` 13#备份路径(当前目录) 14BACKPATH=$(dirname $(readlink -f $0)) 15echo $BACKPATH 16#日志备份路径 17LOGPATH="${BACKPATH}/log" 18#数据备份路径 19DBPATH="${BACKPATH}/db" 20 21#创建备份目录 22[ ! -d "${LOGPATH}" ] && mkdir -p "${LOGPATH}" 23[ ! -d "${DBPATH}" ] && mkdir -p "${DBPATH}" 24 25#日志记录头部 26echo "备份时间为${backtime},备份数据库表 ${DBNAMES} 开始" >> ${LOGPATH}/mysqlback.log 27 28#正式备份数据库 29for DBNAME in $DBNAMES; do 30source=`mysqldump --no-tablespaces -u ${DBUSER} -h${DBHOST} -p${DBPASSWD} ${DBNAME}> ${DBPATH}/${backtime}.sql` 2>> ${LOGPATH}/mysqlback.log 31 32#备份成功以下操作 $?获取上一个命令的操作结果,0代表成功 33ret=$? 34if [ $ret -eq 0 ];then 35cd ${DBPATH} 36#为节约硬盘空间,将数据库压缩 37tar -czf ${DBPATH}/${DBNAME}${backtime}.tar.gz ./${backtime}.sql > /dev/null 38#删除原始文件,只留压缩后文件 39rm -f ./${backtime}.sql 40#删除七天前备份,也就是只保存7天内的备份 41find $DBPATH -name "*.tar.gz" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1 42echo "数据库表 ${DBNAME} 备份成功!!" >> ${LOGPATH}/mysqlback.log 43else 44#备份失败则进行以下操作 45echo "数据库表 ${DBNAME} 备份失败!!" >> ${LOGPATH}/mysqlback.log 46fi 47done

将该文件拷贝到/etc/cron.daily即可每日自动执行;

公众号关注一波~

微信公众号

关于评论和留言

如果对本文 阿里云ECS上部署豆米博客 的内容有疑问,请在下面的评论系统中留言,谢谢。

网站源码:linxiaowu66 · 豆米的博客

Follow:linxiaowu66 · Github