'Linux' 分类

VPS自动化备份到Dropbox

任何数据不进行备份,后果就是懊悔百年,赤裸裸的仇加恨。对于服务器,备份是必须的,否则除非你能无数次地原谅自己。

本文就是想来记录下,实现VPS每天在固定时间里进行备份,并自动上传到Dropbox上。因为这不是经常用到的技术,所有很容易被忘记。记录下自己的搭建过程总是件好事情。

首先下载这个脚本,它来自 https://github.com/andreafabrizi/Dropbox-Uploader

curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh

然后给它可执行权限:

sudo chmod +x dropbox_uploader.sh

运行脚本:

从一台裸VPS开始部署一个应用运行环境

从一台Ubuntu Server 14.0.4裸服务器开始,第一步,SSH登录后立马修改root密码:

passwd //根据提示输入新密码即可

SSH 安全配置,禁用root登录,新建用户并赋予root权限 - sudo
adduser newmen //新建一个用户-newmen;输入密码后,附加信息可以不用理

gpasswd -a newmen sudo //赋予newmen 通过sudo行驶root权限的能力

如果需要,还可以
visudo

在root    ALL=(ALL:ALL) ALL 这行的下面添加
newmen    ALL=(ALL:ALL) ALL // 不添加这一行,会导致文件只能上传到users所拥有的目录。

如果选择密匙的方式登录SSH,需进行公私密匙在本地和服务器端部署。

修改默认SSH端口22
vi /etc/ssh/sshd_config
Port 22 改为  Port 一个自定义端口(端口必须在1025与65536之间)
Protocol 2

禁用root登录以及
将PermitRootLogin yes 更改为 PermitRootLogin no

最后在最末行添加
UseDNS no
AllowUsers newmen

重启SSH服务
service ssh restart 或者 reload ssh

最后登登录SSH的方式
ssh -p 端口 newmen@IP地址

安装防火墙 iptables:

查看默认规则
sudo iptables -L 或者 sudo iptables -S

sudo iptables -F //弃用默认的规则

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT //添加允许当前SSH链接规则,-A INPUT中的—A表示添加该规则到底部

sudo iptables -L //查看规则有哪些变化

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT //允许SSH端口通过,22改为自定义端口
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT //开放80端口

sudo iptables -I INPUT 1 -i lo -j ACCEPT //-I 告诉iptables插入该规则。 1表示需要一个链条和新规则要插的位置

sudo iptables -S //查看修改后的规则

sudo iptables -P INPUT DROP

保存配置的iptables规则,并选择自动加载当前规则

sudo apt-get update
sudo apt-get install iptables-persistent

搭建LEMP环境+Varnish 4X

sudo apt-get update
sudo apt-get install nginx
sudo apt-get install mysql-server
sudo mysql_install_db
sudo mysql_secure_installation //输入mysql root密码后,根据提示删除多余的数据
sudo apt-get install php5-fpm php5-mysql

sudo vi /etc/php5/fpm/php.ini
将cgi.fix_pathinfo=1 修改为 cgi.fix_pathinfo=0 //安全设置

sudo service php5-fpm restart

sudo vi /etc/nginx/sites-available/default
将内容更改为
server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name server_domain_name_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

sudo service nginx restart

sudo vi /usr/share/nginx/html/info.php //测试php是否成功安装


浏览 http://server_IP/info.php ,看到PHP服务信息,基表示成功

sudo rm /usr/share/nginx/html/info.php

安装 Varnish 4X

apt-get install apt-transport-https
curl https://repo.varnish-cache.org/GPG-key.txt | sudo apt-key add -
echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list
apt-get update
apt-get install varnish

sudo vi /etc/default/varnish
DAEMON_OPTS="-a :80 \ //端口改为80

vi /etc/varnish/default.vcl //加入自己想加入的任何规则

sudo /etc/init.d/nginx restart
sudo /etc/init.d/varnish restart

Ubuntu Server 14.04 安装或卸载 Varnish

在Ubuntu Server 14.04 LTS 安装Varnish,现在是4.0版,

  1. apt-get install apt-transport-https
  2. curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add –
  3. echo “deb https://repo.varnish-cache.org/ubuntu/ precise varnish-4.0” >> /etc/apt/sources.list.d/varnish-cache.list
  4. apt-get update
  5. apt-get install varnish

在执行到apt-get update这一步如果提示sources无法读取,编辑并把“”里的源地址加#注释掉即可。

卸载 Varnish

  1. sudo apt-get remove varnish //删除 varnish package
  2. sudo apt-get remove –auto-remove varnish //删除相关的东西

如果也想删除配置文件(将无法通过重新安装包来恢复)
sudo apt-get purge varnish
或者
sudo apt-get purge –auto-remove varnish

最后别忘了重启服务器。

管理Varnish

varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 //登录并管理varnish
varnish>-V //查看版本
varnish> vcl.list //列出全部配置文件

用Mempo为Debian加固

Mempo是专为加固Debian,为了让Debian更加安全。从内核到应用程序各个层面,提供最好的隐私和安全保护。比TailsWhonix更加强大。 默认预载VM+Tor+VPN。

Mempo的加固层次:

  1. 硬件
  2. 内核
  3. 系统
  4. Mempo 管理
  5. VM,隔离
  6. 网络
  7. 加密 – PGP
  8. 应用程序

Mempo还可以保护电子货币例如比特币(Bitcoin),Namecoin。使用的搜索引擎则是DuckDuckGo。

