Linux系统挂载数据盘

适用系统:Redhat , CentOS
Linux的云主机数据盘未做分区和格式化,可以根据以下步骤进行分区以及格式化操作。下面的操作将会把数据盘划分为一个分区来使用。

1、查看数据盘

在没有分区和格式化数据盘之前,使用 “df –h”命令,是无法看到数据盘的,可以使用“fdisk -l”命令查看。如下图:

友情提示:若您执行fdisk -l命令,发现没有 /dev/xvdb 标明您的云服务无数据盘,那么您无需进行挂载,此时该教程对您不适用 继续阅读Linux系统挂载数据盘

CentOS/AWS编译安装LNMP环境

本文可看作AWS/CENTOS搭建LAMP环境的姊妹篇。

1、启用额外的库(参照racksapce,aws的默认ami库里面东西很全,基本上都可以yum到,可以忽略这部分)

centos5没有自带的nginx和php-fpm,因此从别的库拿来。导入RHEL EPEL

wget http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
sudo rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

编辑remi的repo

sudo vim /etc/yum.repos.d/remi.repo

如下:

[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

后来我发现这样子的话安装的nginx版本太古老,安装remi库用于安装phpfpm,另外用nginx.repo安装最新版的nginx,方法

编辑

/etc/yum.repos.d/nginx.repo

如下

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/5/$basearch/
gpgcheck=0
enabled=1

2、安装

yum install mysql mysql-server nginx php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy php-pecl-apc

安装完之后

chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start
chkconfig --levels 235 nginx on
/etc/init.d/nginx start
chkconfig --levels 235 php-fpm on
/etc/init.d/php-fpm start

继续阅读CentOS/AWS编译安装LNMP环境

VPS初级安全设置

下午收到阿里云短信,说有人正在暴力破解,进入系统之后,输入

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}'

发现寡人的小机竟然也被人扫描了很多次,觉得有必要做一下安全方面的东西,非常简单,主要是ssh端口修改,禁止root远程登录,denyhosts安装,rsa密钥登录。

1、修改ssh端口

以centos为例,22端口是最常见的ssh端口,因此最容易被猜到,修改之后可以增加一定的安全性。

#sudo su
#vi /etc/ssh/sshd_config

将“#port 22″修改为“port 1234”(即去掉#,改端口号)

然后“service sshd restart”

退出,然后重新登录

为了保险起见,可以将“#port 22”修改为两行“port 22”“port 1234”,1234测试无误后再删掉”port 22″

2、禁用远程root登录

root登录直接就获得权限,而且root这个用户名太常见了。在禁用root登录前首先一定要先增加一个普通权限的用户,并设置密码:

useradd test
passwd test

然后禁止ROOT远程SSH登录:

vi /etc/ssh/sshd_config

把其中的

PermitRootLogin yes

改为

PermitRootLogin no

如果PermitRootLogin前面的有#的话也一定要删除掉,否则无法生效。

再重启sshd服务

service sshd restart

以后我们便可以通过普通权限的ssh账户连接我们的vps,如果需要管理权限的话,可以用下面命令提升到root权限

su root

如果root用户有另外一套密码的话会更加有效。

3、安装denyhosts

现在的linux一般都自带denyhosts了,如果没有,请参照CentOS/AWS编译安装LNMP环境的开头部分更新一下系统安装源。

安装之后修改下配置:

#yum install denyhosts
#vi /etc/denyhosts.conf

显示为,可根据自己需要修改。

SECURE_LOG = /var/log/secure
#ssh日志文件,根据该文件判断是否为非法IP
HOSTS_DENY = /etc/hosts.deny
#控制用户登录的文件
PURGE_DENY = 
#表示过多久后清除已经禁止的IP
BLOCK_SERVICE  = sshd
#表示禁止的服务名
DENY_THRESHOLD_INVALID = 5
#表示允许无效用户登录失败的次数
DENY_THRESHOLD_VALID = 10
#表示允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 1
#表示允许root用户登录失败的次数
ADMIN_EMAIL = 
##管理员邮箱,会发邮件到这里

完了之后

/etc/init.d/denyhosts restart

查看可以用

# tail -f /var/log/denyhosts
# tail -f /var/log/secure

4、使用密钥登录,禁止密码登录

原来一直在用的AWS就是密钥登陆,安全性良好,阿里云默认是密码登录,需要自己配置密钥登录。

dsa和rsa的安全性能是一样的,用rsa和dsa密钥随你便~

