分类
Linux

VI转换文件编码

在Windows平台写Shell脚本,放到Linux下执行失败。控制台输出:bin/sh^M: bad interpreter: No such file or directory

这是因为不同系统的编码格式引起的。

用vi打开文件,利用如下命令查看文件格式
:set ff 或 :set fileformat

可以看到如下信息
fileformat=dos 或 fileformat=unix

利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix

:wq (存盘退出)

再次执行,成功。

分类
Linux 笔记

SSH Socket 代理

前几天发下shadowsocks不能用了,猜测是“两会”期间加强了GFW。我用的是亚玛逊云vps,虽然shadowsocks不能使用,但ssh可以正常连接。于是使用ssh隧道开启socks代理。

ssh -i LightsailDefaultKey-us-east-1.pem -N -f -C -D 0.0.0.0:1080 用户名@主机ip

参数说明:

-q 静默运行
-N 是不执行远端命令
-f 后台运行
-C 压缩
-i ssh验证密钥

然后把这段命令加入启动脚本即可。

连接ssh我使用的是密钥验证,如果使用密码验证,加入启动脚本是无效的,因为ssh自带参数不能输入密码。使用sshpass可以做到。

安装sshpass:

apt install sshpass

sshpass命令使用很简单,sshpass -p 密码,后面接着原来ssh连接命令就行了:

sshpass -p 密码 ssh -i LightsailDefaultKey-us-east-1.pem -N -f -C -D 0.0.0.0:1080 用户名@主机ip

命令启动成功后就在本地打开了一个socks5代理,端口是1080。然后使用客户端代理配置,是可以访问google、facebook的。

分类
Linux 笔记

Ubuntu Server 折腾小记

家里有一台笔记本做个人服务器。笔记本只有一个硬盘位,放置的是128G SSD硬盘,通过USB 3.0接口外接一块3T的硬盘做文件存储。新买了一块1T硬盘,替换SSD和存储,3T的硬盘做备份。不仅提高机器工作的稳定性,还能减少房间各种线。

此前系统安装的是 Ubuntu 18.04 桌面版,新的系统在 Debian 和 Ubuntu Server 之间纠结好久之后,最后选择了 Ubuntu Server 。主流的 Linux 桌面版和服务器版,差不多都使用过,而且都用过比软长的时间。Ubuntu的Server版是第一次用,安装和配置都大同小异。安装完后要做的工作也就那么几个,不过还是发现了一些不同,所以做了如下笔记。

分类
Linux 笔记

WebDAV挂载/映射

一直使用NextCloud做私有云,电脑手机同步共享资料,很是方便。服务器放在家里,在家共享文件一直始用Samba。使用Samba写入的文件,不能被记录在NextCloud中,无法在外网同步,所以需要新的解决方案。NextCloud是支持WebDAV协议的,在手机上,我可以用第三方资源管理器做NextCloud客户端,那么在电脑上,该如何映射呢?

Windows解决方案

打开运行,输入cmd,在控制台输入:

net use Y: https://cloud.wangzhengzhen.com/remote.php/webdav  /user:qizheng /persistent:YES password


分类
Linux 笔记

安装nextcloud,初识snap

家里的台式机是win10系统,装了vmware workstation,启动两个虚拟机,使用frp内网穿透,做一些服务。本来是为了快速建设环境,所以用虚拟机,客户机没换掉。结果24小时开机,坚持了4、5天,win10直死掉了。所以决定一步到位,重新建设一个真正的服务器。

重装系统选择ubuntu desktop 18.04 TSL版,没有选择server版,是因为平时还要拿来做开发和日常使用。这个版本是今年4月发布,加入不少特性。打开应用市场发现推荐nextcloud,这正是我需要安装的服务之一。既然应用市场有,而且也是官方发布,于是决定通过应用市场安装。

安装很简单,点击安装完成,服务直接可用了。我预想的是会安装apache、mysql。结果发现没有这些,而且端口只有一个80在占用。这是怎么做到的?突然一下懵了。

分类
Linux 笔记

Linux 默认从字符界面启动

在Linux中有一个启动级别,如果已经进入到系统,使用init可切换,级别如下:
1:单用户形式,只root进行维护
2:多用户,不能使用net file system
3:完全多用户
4:保留
5:图形化
6:重启

如果希望系统启动时默认进入到图形界面,可以这样:
在CentOS/Redhat中,修改配置文件 /etc/inittab 指定级别:
设置为字符界面:init 3
设置为图形界面:init 5

在Ubuntu中,可以使用systemctl切换:
设置为字符界面:systemctl set-default multi-user.target
设置为图形界面:systemctl set-default graphical.target
Mark一下。

PS:最近太忙没写日志,相信经过这段时间的积累,会写出更精彩更有价值的东西。

分类
Linux 笔记

搭建DNS服务器

为什么要自己搭建DNS服务器?
1.开发微信小程序,所有小程序访问的域名必须绑定,每月只能修改5次。
2.有些东西只能用生产环境,但测试不允分不能立即切换,只能先发布系统在某台生产服务器,修改hosts把域名指定新机器,用生产流程测试完成再修改域名指向。
3.手机修改hosts麻烦,未root/越狱的不能修改,只能去指定网络的dns服务器了。

系统:Ubuntu 17.10.1
安装bind:
apt install bind9
找开文件:
vi /etc/bind/named.conf.local
在末尾加上:

zone "payadd.cn" {
        type master;
        file "/etc/bind/payadd.cn";
};
zone "123.1.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168.1";
};
分类
Linux 笔记

Linux SSH客户端记住密码

在windows下连接ssh有xshell、secureCRT等功能强大的客户端,不仅能记住密码,也能很好管理服务器。在linux下虽然有openssh,但如果需要管理很多服务器,每个服务器连接时都需要输入密码,不能记住密码是个很头痛的事。

有人说可以在ssh服务器上配置证书授信,但这种方式有不省缺点。
1.不安全,拿到证书的人在任意一台机器上可以登录。
2.如果ssh服务器是其他人维护或提供,再让别人去变更,不合理。
其实linux下做到记住密码有很方便我工具:sshpass

分类
Linux 笔记

修改Linux系统最大连接数限制

生产环境redis总是会报 Redis too many open files error 连接问题。用命令连接Redis,抛出 ERR max number of clients reached 。开始以为是redis客户端连接数设置问题,于是把配置文件 maxclients 设为 20000。重启程序运行一段时间后,问题依旧。看来这个问题不只是redis服务端配置连接这么简单。

在操作系统中,每个进程的连接数是有限制的。记得windows好像是1024吧,linux默认是2048。于是查看redis的连接数。
先查出redis的进程pid,根据pid查询limit限制,如下:

Max open files 是 4096。

分类
Linux MySql

CentOS 7 安装 MySQL 5.7

因为开源问题,CentOS 7 yum源用MariaDB取代MySQL。对于使用者来说,开不开源其次,MySQL毕竟有商业支持,就像使用OracleJDK还是OpenJDK一样,争论毫无意义。废话不多说,在CentOS 7安装MySQL步聚如下:
1.安装源
rpm -hiv http://repo.mysql.com/mysql57-community-release-el7.rpm
2.更新源
yum update
这个时候会系统会提示用MySQL替换MariaDB。
3.安装MySQL
yum install mysql mysql-server
安装完成。原以为很顺利,结果出了一系列小问题。