苹果相关

浏览模式: 标准 | 列表 | 图文
为什么我的vps在重启后mysql都不能启动?

为什么我的vps在重启后mysql都不能启动?

为什么我的vps在重启后mysql都不能启动?带着这个问题,我看了很多信息,比如rc0.d/~rc6.d这些目录。一个个里面都有mysql的启动脚本。那为什么还是不能启动呢?

在vampire的提示下。看了:dmesg | grep mysql,结果返回空。

然后又运行了:cat /var/log/daemon.log,仔细翻了一下,居然发现了一条这个:

Nov 7 21:53:36 vpsname /etc/init.d/mysql[988]: ERROR: The partition with /var/lib/mysql is too full!

咦。这是什么??怎么会满了?然后我ls -la /var/lib/mysql

我靠:

lrwxrwxrwx 1 mysql mysql 29 Dec 10 2012 mysql -> /server/???/mysql/mysql/

得,原来我mysql的存储是放在/server/盘下面,/server盘是什么?df -h看了一下:

/dev/xvdb 30G 3.7G 25G 14% /server

原来是我挂载的硬盘啊。

于是我一下子心里就明白了。我在rc.local里写了一句:mount xxx xxxx,但是启动mysql在mount前面,所以。。。。

到这里我就明白了,要么。我在mount后面主动启动一下,要么我将/server的信息写到/etc/fastab里面。二选一。

我最终还是偷懒了。怎么做,我不告诉你们

转:vps备份方案的选择--dropbox

转:vps备份方案的选择--dropbox

最近在:http://mosir.org/ 的网站上发现一些好文章。比如这篇我要转的这篇。毕竟我现在用的就是VPS,用VPS的话,你也知道,最担心的是什么?有几点?

1、服务器的母机会突然挂掉(当然任何机器都会有这种情况)。怎么样快速转移,或者是有备份机?(小网站可能就是在等待了)

2、母机商跑路。这个嘛,在大家的VPS经历里还是会遇到过的。现在都是推荐选择大一点的供应商,比如virtualhost/linode/ovh等。我现在尽量不选择太便宜的,贵就贵一点,稳定。。。

3、备份,你总不能完全相信说服务器商对你说的,都是用的raid1服务器吧?总有万一的时候,这时候怎么办?

其实早些年都有一些脚本在网上流传,比如,mysql定时备份,自动发邮件到自己邮箱。(小网站都没问题,mysql最多也就上百M,每天增量的话,也没多少,就算全量,现在的mail其实也完全可以。大不了再压缩一下。大不了再切割一下,总能解决),对于代码什么的,现在都会想着是git发布/svn发布等,代码也能够保存在本地。然后附件直接存储到第三方。所有的就都解决了。但毕竟这样是存储在多个地方了。

于是这才是我转贴本文的原因,原文来自:http://mosir.org/html/y2012/use-dropbox-backup-vps.html

vps的定期备份是一件很必要的工作。大多数idc并没有提供免费的vps备份空间,这就需要我们自己来完成这个工作了。

一般情况下,得自己打包需要备份的数据,然后下载到本地,但这太麻烦。也有人通过lftp及脚本工具将需要备份的数据上传到某些ftp服务器上,但这也不稳妥。想找个稳妥的方法似乎只能出钱买备份空间了。

还好Dropbox提供了比较大的免费空间来让我们备份数据,申请了帐号后,只有2G空间,但可以很容易的扩展到20G左右,用来备份vps上的程序和数据也够了。如果需要更大的空间,可以考虑购买。

当然,靠谱的网盘有不少,但使用起来方便的并不多。这里就只考虑dropbox了。

在vps里的安装方法很简单,官方的说明在这里:https://www.dropbox.com/install?os=lnx

步骤如下:

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf -
这会在vps服务器上当前用户目录下创建.dropbox-dist目录并解压所有所需文件。

接下来运行dropboxd

~/.dropbox-dist/dropboxd
它会自动在用户目录下创建Dropbox目录。

然后你会看到不断出现类似这样的提示:

This client is not linked to any account...
Please visit https://www.dropbox.com/clilink?hostid=6a57828b2191161aea851e72a48f8451&cl=en_US to link this machine.
不要中断dropboxd的运行,将https://xxx链接复制出来,打开浏览器登录你的dropbox帐号,再把这个链接复制到浏览器打开,将vps机器加入到你的帐号中。

然后,有什么需要备份的打包后丢到~/Dropbox目录下即可。

因为dropboxd大约要占用2XM~1xxM的内存,所以同步完成后,按Ctrl-C中止其运行即可。

也就是说需要备份时运行dropboxd,备份完就中止它。

如果vps内存充足,也可以把它作为一个服务运行。可以下载官方的控制脚本:https://www.dropbox.com/download?dl=packages/dropbox.py,编辑rc.local,加入

