局域网想要DNS指向自己服务器的解决方案(主机名称的作用)

原本想使用路由添加 DNS 记录,来指向局域网测试的服务器。结果意外的发现了一种非常简单的办法。那就是通过修改当前主机的名称来实现局域网内的一个“模拟域名”。

博主这里用的是 win7 的操作系统,刷系统的时候用户名写的是 Lellansin,于是我的电脑主机名也就默认的变成了: Lellansin-PC

于是情况就来了,我们打开 cmd,输入:

ping Lellansin-PC

你会发现,这其实是 ping 的通的。这也意味着,在局域网测试的时候,原本通过 192.168.1.XX/test.php (当前计算机在局域网中的ip + 网站路径) 的访问方式可以通过使用 lellansin-pc/test.php 来代替。如果你把当前计算机的名称改为 pms 的话也可以通过 pms/test.php 来访问。

不过貌似 windows 上改名字的时候不能加点(有知道的望留言提醒),不然改成 http://www.test.com 也是极好的。

在 linux 上的话就会自由一些,通过:

sudo vim /etc/hostname

我就直接把局域网里测试用的服务器的主机名改成了 http://www.testgame.com ,尝试确实是可以用的。

Advertisements

MySql ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

最开始的时候,技术反应 mysql 连接成功,但是调用超时。然后老板知道了这事选择直接重启(这真是一个错误的决定)。重启之后 mysql 就起不来了。接着我便被老板叫来解决问题。首先是运行看了看:

service mysql start
# 启动 mysql,报错 启动失败

mysql
# ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

网上说这个错误的文章有很多,但是最最重要的一点都是要求查看 mysql 的错误日志(错误日志目录由 mysql 配置文件指定)。有的人在日志里面发现时启动的时候某个文件打不开,去查看发现没有打开权限,修改权限之后就顺利启动了。不过博主碰到有点不同,他的错误日志是这样的:

... 
140422  7:00:17 [Warning] Disk is full writing './cobub/razor_login_log.MYD' (Errcode: 28). Waiting for someone to free space... (Expect up to 60 secs delay for server to continue after freeing disk space) 
140422  7:00:17 [Warning] Retry in 60 secs. Message reprinted in 600 secs
...

原来是服务器磁盘满了。。坑爹么这!!

df -ah     # 查看了一下发现硬盘已经 100% 了
cd /
du -sh *   # 从跟目录开始查看大小情况

# 反复根据上述命令来寻找异常大小的文件夹

最后发现居然是 nginx 的日志文件过大,访问+错误日志加起来约 14G。

但是删掉之后空间还是没有释放出来,当时不清楚是什么原因 reboot 重启服务器之后,空间就腾了出来 mysql 启动的问题就解决。

事后发现应该是被删除的文件还在被进程(nginx)访问,所以删除后并不会立即腾出空间。在碰到这个问题可以通过 lsof 命令来查看文件的占用,对应上述的情况为重启 nginx 来解决。

总结:

  • 出现异常第一时间要去看错误日志 啊,混蛋!!
  • 访问日志要定时清理 !!
  • 要注意监视服务器状态(内存、硬盘、CPU…)

linux tar not in gzip format

解压文件时出现如下问题:

$ tar -zxvf ./lellansin.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

可以考虑将 z 参数换成 j参数问题解决, ( bz2格式用j, gz格式用z ) 如果都不行的话就直接

tar -xvf ./lellansin.tar.gz

不过这样解压的速度有点慢,可以考虑使用 nohup 将命令转到后台, 避免终端超时

nohup tar -xvf ./lellansin.tar.gz &

php 网站搬家

#
# 原服务器
#
tar -cvf /home/wwwroot/lellansin.com    # 网站打包
mysqldump -u 用户名 -p 数据库 > 数据库.sql # mysql 数据备份
mv 文件 /home/wwwroot/lellansin.com/secret/

#
# 新服务器
#
wget http://lellansin.com/secret/文件  # 直接通过 http 在服务端下载
mysql -u root -p                       # 输入密码后进入 mysql 客户端
CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci; # 创建一个名为 mydb 的数据库
exit                                   # 退出 mysql
mysql -u 用户名 -p 数据库 < 数据库.sql # mysql 数据导入
tar -zxvf lellansin.com.tar.gz         # 解压网站之后移动到相应目录

