入手Burst VPS

经过长达数月的坚苦决择,最终还是咬牙买了一年期的巴斯(Burst VPS,在某些论坛简称84)作为博客的寄存空间。至您看到这篇文章的时候,本博客已经完全搬到Burst VPS上面了。

老实说,我以前想都没想过会用上这么贵的服务器(谁叫咱是穷人呢?),几个月前我还在对着Bluehost那3.99刀的价格流口水,现在却用上了5.99刀的VPS,哎~真是时过境迁啊。当然,在广大玩VPS的同胞中,我还是一个穷光蛋~

我曾经买过一个月的Burst VPS用来练手和测试,发现效果还不错,一个月的时间里只down过一次机,持续了10分钟左右。短短一个月里,我熟悉了部分Linux命令,重装了N次系统(N>=10),不断地替换lnmp和Kloxo,最终还是抛弃了体积臃肿的Apache,换用轻巧且效率高的Nginx。

不知道为什么,在Burst的VPS上,用了Nginx以后,速度明显快很多(应该不是心理因素),也可能是因为开启了eAccelerator所致。而在Kloxo后台,开启了Xcache以后,速度依旧缓慢。虽然Apache兼容性好,但是龟速和高内存占用,我还是放弃了它。我的个人建议是,如果你的VPS内存少于1G,那还是老老实实用Nginx吧! (more…)

Read More

折腾VPS的乐趣

趁着主管和总监出差的这几天,狠狠地体验了一把VPS

一行一行地输入命令,然后看着屏幕上的英文像DOS那样一行一行的闪动,感觉相当棒~

先安装了kloxo,然后是lnmp,太棒了,探针,phpmyadmin,pureFTPd每一样都爽了一把

登入自己安装的控制面板,再用SSH上传一下文件,么么,太有成就感了……

其实Linux也没什么难度嘛,嘿嘿,那些命令都是很简单滴~

未来两个月小荷塘可能会发起VPS合租,有想报名参加的人不?赶紧留言吧*^_^*

Read More

CrossOver-让你的Linux系统可以运行Windows程序

CrossOver的官方网站http://www.codeweavers.com/products/cxlinux/cxlinux/

要在Linux上运行Windows应用程序,一直以来大家都采用Wine来解决问题,而来自CodeWeavers的CrossOver Linux则更进一步,Microsoft Office(97-2007),Internet Explorer 6,Quicken甚至是复杂的Adobe Photoshop CS3都可以完美运行在Linux上,CrossOver并不是一个全新的虚拟层,它同样基于Wine,但它完善了一系列Windows API在Unix/Linux上的兼容性。今天它终于发布了1.0版本。

Read More

我的SSH安全设定

分享一下自己的SSH安全设定(本文基于Ubuntu 18.04 64bit). 大概方面有3个: 1, 建立普通用户zhang3, 并授予sudo权限; 2, 禁止root登陆; 3, 禁用密码登陆, 使用pub key登陆.

1, 建立普通用户zhang3, 并授予相关权限

平时主要使用zhang3用户来登陆, 因此需要客户端的pub key交给zhang3, 让zhang3做好免密码登陆相关设定.

user=zhang3
useradd -m -s /bin/bash $user
passwd $user

# 授予用户sudo权限
echo "$user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/$user

# 上传公钥, 这里我将公钥上传到$user用户的home目录
cd /home/$user
rz -bey           # 选择 id_rsa.pub 上传

su - $user
mkdir ~/.ssh; \
cat id_rsa.pub >> ~/.ssh/authorized_keys && \
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

2, 设定SSH相关权限

sudo sed -i 's/^\#\?PermitRootLogin.*/PermitRootLogin no/g' /etc/ssh/sshd_config
sudo sed -i 's/^\#\?PubkeyAuthentication.*/PubkeyAuthentication yes/g' /etc/ssh/sshd_config
sudo sed -i 's/^\#\?PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config
sudo sed -i 's/^\#\?PermitEmptyPasswords.*/PermitEmptyPasswords no/g' /etc/ssh/sshd_config
sudo sed -i 's/^\#\?MaxAuthTries.*/MaxAuthTries 3/g' /etc/ssh/sshd_config

解释:
PermitRootLogin no                 #禁止root远程登陆
PubkeyAuthentication yes           #启用pubkey登陆
PasswordAuthentication no          #禁用密码登陆
PermitEmptyPasswords no            #禁止空密码
MaxAuthTries                       #允许最大失败次数,默认为6


# 也可以最后再确认一下
egrep '^(PermitRoot|Pubkey|Password|MaxAuthTries)' /etc/ssh/sshd_config
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

有些老版本的sshd_config里面可能会有一项”RSAAuthentication”, 该项也表示启用pub key登陆, 但这是第1代ssh通讯协议使用的配置项, 该选项在CentOS 7及ubuntu 16.04版本以上均已弃用(如果强行加上此选项会收到一个”Deprecated option RSAAuthentication”的提示), 也可以在sshd_config里添加一项”Protocol 2″来表示使用第几代通讯协议.

2024.05.15 补充

由于操作比较麻烦, 要输入的命令比较多, 还要不停切换用户. 索性写成 Ansible playbook 好了

sudo apt update
sudo apt install git ansible     # Debian 系统可能还需要安装sudo

git clone https://gist.github.com/ce794b18a58bccb432ed151abcb242ca.git

cd ce794b18a58bccb432ed151abcb242ca

vim sys.init.yaml       # 改掉其中的 USERNAME 和 Pubkey 内容

ansible-playbook ./sys.init.yaml

参考文档
https://stackoverflow.com/questions/56436906/how-to-cleanly-edit-sshd-config-for-basic-security-options-in-an-ansible-playboo

Read More

python逐行读取文件内容

文件1.txt内容:

zhaoyun 85 87
guanyu 87 88
liubei 90 86

方法1: 使用read()方法

特点: 读取整个文件, 将文件内容放到一个字符串变量中
缺点: 如果文件非常大, 尤其是大于内存时, 无法使用read()方法
[code lang=”python”]
>>> a = open("1.txt")
>>>
>>> a.read() #read()直接读取字节到字符串中, 包括了换行符
‘zhaoyun 85 87\nguanyu 87 88\nliubei 90 86\n’
>>>
>>> print a.read() #返回值为空, 说明调用完read()方法以后变量为空了

>>>
>>> a = open("1.txt")
>>>
>>>
>>> print a.read() #调用print方法则自动转换了换行符
zhaoyun 85 87
guanyu 87 88
liubei 90 86

#另一种写法

with open("1.txt") as f:
print f.read()
#运行结果
zhaoyun 85 87
guanyu 87 88
liubei 90 86

(more…)

Read More