服务器运维脚本记录

来源:互联网 发布:git ignore mac 编辑:程序博客网 时间:2024/05/16 18:35
<?php
Ubuntu server 14.04 amd64 lamp环境搭建手册
A、ubuntu安装 
a)采用默认英文安装,可选装SSH服务其他无需安装
b)# sudo apt-get install openssh-server (如果系统未默认安装) openssh 服务、客户端一起安装


/home/sean/.ssh/下面生产auth文件 并导入公钥
# mv id_rsa.pub authorized_keys  #生成验证文件 
//服务器2生产密钥
ssh-keygen -t rsa


修改 # vi /etc/ssh/ssh_config  
PasswordAuthentication no #把前面的注释#取消,yes修改为no,这样就禁用所有账号通过密码验证登录
安装 apt-get install lrzsz unzip  方便代码上传




1、amp安装
1、最小化安装amp
# sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server
中途安装mysql时提示设置root管理员密码,2次输入后继续。
安装好后自行测试是否成功。


可开启mysql远程访问 
可修改apache2默认目录 /var/www/html


Mysql远程授权
例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 
#GRANT ALL PRIVILEGES ON *.* TO 'thehotgames'@'%'IDENTIFIED BY 'weekmovie2013' WITH GRANT OPTION;
#flush privileges;
修改配置文件/etc/mysql/my.cnf 注释 bind-ip 127.0.0.1
检查防火墙 3306端口是否开启


2、安装memcached 
# sudo apt-get install memcached
安装完Memcache服务端以后,我们需要启动该服务
# sudo memcached -d -m 128 -p 11211 -u root
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
接下来 安装Memcache客户端
# sudo apt-get install php5-memcache
重启apache服务后 可测试 memcache


3、安装其它php扩展
# sudo apt-get install php5 
//然后按tab键  可以看到php扩展
# sudo apt-get install php5-gd php5-curl


重启apache生效


/etc/init.d/appname restart/stop/start


/etc/appneme  相应的配置文件目录


安装mcrypt 扩展
# sudo apt-get install php5-mcrypt
# cd /etc/php5/apache2/conf.d/
# sudo ln -s ../../mods-available/mcrypt.ini  ./20-mcrypt.ini
# sudo service apache2 restart


/**
 * ubuntu 14.04 64 位下线上环境搭建记录 
 * @author guoxu <guoxuivy@gmail.com>
 * @date 2016-04-20
 *
 * 系统信息 ubuntu server 14.04 amd64
 *
 * Unison+inotify-tools实现Ubuntu主机间的多机触发式双向同步
 */




//同时安装了SSH Server和SSH Client
sudo apt-get install openssh-server openssh-client
//测试ssh是否启动
ps -e |grep ssh 


//安装Unison
sudo apt-get install unison


//安装Inotify tools
sudo apt-get install inotify-tools




//配置2主机ssh密钥互通


server1    192.168.3.30     sean


server2    192.168.3.20 sean2




//服务器2生产密钥
ssh-keygen -t rsa


//各自创建 文件
vi authorized_keys 
//将对方的 id_rsa.pub 内容导入到authorized_keys文件 实现ssh无密码互联
//测试是否互联成功
ssh sean2@192.168.3.20 


//解决脚本无法自动登入ssh问题 有提示 需要输入yes  防止脚本执行失败
//SSH登陆时会忽略known_hsots的访问,但是安全性低; 
//修改 # vi /etc/ssh/ssh_config  
StrictHostKeyChecking no


//修改下面项目 yes修改为no,这样就禁用所有账号通过密码验证登录  只开放密钥验证登入
PasswordAuthentication no 






//编写同步脚本 配置对方的id地址和账户
vi unisonsync.sh


#!/bin/bash


export HOME=/home/userX


echo $HOME


ip="user1@192.168.0.101" 


src="/var/www/html/"


dst="/var/www/html/"


 
/usr/bin/inotifywait -mrq -e create,delete,modify,move $src | while read line; do


/usr/bin/unison -batch -sshargs "-i /home/userX/.ssh/id_rsa" $src ssh://$ip/$dst


echo -n "$line " >> /var/log/inotify.log


echo `date | cut -d " " -f1-4` >> /var/log/inotify.log


done


//其中userX是指该服务器上的默认用户名。 有2处需要修改
//授权脚本的可执行权限
chmod 777 ~/unisonsync.sh


//改变需要同步的文件的访问权限
sudo chmod 777 /var/www/html


//改变对日志目录的访问权限:
sudo chmod 777 /var/log


//脚本编写完毕。测试脚本
//在server2上键入命令开启同步:
cd ~
./unisonsync.sh &
 //然后随便复制一个文件到同步目录/var/www/html,再查看server1上的同步目录,看看该文件是否也被增加了。


//将同步脚本设置为Ubuntu的开机启动脚本
sudo vi /etc/rc.local 
//在文件末尾(exit 0)之前添加如下代码:(有问题 会以root用户执行 ? 需要以sean用户来执行) sudo 命令可以达到此目的  
//加入到自启动后日志被默认定为到 /sync_err.log 文件中  可以通过监听sync_err文件来提供报警
sudo -u sean2 nohup /home/sean2/unisonsync.sh > /dev/null 2>/sync_err.log &




//保存文件并重启服务器。测试




//问题解决  丢弃所有输出 不需要写入nohup.out文件  完美解决问题 关闭会话不会中断
nohup ./unisonsync.sh  > /dev/null 2>&1 &


//只保留错误信息到nohup.out文件中,以便发现问题  )
nohup ./unisonsync.sh > /dev/null 2>log &


//保持日志 生产环境可用(下为美国再用)
nohup /root/unisonsync.sh > /dev/null 2>/sync_err.log &
//如需重启同步功能 kill掉3个相关进程就好了
sudo kill -9 1458 




// ssh ip地址变化后连接互信导致nohup失败?




//防火墙配置
sudo ufw status
sudo ufw enable
sudo ufw disable
//查看防火墙规则 默认关闭所有端口
sudo ufw status verbose
//开启相应端口
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 3306






/**
 * 日常运维操作
 */
tar -cvf uploads.tar *    //将当前目录内容归档


//将文件发送到远程服务器10.150
scp /var/www/uploads/uploads.tar root@10.150.61.130:/var/www/uu




cd uu
tar -xvf uploads.tar //解压
//文件夹内容合并覆盖到uploads中
cp -R ./uu/* ./uploads/  




//定时任务
crontab -e
//它的意思就是每过两分钟就向time.log文件中写入当然的系统时间.
*/2 * * * * date >> /home/postgres/time.log 

service cron restart

*/2 * * * * php /root/auto.php >> /root/auto.log



//将file1.txt追加到file2.txt的末尾
cat file1.txt >> file2.txt
//清空文件内容

true > file.txt


技术指导


0 0