# 如果担心时间比较久可以使用 nohup 命令, 例如
nohup tar -zxvf lellansin.com.tar.gz &

/home/wwwroot/lellansin.com/secret/ 中的 secret 是你自己定义的一个目录名称,可以把打包好的文件放在此处,让新服务器可以通过 wget 命令来直接下载,这样的好处是不用费时费力去搞 ftp。也不用蛋疼的先把备份下载到本地然后再上传到新服务器。(博主的两台服务器都在美国,试了一下,发现美国的下载速度果然非常快,峰值可以到 4M/s 平均快到 2M/s 了)

一般的 ssh 都有超时时间,如果担心命令执行时间过长导致 session 超时然后命令不得不被迫中断的话,可以使用 nohup 命令,该命令可以使得执行的命令脱离终端,即使关掉 ssh 客户端,服务器上依旧能继续执行。

要测试网站是否成功搬好,并且’无痛’搬家的话可以考虑使用本地解析, 通过修改 C:WindowsSystem32driversetchosts 文件来实现,添加:

// 形如
xxx.xx.xx.xxx    你的域名
// 例如
192.157.208.25   lellansin.com

在 hosts 文件中添加记录之后,那么本地就会解析域名到新服务器的地址。这个时候再用浏览器使用该域名访问的就是新服务器上的网站了。你可以看看新服务器上的网站是否有问题,没问题的话,就可以上域名服务商的网站修改域名解析了。

OpenWRT 编译 error GNU libiconv not in use but included iconv.h is from libiconv

编译的时候碰到一个常见的错误,但是却在一个陌生的地方爆出来:

gconvert.c:55:2: error: #error GNU libiconv not in use but included iconv.h is from libiconv

google 了一下资料还挺多,总之就是没搜到 OpenWRT 相关的,于是各种想法都有。后来才发现确实是自己不注意被绕进去了。其实依旧是用很常规的手段解决,

cd /home/lellansin/OpenWRT/svn/trunk/build_dir/host/pkg-config-0.28/glib
./configure --enable-iconv=no --with-libiconv=gnu
make
cd /home/lellansin/OpenWRT/svn/trunk/
make # 继续编译 OpenWRT

开始一下没绕过来,因为在 trunk 目录下没有 configure 文件。纠结了半天,还试过删除自带的 iconv 等等各种黑操作,最后想,这 gconvert.o 编译不出来。咱去下载一个编译成功后拷贝过来就是。想到这里才突然意识到 OpenWRT 里面应该是有源码的,然后找过去果然找到了 glib 的 configure。

总结:以后编译大一点项目报错,第一时间先跑去看报错子项的 configure

DB120-B1 OpenWRT 刷机记录

网上搜些资料, 不少我辈同胞直接把路由器刷成了砖头, 第一次干这事也有些忐忑, 直接就是用网线刷的, 没有使用 usb-ttl, 结果没想到就刷了两次就成功了.

准备工作

刷机步骤

  • 1. 设置自己的 ip 地址为 192.168.1.10 (同网段也可以)
  • 2. 打开 cmd, 直接命令 ping 192.168.1.1 -t
  • 3. 关闭路由的电源, 用牙签先顶住RST键, 然后打开电源 (切勿松开RST), 持续按住20秒钟 (DB120红色电源灯常亮). 当 cmd 上可以 ping 通的时候便松开RST键
  • 4. 打开浏览器访问 http://192.168.1.1, 界面如下

1

选择开始下载的固件, 上传成功之后会跳转到如下界面.

2

大概等待 2分钟之后当 cmd 上的 log 告诉你可以 ping 通的时候便意味着已经刷机成功.

可以访问 http://192.168.1.1 查看

3

默认账户 root 密码 admin

此时也可以使用 putty 远程登录了.

4

centos 安装 vsftp

# 使用yum安装
yum -y install vsftpd
# 查看版本
rpm  -qa | grep vsftpd
# 启动服务
service vsftpd start

# 添加 ftp 账号
adduser -g ftp -s /sbin/nologin -d /home/wwwroot/lellansin.com lellansin
# 为账号设置密码
passwd lellansin
# 设置网站目录所有者(这样ftp账号才能有权限修改这上面的文件)
chown –R lellansin /home/wwwroot/lellansin.com
# 设置目录权限(根据各自需要设置吧)
chmod -R 765 /home/wwwroot/lellansin.com