三十而立

linux下的文章

对于做国内站的我来说,我不希望国外蜘蛛来访问我的网站,特别是个别垃圾蜘蛛,它们访问特别频繁。这些垃圾流量多了之后,严重浪费服务器的带宽和资源。通过判断user agent,在nginx中禁用这些蜘蛛可以节省一些流量,也可以防止一些恶意的访问。

1、进入nginx的配置目录,例如cd /usr/local/nginx/conf

2、添加agent_deny.conf配置文件 vim agent_deny.conf

加入以下

#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
  return 403;
}
#禁止指定UA及UA为空的访问
if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
{
  return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
  return 403;
}

还有加一些针对特殊的user_agent的访问

if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") { return 404; }

这个是如何得出是频繁访问的user_agent呢,通过分析nginx的日志可以得出

tail -n 1000 /usr/local/nginx/logs/access.log | awk -F\" '{A[$(NF-1)]++}END{for(k in A)print A[k],k}' | sort -n | tail 

分析访问次数
执行以上命令可以得出访问最多的user_agent,通过人为判断是否正常来屏蔽

然后在nginx.conf的location中加入include agent_deny.conf;

平滑重启nginx

/usr/local/nginx/sbin/nginx –s reload

然后测试一下 设置是否成功

curl -I -A "BaiduSpider" www.test.com
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 09 Feb 2015 03:37:20 GMT
Content-Type: text/html; charset=UTF-8 Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.5.19 Vary: Accept-Encoding, Cookie
Cache-Control: max-age=3, must-revalidate
WP-Super-Cache: Served supercache file from PHP
curl -I -A "JikeSpider" www.test.com
HTTP/1.1 403 Forbidden
Server: nginx Date: Mon, 09 Feb 2015 03:37:44 GMT
Content-Type: text/html
Content-Length: 162 Connection: keep-alive

到这里,nginx通过判断User-Agent屏蔽蜘蛛访问网站就已经完成,可以根据实际情况对agent_deny.conf中的蜘蛛进行增加、删除或者修改。

参考原文:https://blog.csdn.net/qq_22929803/article/details/50724662

我们在管理自己的Linux vps主机产品的时候,我们可以自由的设置自己的VPS产品是否禁止PING IP。

第一个方法,我们可以通过修改文件:

vim /proc/sys/net/ipv4/icmp_echo_ignore_all

编辑这个文件,默认应该是0,我们修改成1就是禁止PING。如果需要恢复继续修改成0,然后重启VPS就可以。

第二个方法,我们直接通过命令解决(建议):

禁止命令:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
sysctl -p
恢复禁止
sysctl -w net.ipv4.icmp_echo_ignore_all=0
sysctl -p

用命令设置不需要重启VPS直接会生效的。

linux下开启mysql慢查询日志

修改mysql的配置文件my.cnf
执行 vi /etc/my.cnf

在[mysqld]里面加上以下内容

#开启慢日志
slow_query_log=TRUE          
#日志存放目录
slow_query_log_file=/home/wwwlogs/slow_query.log
#5秒记录值
long_query_time=5

如下图:
20170522152116543.jpg
然后重启 mysql /etc/init.d/mysql restart

登录mysql验证下 mysql-uroot -p

登录成功后执行 show variables like '%quer%';

看到下图就代表成功了:
2.jpg

显示出慢查询日志中最慢的10条sql

mysqldumpslow -t 10  /home/wwwlogs/slow_query.log  

附LNMP清理二进制mysql数据日志:
/usr/local/mysql/var/下面产生mysql-bin.0000* 类似的文件,而且一般都在几十MB到几个GB,会导致mysql无法启动或报错。

如何关闭MySQL的日志功能:

先删除日志:
先登录mysql:mysql -u root -p
输入密码登录成功后再执行:reset master; #注意别漏了后面的分号;
回车后会显示"Query OK, 234 rows affected (12.3 sec)",说明已经成功,再输入:quit; 退出mysql;

