Linux单机部署运维

246 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

前言

通常开发完一个项目就要进行部署啦,但苦逼的我还要负责部署,在部署的途中也遇到了很多问题,下面就来填一下踩到的吧。

Linux部署常用命令

查看服务器运行的java程序

ps -ef | grep java

杀死进程

kill -9 进程号

后台启动jar包

nohup java -jar jar包名 &

后台启动SpringBoot jar包并且指定输出文件

nohup java -jar jar包名 > log.log &

创建对应数据库用户

通常为了安全考虑,我们会为专门创建一个用户来进行此项目的数据库CRUD操作,所以我们通常都要创建用户并为其授予权限。

创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username:创建的用户名
  • host:指定的主机可以在哪里登录,如果为localhost就只能本地登录,如果为%就代表任意远程主机都能登录
  • password:用户密码

授予权限

GRANT privileges ON databasename.tablename TO 'username'@'host'
  • privileges:用户的操作权限、如SELECT、INSERT、UPDATE等操作,如果需要全部权限就为ALL
  • databasename:数据库的名字,全部数据库就为*
  • tablename:表名,全部表名就为*

MySQL定时备份

备份脚本创建

当我们项目成功部署上去后,一定要记得定时对数据库进行备份操作喔(经验教训),在MySQL中我们可以简单的使用mysqldump来进行数据库内容的导出。

#MySQLdump常用 要记得对MySQL进行环境变量配置
mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql

备份实现了,但还差了定时。在Linux中我们通常是通过BASH脚本来对需要执行的内容进行编写,然后使用crontab命令进行定时操作。

#!/bin/bash#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/databasenamme/mysqlbackup
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=root
#将要备份的数据库
database_name=databasename
​
#如果文件夹不存在则创建
if [ ! -d $backup_dir ]; 
then     
mkdir -p $backup_dir; 
fi#简单写法  mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
​
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
​
#找出需要删除的备份
delfile=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | head -1`
​
#判断现在的备份数量是否大于$number
count=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | wc -l`
​
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi

上面的脚本做了以下几件事情

  1. 配置备份的个数、保存的路径、文件名、用户名、密码、备份的数据库等参数。
  2. mysqldump进行备份数据库操作。
  3. 找到需要删除的备份文件并且删除。

在创建sh脚本成功后,要记得给其添加可执行权限,我们通过chmod命令来设置。

chmod u+x test.sh

ps:需要注意以上脚本要在Linux系统中创建撰写,如果在Window系统中创建后通过xshell等工具传输过去,执行的时候会EOF等错误。

定时任务创建

cron服务

在Linux中我们通常是使用crontab命令来实现周期的任务,cron是一个定时执行工具,可以在无需人工干预的清空下运行作业。

命令作用
service crond start启动服务
service crond stop关闭服务
service crond restart重启服务
service crond status查看服务状态
crontab语法

在crontab文件中负责定义需要执行的时间和命令,文件中每行包括了六个部分,其中前五个都是指定命令被执行的时间,最后一个是要被执行的命令。

minute  hour  day-of-month month-of-year day-of-week  commands 
0-60    00-23 01-31        01-12         0-6(0是星期日) 命令
特殊参数含义
*代表所有取值范围内的数字
/代表每的意思
-代表从某个数字到某个数字
代表分开的几个离散的数字

例子:每天凌晨执行数据库备份脚本

0 0 * * * /root/futianknowledge/mysql_dump_script.sh
创建cron脚本
  1. 创建cron脚本、命名为crontest.cron
  2. 添加定时任务,crontab crontest.cron
  3. 查看定时任务是否成功,crontab -l
注意事项

有时候会出现手动执行脚本正常运行,但定时任务执行脚本失败,这是普遍是因为环境变量的原因。

参考资料