Mempo系统层

路由器刷 OpenWrt

OpenWrt 是一个基于Linux用于嵌入式设备的高度可扩展的系统。提供一个可添加软件包的可写的文件系统。刷OpenWrt后可以自由的选择应用程序和配置,而不必受设备提供商的限制,可以根据自己所需软件来定制完全属于自己的设备。

当路由器刷OpenWrt后,可以将路由变成一台web服务器,还有其它更多功能,例如:VPN,SSH隧道,BitTorrent,IPv6等等。

安装OpenWrt的方法:http://wiki.openwrt.org/zh-cn/doc/howto/generic.flashing
OpenWrt支持的无线路由器:http://wiki.openwrt.org/toh/start

Ubuntu 14.04 装 MySQL遇到 “key_buffer ”

Ubuntu 14.04 装MySQL时会收到这个警告:

[Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.

解决这个问题只需vi /etc/mysql/my.conf ;将”key_buffer = 16M” 改为”key_buffer_size = 16M” 即可。

此外,Ubuntu 14.04装php5-fpm已经不需要将/etc/php5/fpm/pool.d/www.conf里的listen = 127.0.0.1:9000改为listen = /var/run/php5-fpm.sock,现在默认就是使用listen = /var/run/php5-fpm.sock。

Ubuntu Server 安装JDK与Tomcat7和MySql

在阿里云VPS上部署一个jsp网站,系统是Ubuntu Server 12.4,安装JDK与Tomcat7和MySql。

apt-get install default-jdk
apt-get install tomcat7
apt-get install tomcat7-admin
apt-get install tomcat7-examples

当然你可以不安装示例数据“apt-get install tomcat7-examples”。

编辑/etc/tomcat7/tomcat-users.xml并加入下面的代码:






ok,执行service tomcat7 restart 重启Tomact7,并可以登陆到manager webapp 与 host-manager webapp ;如果需要修改端口例如8080改为80,执行:

vi /etc/tomcat7/server.xml

把port=”8080″改为port=”80″。

浏览“服务器地址”:8080 就可以看到tomcat 成功运行的提示信息。

“default-jdk”安装的Java在/usr/lib/jvm/default-java 所以,编辑 ~/.bashrc: 并加入下面代码:
export JAVA_HOME=/usr/lib/jvm/default-java
export CATALINA_HOME=/usr/share/tomcat7

这里解决了环境变量问题,JDK的环境变量问题,总会让大家很不爽,无论是在windows还是在linux上。

最后,jsp App放在tomcat7/webapps下。默认是放在ROOT下,这个得看自己喜好或app要求实际情况来选择。

上述安装过程如果遇到任何错误提示,请执行sudo apt-get update,或许这是一个万能的解决办法。

Linux 备份知识

Linux 系统一般情况下,以下这些目录是需要备份的:
/etc
包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。
/var
包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
/home
包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。
/root
是根(root)用户的主目录。
/opt
是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。
有些目录是应该考虑 不备份的。
/proc
应该永远不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图。它包括诸如 /proc/kcore 这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。
/dev
包含硬件设备的文件表示。如果计划还原到一个空白的系统,那就可以备份 /dev。然而,如果计划还原到一个已安装的 Linux 系统,那么备份 /dev 是没有必要的。

在生产环境中,我希望确保数据不会丢失,因而我会备份除 /proc 目录之外的整个系统。如果最担心用户和配置,我会仅备份 /etc、/var、/home 和 /root 目录。

Linux 备份与恢复速成指南 | developerWorks

Linux 下的文件恢复工具

只是 我发现IBM的developerWorks 就是一座神的殿堂。
常用的 Linux 文件删除恢复工具有 debugfs、ext3grep、extundelete 等。本文以 Ubuntu 12.04 为例。
foremost 和 extundelete
Foremost 支持恢复如下格式:avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip。
首先安装软件包
#apt-get install foremost
恢复单个类型文件
删除一个 USB(/dev/sdba1)存储器中一个 png 文件然后使用 formost 恢复。
#rm -f /dev/sdb1/photo1.png
#foremost -t png -i /dev/sdb1

恢复完成后会在当前目录建立一个 output 目录,在 output 目录下会建立 png 子目录下会包括所有可以恢复的 png 格式的文件。
需要说明的是 png 子目录下会包括的 png 格式的文件名称已经改变,另外 output 目录下的 audit.txt 文件是恢复文件列表。
恢复多个类型文件
#foremost -v -T -t doc,pdf,jpg,gif -i /dev/sda6 -o /media/disk/Recover
恢复完成后会在当前目录建立一个 output 目录,在 output 目录下会建立四个子目录(/doc,/pdf,/jpg,/gif),分别包括四种类型文件。另外 output 目录下的 audit.txt 文件是恢复文件列表。

VPS各种备份的SSH命令

例如:tar -czvf /var/backups/mysql.tar.gz -c /etc/mysql 是将数据库备份到var/backups。这里加“-c”参数就可以解决“tar: Removing leading `/’ from member names”这个提示。
还有:mysqldump -uwpdbuser -pmysqlpass mysqlname | gzip > backupdb.sql.gz
tar -zcvf /usr/backup/nginx_conf_$(date +%Y%m%d).tar.gz /usr/local/nginx/conf备份nginx配置文件

对于使用ubuntu的VPS可以在这里看到各种备份的SSH命令 这里有自动备份到Dropbox的教程。