[root@ test~]# su test ← 登录为一般用户centospub

[test@ test~]$ ssh-keygen -t rsa  ← 建立公钥与私钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa):  ← 钥匙的文件名,这里保持默认直接回车
Created directory '/home/test/.ssh'
Enter passphrase (empty for no passphrase):  ← 输入口令
Enter same passphrase again:   ← 再次输入口令
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
tf:rs:e3:7s:28:59:5s:93:fe:33:84:01:cj:65:3b:8e xxx@xxxxx.com

上面生成过程中有无输入口令会影响今后登录在密钥之外是否需要输入口令

修改公钥文件名称、权限,并且导出私钥

[test@test ~]$ cd .ssh/  
[test@.ssh]$ ls  
id_rsa.pub id_rsa  
[test@.ssh]$ mv id_rsa.pub authorized_keys    
[test@ .ssh]$ chmod 400 authorized_keys

下载私钥之后,最好把服务器端的私钥删掉。 如果是用的putty,要用puttygen转换为ppk文件,如果是像我一样用的bitvise,则可以直接使用。 修改ssh配置文件

 #vi /etc/ssh/sshd_config
#Protocol 2,1 ← 找到此行将行头“#”删除,再将行末的“,1”删除,只允许SSH2方式的连接
 ↓
Protocol 2 ← 修改后变为此状态,仅使用SSH2

#ServerKeyBits 768 ← 找到这一行,将行首的“#”去掉,并将768改为1024
 ↓
ServerKeyBits 1024 ← 修改后变为此状态,将ServerKey强度改为1024比特

#PasswordAuthentication yes ← 找到这一行,将yes改为no
 ↓
PasswordAuthentication no ← 修改后变为此状态,不允许密码方式的登录

#PermitEmptyPasswords no  ← 找到此行将行头的“#”删除,不允许空密码登录
 ↓
PermitEmptyPasswords no  ← 修改后变为此状态,禁止空密码进行登录

重启sshd,至此完成安全设置。

CentOS/AWS升级内核

在开始之前,请先确认系统已经安装了make gcc gcc-c++ ncurses-devel和库工具等等。

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.2.12.tar.bz2
# tar jxvf linux-3.2.12.tar.bz2
# mv linux-3.2.12 /usr/src/kernels
# make mrproper //清理下
# cp /boot/config-2.6.35.14-97.44.amzn1.i686    /usr/src/kernels/linux-3.2.12/.config
# cd /usr/src/kernels/linux-3.2.12
# make menuconfig  //或者make oldconfig,前者以新内核为准,后者以旧内核设定为准,一般选择Load an Alternate Configuration就可以了(第一页下面倒数第二个就是),不过如果有别的想法,也可以按照自己的想法进一步设置,但是声卡之类的其实是不需要的
# make clean //清理下
# make //或者分两步 make bzImage + make modules,这里需要很久,一个半小时以上,I一定要大写
# make modules_install
# make install  //可能会找不到几个模块,先不理
# vi /boot/grub/grub.conf  //会出现新内核,修改为default=0,则默认重启以新内核为准,如果要这样,请确认新内核安装正确
# reboot
# uname -r //会出现新版本号,如果没错,会显示为3.2.12

回头看看,还是挺简单的
只是bzImage和modules那里让人等得不爽

Apache开启Rewrite,expires和Gzip

Rewrite规则开启,vi /etc/httpd/conf/httpd.conf找到并修改以下规则:

Options FollowSymLinks
AllowOverride None(修改为AllowOverride All)
Options Indexes FollowSymLinks MultiViews
AllowOverride None(修改为AllowOverride All)
Order allow,deny
allow from all

Gzip开启,在httpd.conf当中输入

<IfModule mod_deflate.c>
DeflateCompressionLevel 5
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
AddOutputFilter DEFLATE js css
</IfModule>

expires开启

 

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 12 month"
ExpiresByType text/html "access plus 12 months"
ExpiresByType text/css "access plus 12 months"
ExpiresByType image/gif "access plus 12 months"
ExpiresByType image/jpeg "access plus 12 months"
ExpiresByType image/jpg "access plus 12 months"
ExpiresByType image/png "access plus 12 months"
EXpiresByType application/x-shockwave-flash "access plus 12 months"
EXpiresByType application/x-javascript "access plus 12 months"
ExpiresByType video/x-flv "access plus 12 months"
</IfModule>

当然前提是rewrite,expires,defalte模块存在