抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

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

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

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

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

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

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

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

参考资料