/yourpath/dropbox.py start
这样,vps启动后就会自动运行dropbox,保证只要有新的备份文件被放到Dropbox目录就立即被同步到dropbox网络存储空间里去。

如果只希望同步dropbox目录下的某个子目录,或不希望同步某些子目录,可以自己参考修改dropbox.py,大约在1105行,这里有个排除列表的函数及使用说明。

完成。
赞。过两天试试
hostname的笔记

hostname的笔记

重启apache的时候报错:

/etc/init.d/apache2 restart
[....] Restarting web server: apache2apache2: apr_sockaddr_info_get() failed for (none)
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
... waiting apache2: apr_sockaddr_info_get() failed for (none)
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
. ok
看到这个(none),让我想起,我的ssh的登录路径:root@(none):~#
OK,在老鬼的提示上,用hostname函数进行了设置。问题解决:
root@(none):~# hostname
(none)
root@(none):~# hostname neatstudio.com
root@(none):~# hostname
neatstudio.com
--做个笔记
supervisor 守护程序

supervisor 守护程序

最近听到supervisor的机会越来越多了,主要是因为越来越喜欢将程序放到底层去运行,但又需要守护程序来监控它,万一它挂了怎么办?如果为每个程序都写上这样的脚本,那得写多少啊?

结果,在最近的看到的网上的内容里,就看到一大堆人在说用supervisor吧。

1、Asta谢的《build-web-application-with-golang》:第12章:应用部署

2、还是Asta谢的beego框架:Supervisord

3、来自the5fire的:进程管理器supervisor的使用(django实例)

