解决提示Please check that your locale settings的问题

RT,有时候改了区域或者终端配置不合适的时候都可能会遇到这个问题
大致显示这些内容:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE =
etc...

有一个比较简单的办法即可解决:

在~/.bashrc里加一行设置

vim ~/.bashrc

export LC_ALL=C

保存退出后重新进入终端即可

解决debian9下vim内鼠标右键不能粘贴的问题

RT debian9开始,vim右键会变成— (insert) VISUAL —的状态,没法粘贴很不方便。

解决办法:

vim /usr/share/vim/vim80/defaults.vim

查找 set mouse
if has('mouse')
  set mouse=a
endif

将值从"a"改成"r"
if has('mouse')
  set mouse=r
endif

然后保存退出即可,下次启动vim即生效

记一次业务整体迁移

RT 东西比较杂 算是随笔记录一下,参考资料蛮多的
大致的情况是:
操作系统均为debian 8.6 x64
服务器A(物理机),有一个普通的http业务,一个java业务,一个mysql业务,一个FTP业务
服务器B(套在A里面且没有公网ip的虚拟机)一个dz论坛,一个mysql业务
服务器C(目标机器,新系统,而且还有个还没挂载的硬盘)
A和C不在一个地点,需要公网传输,且A和B上面的业务都要整合在C上面,另:A上面的mysql可舍弃(不要问我为啥不要数据了,设定就是如此)
 
第一步:先部署一下新机器的环境
大致需要的有:tengine php5-fpm mysql-server openjdk vsftpd db5.3-util
以及有个没格式化也没挂载的硬盘

mkfs.xfs /dev/sdb -f (反正我是用xfs,以及这个不需要分区,直接把盘挂上去好了)
mount /dev/sdb /var/hdd

重启后保持挂载:
blkid 查看下这块硬盘的uuid

vim /etc/fstab

最下面直接按照这个格式写一下

UUID=12345678-1234-1234-1234-123456789012       /var/hdd      xfs     defaults        0       0

保存退出即可
其他的没啥事情 按照需求创建一些文件夹 以及mysql记得先设置个密码
 
第二步:先把最简单的搞起来(java/http/ftp)
这个应该最简单了
java装好openjdk即可
没有dz论坛,纯http也只是需要配置下tengine的配置即可,可参考以前的博文:http://blog.bilicloud.com/?p=133
ftp依旧:http://blog.bilicloud.com/?p=25
搞起来后文件通过tar打包,scp发送过去,再到指定的文件夹解包即可
文件太大/太杂/需要保持文件夹结构的话可以参考下偷懒的方法:http://blog.bilicloud.com/?p=172
 
第三步:迁移数据库
开头说明了一下,服务器A的数据库里的数据可以舍弃,所以这样就简单得多了~我们只需要把服务器B的数据库迁移即可
先确认一下版本,发现服务器B的版本要比C的版本老一点,用apt-get升级一下,升级后确认两边版本一致,然后stop掉mysql的服务
之后查看了一下数据库所在位置,cat /etc/mysql/my.cnf 找到路径 进去,tar打包一下,然后scp直接发到服务器C,解包,放到指定位置,然后检查一下文件夹和里面的文件的权限,如果不是mysql的话需要chown mysql:mysql -R 来设置一下权限
完事后mysql -uroot -p 登陆一下 然后show DATABASES; 查看下数据库是否存在,也可以use一下后show一下 看看能否正常读取之类的。总之我的迁移是顺利的完成了。
 
第四步:迁移dz论坛
这一步我们大致跟着官方文档走,官方文档地址见参考资料里的链接~
先将论坛全部tar打包,然后依旧scp发过去,解包,放到指定位置,确认权限
然后写一下tengine的配置文件,具体可参考http://blog.bilicloud.com/?p=133
之后修改以下文件,改一下数据库的账号密码(这里我创建了一个新的用户名和对应的密码 数据库上要做一下授权,然后再从这边改一下密码)

./config/config_global.php
./config/config_ucenter.php
./uc_server/data/config.inc.php

改完后 重启tengine 然后。。。嗯?502?
看了一下log 发现是fastcgi 连接被拒绝,然后ss -nat发现。。。根本就没有fastcgi的端口,检查了一下php-fpm.conf发现 原来我忘记写listen了。。。果断补一下

vim /etc/php5/fpm/php-fpm.conf

直接跳到结尾,粘贴上:

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.backlog = -1

:wq保存退出 然后重启一下php5-fpm服务,然后浏览器刷新下页面。。。起来了~
之后做了一下登陆 发帖 删帖测试 都一切正常,迁移任务完美结束=w=
 
参考资料:
DZ资料库-论坛迁移:http://faq.comsenz.com/library/bbsapp/movesite/movesite_index.htm

MySQL 重设密码

某MC服把服务器上mysql的root密码居然给忘了。。。
于是。。。搜了一番,找到了这样的一个教程:
https://segmentfault.com/a/1190000000412194
一、适合ubuntu/debian的方式
这个方法只能用于ubuntu/debian 系统上,不过好处在于不需要停掉mysql的服务