彻底禁用MySQL日志:
打开 vim /etc/my.cnf
找到这两行前面加上#注释掉

log-bin=mysql-bin
binlog_format=mixed

重启mysql /etc/init.d/mysql restart即可。

如果实在想保留日志,可以在/etc/my.cnf里[mysqld]部分中加入expire_logs_days = 10 #10天 然后重启mysql,这样10天就会自动清理日志。

方案参考:
https://blog.csdn.net/qq_27292113/article/details/72626722
https://www.vpser.net/manage/delete-mysql-mysql-bin-0000-logs.html

linux主要用于服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源的按钮,其他人的数据可能就此中断。更严重的是,若不正常关机,严重的话,可能会造成文件系统损坏,从而导致数据丢失。

      如果要关机,必须保证当前系统中没有其他用户在登录系统。我们可以使用who命令查看是否还有其他人登录,或者使用命令ps -aux查看是否还有后台进程运行。`shutdown,halt,poweroff`都为关机的命令,我们可以使用命令`man shutdown`查看其帮助文档。例如,我们运行如下命令关机。

shutdown -h 10        #计算机将于10分钟后关闭,且会显示在登录用户的当前屏幕中
shutdown -h now       #计算机会立刻关机
shutdown -h 22:22     #计算机会在这个时刻关机
shutdown -r now       #计算机会立刻重启
shutdown -r +10       #计算机会将于10分钟后重启
reboot                #重启
halt                  #关机

linux 直接上传 rz 与下载 sz 命令

(一)安装方法汇总

1、安装方法(推荐)

yum install lrzsz -y

2、在安装Linux系统时选中“DialupNetworking Support”组包

3、安装系统联网启动后执行yum直接安装组包

yum groupinstall "Dialup Networking Support" -y

(二)上传下载文件测试

1、条件:需要使用SecureCRT或者Xshell等客户端工具连接Linux

2、上传下载命令测试

1)上传 rz //可加-y参数

在客户端SSH命令行运行rz命令,命令如下:

[root@oldboy ~]# rz -y

执行后会弹出上传文件的选择窗口,可以选择相关文件上传(不支持直接上传目录)。

提示:可以使用rz -y实现覆盖上传,上传窗口的默认目录可以在SSH客户端里进行设置。

2)下载(sz) //可加-y参数

实现下载可以直接使用szfilename,其中filename就是你想要下载的文件的名字,如果是目录需要打包成单个文件在实现下载。

[root@oldboy ~]# sz oldboy.txt  #<==oldboy.txt要存在,可以是相对路径或绝对路径。

上传下载目录SecureCRT默认是安装目录下的upload/download目录,可自行修改。XShell是在文件-->属性-->文件传输里进行设置,默认是下载前询问。

(三)XShell特殊上传方法

直接将文件拖入XShell命令行窗口即可。
1.png

(四)rz上传的坑
下图内容不要打钩,否则上传的文件会有问题。
2.png

转载自 “老男孩linux培训” :http://oldboy.blog.51cto.com/2561410/588592

把当前一个文件copy到远程服务器上:

scp /home/a.txt root@192.168.0.8:/home/root

把远程主机上的文件copy到当前主机上:

scp root@192.168.0.8:/home/b.txt

把远程主机上的文件夹copy到当前主机上:

scp -r root@192.168.0.8:/home/ /root/home2

接着会提示输入远程主机的密码,确定后OK

在linux中,rm-rf 删除文件的时候,提示错误:

cannot remove `.user.ini': Operation not permitted

无法删除“.user.ini”文件解决方法,运行后删除即可
cd到该文件目录下,,命令如下:

chattr -i .user.ini   //让文件**可以**修改

这样再rm -rf 即可

为了安全起见,如果想再加上权限:

chattr +i .user.ini  //让文件**不能**修改

chattr主要提高文件的安全性