其实还有很多关于这样的内容,就不一一贴出来了。只是beego框架中的介绍会相对比较简单,所以可以拿来当教程,再加上我的程序可能也会趋向于使用go来开发,就转贴一下这篇博客吧,只有三步:

  1. 安装 setuptools

    wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg   sh setuptools-0.6c11-py2.7.egg    easy_install supervisor   echo_supervisord_conf >/etc/supervisord.conf   mkdir /etc/supervisord.conf.d 
  2. 修改配置 /etc/supervisord.conf

    [include] files = /etc/supervisord.conf.d/*.conf 
  3. 新建管理的应用

    cd /etc/supervisord.conf.d vim beepkg.conf 

    配置文件:

    [program:beepkg] directory = /opt/app/beepkg command = /opt/app/beepkg/beepkg autostart = true startsecs = 5 user = root redirect_stderr = true stdout_logfile = /var/log/supervisord/beepkg.log
linux 批量重命名文件

linux 批量重命名文件

其实说白了就是利用sed,但怎么个用法,确实是有点想法,毕竟sed的功能实在太强了。

单一文件重命名就太简单了,mv一下就全来了。批量怎么办?
OK,一句话:
for i in `ls`; do mv -f $i `echo $i | sed 's/????/?????/'`; done
看到没。其实就是一个for in,然后 mv 一下。只是mv的蚨,用sed进行了改名,用上了管道,echo 等。
接着来:
1、改文件的首字母为a:
for i in `ls`; do mv -f $i `echo $i | sed 's/^./a/'`; done
2、改文件的末字母为a
for i in `ls`; do mv -f $i `echo $i | sed 's/.$/a/'`; done
3、文件名加前缀:
for i in `ls`; do mv -f $i `echo "prefix_"$i`; done
4、文件名小写变大写
for i in `ls`; do mv -f $i `echo $i | tr a-z A-Z`; done
顾名思议,大写变小写就是将A-Z和a-z换一个位置
5、改指定字符为其他(如后缀名)
for i in `ls`; do mv -f $i `echo $i | sed 's/.html/.php/'`; done
更多技巧,请参考sed的用法
转:如何封杀尝试Raspberry Pi SSH密码的来源IP

转:如何封杀尝试Raspberry Pi SSH密码的来源IP

标题是标题,但其实讲的内容当然是不一定只是在树梅的设备上用的。不要太纠结于表面,我不改标题是为了尊重原作者

原文来自于hugo zhu的网站:http://hugozhu.myalert.info/2013/03/08/block_failed_ssh_attempts_with_iptable.html,看了他的名字,你也可以猜出他的微博定就是http://weibo.com/hugozhu。OK,不扯蛋,上原文:

Raspberry Pi整天开着,如果用缺省SSH端口对外开放,就会经常遇到扫描SSH密码的肉鸡。虽然密码不是很简单,但还是感觉很不安全的。

系统的ssh登录日志文件在:/var/log/auth.log,登录失败时会记录以下格式的日志:

  1. Mar 7 10:31:51 raspberrypi sshd[24510]: Failed password for root from 221.8.19.129 port 4066 ssh2
  2. Mar 7 10:31:55 raspberrypi sshd[24514]: Failed password for root from 221.8.19.129 port 4079 ssh2
  3. Mar 7 10:31:56 raspberrypi sshd[24518]: Failed password for sshd from 221.8.19.129 port 4080 ssh2
  4. Mar 7 10:32:26 raspberrypi sshd[24522]: Failed password for sshd from 221.8.19.129 port 4149 ssh2

用最简单的Shell脚本来解决这个问题:

guard.sh

  1. #!/bin/bash
  2. last_ip=""
  3. tail -f /var/log/auth | while read LINE; do
  4. {
  5. if [[ "${LINE}" =~ "Failed" ]]; then
  6. ip="$(echo ${LINE} | awk '{print $(NF-3)}')"
  7. if [[ "$last_ip" == "$ip" ]]; then
  8. echo "block $ip"
  9. #curl -s --data-ascii "uuid=<my iphone's uuid>" --data "body=${LINE}" http://raspberrypi/pushme
  10. iptables -A INPUT -s "$ip" -j DROP
  11. fi
  12. last_ip=$ip
  13. echo $LINE
  14. fi
  15. }
  16. done

用root用户执行以下命令,也可以放到启动脚本里:/etc/rc.local

  1. nohup /root/bin/guard.sh > /var/logs/guard.log 2>&1 &

如果连续两次输错密码,那ip就会被封,我另外加了一个报警,会通知到我的手机,这下感觉安全了些。

登录Pi用iptables -L可以看到被封杀的IP列表,如果需要解封这些IP,可以用命令iptables -F,也可以用crontjob每天定时运行一次iptables -F来清除

脚本还很简单,还可以有不少改进,可以在评论里讨论。

---EOF---

越来越发现,sablog需要改版了。再不改。alexa排名下降不说,最关键的是,代码的显示不爽了。只是想到改版后有几千篇的文字需要一一调整就痛苦。

wget post数据

wget post数据

一直以为wget只是下载点东西的工具。看到一篇网上的文章,才注意到wget原来还可以post数据。

为什么我想用wget来post数据呢?是因为。。。busybox不带curl,而bash版的ddns更新(dnspod的域名更新)是使用curl的。既然curl不支持,我就google了一下:wget能够post数据吗?
果然,第一篇就是:
这段时间需要用wget做一些事情,主要是抓取网页的数据工作,发现wget还是很强大的。下面是一些应用场景:
1. 简单页面的抓取
wget的最基本用法
wget http://domain.com/path/simple_page.html
2. 添加自己的head
有些网站或者页面,需要额外的认证,所以需要添加额外的HTTP Header,使用方法:
wget --header="MyHeader: head_value" http://domain.com/path/page/need_header.php
3. 伪装成浏览器
有些网站,例如facebook,会检测请求方式是否是浏览器,如果不是正常的浏览器,那么会redirect到一个"incompatible browser"的错误页面。这时候需要wget伪装成一个浏览器(我是Mozilla Firefox!):
wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)" http://domain.com/path/page/check_user_agent.php
4. post数据到某个页面
wget不光可以用get方式请求网页,还可以post data的,那样就可以实现自动注册、自动登录了(有验证码的页面除外。。。。)
wget --post-data="user=user1&pass=pass1&submit=Login" http://domain.com/login.php
5. 访问需要登录的页面
有些页面的访问需要登录,访问的时候需要传递cookie,这时候就需要和上面提到的post方式结合。一般过程是:post用户名和密码登录、保存cookie,然后访问页面时附带上cookie。
wget --post-data="user=user1&pass=pass1&submit=Login" --save-cookies=cookie.txt --keep-session-cookies http://domain.com/login.php
wget --load-cookies=cookie.txt http://domain.com/path/page_need_login.php
暂时就探索到这些,以后有什么新的用法,继续补充。
不过,可惜的是,我运行下来之后,还有一个小问题:
https://dnsapi.cn/Record.Ddns: HTTPS support not compiled in.
哎。。。我没有openssl,https不支持啊。。纠结,uis2000的路真难走。
六种方法全面解释Linux下进程间通信

六种方法全面解释Linux下进程间通信

因为最近在写点东西遇到了这方面的问题。所以关注了一下,这段内容是摘抄来的。因为以前用PHP的时候,一般就是shm_attach/msg_get_queue/ 管道等

有些东西不是特别熟,所以记录下来做笔记

1.socket
2.管道(包括匿名管道适用于父子进程,命名管道)
3.信号量
4.共享内存
5.消息队列

1.socket
socket可以用于本地进程间通信也可以用于远程间,是最常用的。
2.管道--匿名管道
一般用pipe创建,在父子间通信。在父进程中关闭读/写管道,在子进程中关闭写/读管道。
2.管道--命名管道
一般用mkfifo来创建。如果没有说明管道是非阻塞的,那么一个为读打开的管道将阻塞直到有进程为写打开此FIFO。同样如果为写打开的管道将阻塞直到有进程为读打开此FIFO。
3.信号量
一个进程可以用kill发送信号至另外一个进程。
4.共享内存
使用函数:shmget、shmat、shmctl、shmdt
用shmget函数得到一块内存,并用shmat设置为允许本进程使用这块共享内存。使用完以后用shmdt删除内存块。
5.消息队列
使用函数:msgget、msgsnd、msgrcv、msgctl
使用步骤同上。
转:使用wget命令镜像网站

转:使用wget命令镜像网站

因为内容其实并不多,所以我干脆直接上原文了。做为一个PHP(拍黄片)的User,抠模版实在太常见了,所以。。。。找啊找,想不到,工具原来一直就在我们身边

原文地址:http://blog.chinaunix.net/uid-22780578-id-3346384.html
1、Linux下的wget命令:
wget :下载工具。
下载基本的文件:可以直接:wget -c http://××× 或者wget -c ftp://××
参数: wget -c:continue 表示断点续传..
-b :background 后台成为进程运行。
-O :文件另存 :
-i :下载后跟文件包含的链接。 wget -c -i **.txt
-t 尝试链接的次数, -t 0 无限次尝试
--linit-rate 限制速度 wget --linit-rate=200k http://××
更多基本命令参见 man
备份某个网站镜像: wget:-k 转换成为本地的链接
-r 下载对应链接的内容。(默认是所有)
-np 不下载站外链接
-p下载网页需要的元素,css ,img等
现在,基本可以用 : wget -c -k -r -np -p http://××× , 还可以用命令 -m --mirror 来实现: wget -c -m -p http://××
2、教你怎么保存好的网站,制作成chm,pdf,txt,epud
有时浏览网页时,发现一些较好的知识类网站,想保留下来,存个书签又不能很好保存,又不能离线查看,有时还会过期。所以最安全也最可靠的方式是把网站镜像下载,也就是所谓的把网站dowm下来,保存在本地,但是查看时也有诸多不便,因为每次又要找到主页(index),并且文件比较分散,不好管理而且不美观。 所以本文教你怎么保存网页,乃至整个网站
使用到的工具: wget (linux ,windows,mac、 windows下 winchm或者quickchm等,以上2个比较简单(或者使用官方的HTML HELP workshop,不过不推荐)好用,其他的还有很多epudbuilder ,就jotoh等,如要是转换pdf还需要Adobe Acrobat ,我主要是在win下完成的。

方法:

  1. wget : 凡是使用linux的肯定知道这个工具,大部分都用作下载工具其实它的功能远不止于此,可以来镜像网站,网站备份等windows下系统是没有这个工具的,但是可以通过其他的方法来使用这个工具。 以下载wget 的windows版本,http://gnuwin32.sourceforge.net/packages/wget.html还可以用 MinGw,cygwin等等win下的linux环境软件,可以随意安装一个,其实这两个的用途远不至于此。同时还可以使用其中的wget
    mkdir **(**为你要新建的目录,随意)
    cd **
    wget -m -L -k -p http:// ****
    或者
    wget -r -p -np -k http:// ***(更详细的wget介绍可参见man wget )
    以上命令是来down网页的
  2. 下载后会有一个或多个目录,记住路径。然后运行以上的winchm或是quickchm制作chm文档,具体参见软件自身的详细介绍。
  3. 可以使用winchm的单html输出功能,可以制作出一个html文件。此时就可以使用Adobe Acrobat制作pdf文档,或是别的什么的,
  4. 使用epud或是jotoh等来装换chm到epud文档,或者也可以直接编辑html到epud文档。。
debian上升级php5至php5.4的版本

debian上升级php5至php5.4的版本

官方的php5版本到现在还是5.3但我想用json_encode的unescape_unicode的选项,所以,只能升级PHP至5.4了

其实真的有现成的包,如果你搜索网上的内容,他们会也和你说,看一下:dotdeb.org吧。于是我看了一下dotdeb.org。确实不错,不但有升级教程,还有mirrors
1、安装dotdeb.org的源:参考:http://www.dotdeb.org/instructions/
有两种试,如果你只是安装PHP,就直接将下面的内容复制到/etc/apt/sources.list
deb http://packages.dotdeb.org squeeze-php54 all
deb-src http://packages.dotdeb.org squeeze-php54 all
2、GPG的KEY更新并加入到系统里
wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | sudo apt-key add -
如果你本来就是root,那上面的sudo就不需要了
3、apt-get update
4、apt-get upgrade
就这样,你成功了。。。