cat /etc/mysql/debian.cnf

显示的内容是:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = PASSWORD
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = PASSWORD
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

我们记下来其中的user和password
然后直接

mysql -udebian-sys-maint -p

回车后输入password里面的密码,成功进入~
然后直接:

use mysql;
update user set password=PASSWORD("newpassword") where User='root';
flush privileges;

全部执行完后就OK了~
二、比较通用的办法
这个办法需要停mysql,不过像是centos之类的可以用这个方法

service mysql stop

以安全模式启动mysql

mysqld_safe --skip-grant-tables --skip-networking &

然后直接登陆,不需要添加-p

mysql -uroot

成功登陆,然后改密码~

Linux的快捷方式和文件的镜像状态的创建

这一块我之前真没接触过,毕竟都是实际操作随用随学的。。。
接触这个是因为有一个很大的文件,打算从本机拉到/var/www下面,方便另外一台服务器通过wget直接下载,复制还是需要一定时间的,直接超链接还是挺方便的
使用方法也很简单:
在需要创建的目录上输入

ln -s <文件绝对路径>

回车即可
不需要的时候直接在当前文件夹rm掉,即可rm掉这个快捷方式
不加-s的话是镜像的模式,会复制一份过来,然后其中一份变动的时候另外一份会跟着变动,至于删除了其中一份,另一份会怎样。。。我还真没试过。。。~

多MAC下通过统一私钥来达到1个key即可让所有电脑无密码SSH登陆

因为有两个MAC,然后之前一直是傻傻的各自生成一个KEY然后导入到服务器上的,直到。。。需要导入自己的公钥到工作用的堡垒机上的时候,被我们的老大吐槽了。。。
这次完全是靠MB点拨然后自行摸索到的技巧=W=并没有参照其他地方,算是原创吧~
按照MB的指点,生成的key跟你的电脑本身没有任何关系,只是“生成”了后在每次访问的时候自动会读取一下那个指定的文件而已。所以只需要保证你的每个MAC(LINUX亦是如此)的个人账户下的.ssh文件夹内的id_rsa文件(也就是私钥)一致即可,而公钥中的“计算机名”则也无所谓一直不一致,那个只是类似于标识生成的计算机名和用户名而已。
同步完成后,由于是从另一个计算机上过来的,所以这时候这个文件还不属于你自己,这个时候只需要chmod一下即可:

chmod 0600 id_rsa

然后就可以用啦~
感谢老大MB的指点=w=
另附:mac下无密码直接通过SSH登陆服务器

mac下无密码直接通过SSH登陆服务器

仍然是从网上搜的教程,参考链接:http://www.cnblogs.com/dudu/archive/2012/12/11/linux-ssh-without-password.html
先说一下,mac下无需root权限
理论上大概就是:生成本机的KEY-上传到服务器上-导入一下-完成
1、创建本机的key

cd ~/.ssh/ #进入到你的.ssh目录下
ssh-keygen -t rsa #创建一个key

回车后分别会让你输入:
1、输出文件名(不输入任何东西的话默认就是id_rsa)
2、输入一个加密密码(可以不输入)
3、再输入一次密码(不需要密码的继续直接不输入来回车)
然后就会提示公钥和私钥的路径。生成完毕
2、上传到服务器上

scp id_rsa.pub 账号@服务器:~/.ssh/id_rsa.pub #上传公钥文件到这个服务器的~/.ssh/id_rsa.pub这个路径

回车后会提示让你输入服务器密码,输入后回车,文件很小所以上传起来很快
3、导入公钥到服务器上

ssh 账号@服务器 #登陆到你的服务器上

这一次会提示让你输入账号的密码。输入后进入服务器

cd ~/.ssh/ #进入到.ssh文件夹内
cat id_rsa.pub >> authorized_keys #把上传的公钥里面的内容导入到系统内

然后就搞定了,可以退出登录测试一下
依旧是ssh 账号@服务器
如果一切正常的话回车后即可直接进入服务器而无需密码
另附:多MAC下通过统一私钥来达到1个key即可让所有电脑无密码SSH登陆

Debian下ll命令的设置方法

之前一直用centos所以比起ls更习惯用ll,比ls能看到更多有用的信息,然而自己对linux并不是很了解,一直以为ll和htop类似属于三方程序,然后在debian上输入ll一直提示command not found,直到刚才谷歌了一下才明白原来ll就是ls -l。。。并且找到了设置方法(查到的地方是:http://bbs.chinaunix.net/thread-2108040-1-1.html),以下正文
1、需要的程序

alias

这个应该是不自带的样子(吧。。。因为我之前apt-get过这个程序所以并不知道是不是自带的)

apt-get install alien

2、设置ll命令

alias ll='ls -l' #还是挺好理解的,就是告诉程序ll等于ls -l 注意引号是单引号不是双引号

然后就可以直接用ll了=w=