阿里云ECS上部署豆米博客
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的证书,因此我们按照官网上说的步骤就可以授权成功:
记得配置一下定时续约任务:
执行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
即可每日自动执行;
公众号关注一波~
网站源码:linxiaowu66 · 豆米的博客
Follow:linxiaowu66 · Github
关于评论和留言
如果对本文 阿里云ECS上部署豆米博客 的内容有疑问,请在下面的评论系统中留言,谢谢。