Linux部署运维笔记
前言
通常开发完一个项目就要进行部署啦,但苦逼的我还要负责部署,在部署的途中也遇到了很多问题,下面就来填一下踩到的
坑
吧。
Linux部署常用命令
查看服务器运行的java程序
ps -ef | grep java
杀死进程
kill -9 进程号
后台启动jar包
nohup java -jar jar包名 &
后台启动SpringBoot jar包并且指定输出文件
nohup java -jar jar包名 > log.log &
创建对应数据库用户
通常为了安全考虑,我们会为专门创建一个用户来进行此项目的数据库CRUD操作,所以我们通常都要创建用户并为其授予权限。
创建用户
1 | CREATE USER 'username'@'host' IDENTIFIED BY 'password'; |
- username:创建的用户名
- host:指定的主机可以在哪里登录,如果为
localhost
就只能本地登录,如果为%
就代表任意远程主机都能登录 - password:用户密码
授予权限
1 | GRANT privileges ON databasename.tablename TO 'username'@'host' |
- privileges:用户的操作权限、如SELECT、INSERT、UPDATE等操作,如果需要全部权限就为
ALL
- databasename:数据库的名字,全部数据库就为
*
- tablename:表名,全部表名就为
*
MySQL定时备份
备份脚本创建
当我们项目成功部署上去后,一定要记得定时对数据库进行备份操作喔(经验教训),在MySQL中我们可以简单的使用mysqldump来进行数据库内容的导出。
1
2 #MySQLdump常用 要记得对MySQL进行环境变量配置
mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql备份实现了,但还差了定时。在Linux中我们通常是通过BASH脚本来对需要执行的内容进行编写,然后使用
crontab
命令进行定时操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 !/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上面的脚本做了以下几件事情
- 配置备份的个数、保存的路径、文件名、用户名、密码、备份的数据库等参数。
- mysqldump进行备份数据库操作。
- 找到需要删除的备份文件并且删除。
在创建sh脚本成功后,要记得给其添加可执行权限,我们通过chmod命令来设置。
1 | 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文件中负责定义需要执行的时间和命令,文件中每行包括了六个部分,其中前五个都是指定命令被执行的时间,最后一个是要被执行的命令。
1 | minute hour day-of-month month-of-year day-of-week commands |
特殊参数 | 含义 |
---|---|
* | 代表所有取值范围内的数字 |
/ | 代表每的意思 |
- | 代表从某个数字到某个数字 |
, | 代表分开的几个离散的数字 |
例子:每天凌晨执行数据库备份
脚本
1 | 0 0 * * * /root/futianknowledge/mysql_dump_script.sh |
创建cron脚本
- 创建cron脚本、命名为crontest.cron
- 添加定时任务,crontab crontest.cron
- 查看定时任务是否成功,crontab -l
注意事项
有时候会出现手动执行脚本正常运行,但定时任务执行脚本失败,这是普遍是因为环境变量的原因。