centos自动化部署

阿里云centos6+系统下

因为我用的是java,所以要说java的自动化

其他语言作参考可以,别复制粘贴

在分区的时候有这样的写法

echo "n
p
1


wq
"|fdisk /dev/vdb&&mkfs.ext3 /dev/vdb1

这个操作完成了一个自动分区的功能,在echo的时候会将你提前指定的字符依次输入到交互控制台,避免了人工干预

fdisk 不能挂载超过2T的数据盘

在&&后面,也就是fdisk执行成功后才会执行后面的命令,所以不需要担心有什么问题无法解决,了不起去阿里云格式化整个服务器,需要分区一般都是一个崭新的服务器,

mkdir /data
echo '/dev/vdb1  /data ext3    defaults  0  0' >> /etc/fstab
mount -a
这个是挂载动作,无需多言

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

yum info nginx

echo "y
"|yum install nginx

这个是下载nginx,在shell中会按照顺序执行,所以先把rpm包下载下来,之后在用yum源下载,echo"y"的写法大部分软件都是通用的,就像是你在windows下安装提示你是否安装一样,只不过你提前告诉服务器我确实要下载这个东西。

在shell中你一样可以给另一个sh文用chmod件赋予权限,省的进去先给一片文件可执行权限了,

正常的工作环境中,我们往往部署服务器需要上传你的系统包,这里我们用一个小技巧检测上传进度,

在windows中你可以查看文件详情,这个里面包含了文件大小字节数,那么我们就利用同文件类型情况下windows与linux计算方式相同的设计

yum install -y unzip zip

这个和echo"y"一样

filename=xxx.zip//我打成zip是因为我里面有很多其他资源文件,看个人爱好
while (true)
do
filesize=`ls -l $filename | awk '{ print $5}'`//获取到linux环境的zip包的字节数
    if [ $filesize -ge 215161563   ]//用-ge和-eq是一样的,ps:-ge 大于等于 -eq 等于

//-ge后面有空格的哈,数字是你在windows环境看到的字节数,去掉逗号,写上去,完美
then

sleep 2s
unzip $filename//首先你要把你的系统放出来,
sleep 1s

chmod 777 other.sh//这里我有一个需要单独配置的部署文件,又懒得手动给权限

sleep 1s
./autoDeploy.sh
break
else
echo "文件传输中,请等待"
date
sleep 2s
fi

至此部署系统的文件已经成功抵达服务器

 

我们来简单说说部署的问题

建立一个名字叫做auto的sh文件,最好从linux环境写,windows会有编码问题

比方说我把java包放在了 /usr/local目录下

cd /usr/local
tar -xvf jdk1.7.0_17.tar

//这个就是给你的服务器搭建一个java环境,你会看到在java报出来的版本信息的
echo -e "export JAVA_HOME=/usr/local/jdk1.7.0_17" >> /etc/profile
echo -e "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
echo -e "export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> /etc/profile
. /etc/profile
java -version

用java绝大多数都要用到nginx做一个映射,这里的配置仅供参考,结合具体情况写

sed -i '23i proxy_cache_path /xxx/xxx/xxx levels=1:2 keys_zone=xxxCache:200m inactive=2d max_size=10g;' /etc/nginx/nginx.conf //这句话就很简单了,插入这么一段配置,对sed命令感兴趣去找一下专业文章,
sed -in-place -e 's/worker_processes  1;/worker_processes  4;/g' /etc/nginx/nginx.conf //因为下载的nginx都是一个配置文件,所以干脆用替换的方式把指定的东西替换掉,

sed命令之后会在同级目录自动生成一个有 nginx.confn-place的文件,这里面是你没有用sed命令之前的备份

因为用到的是mysql,但是我又不想手动修改mysql的帐号密码咋整

想到了mysql在刚下载下来是只有用户名的

那么我们用

mysql -uroot < /xxx/xxx.sql就很好的解决了这个问题


use mysql;
delete from user where user ='';
update user set password=password("PASSWORD") where user='root';
update user set host='%' where user='root' and host='localhost';
delete from user where host!='%';
flush privileges;

将这段复制成一个sql文件,就再也不用手动设置数据库密码了

数据库密码设置好了那么就要对建立数据库了,依然懒得手动创建,以下命令搞定

mysql -uroot -p$password < /xxx/database.sql //这个$password是我写到sql文件里的,在这里使用这个变量也没啥问题

至于移动你的代码到指定目录下就不再赘述了,mv,cd与cp搞定一切

如果你有配置文件,完全可以在shell中写好变量,然后指定你要替换的文件内容

ip=127.0.0.1

sed -in-place -e "s/ip更换/$ip/g" /data/tomcat/webapps/ROOT/WEB-INF/classes/xxx.properties

这里就是在xxx.properties有个 ip=ip更换,那么执行到这里,xxx.properties里面就会变成ip=127.0.0.1了,同样生成一个xxx.propertiesn-place的文件,

这种还是很方便的一个方式,例如你有大量的文件的内容要替换,写成shell总比去文件里一个一个翻方便的多,还不容易出错

省时省力省心,一次写好,永不加班

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值