Category Archive: HostEase使用教程

七月 17th, 2018

lsof命令是什么?

可以列出被进程所打开的文件的信息。被打开的文件可以是

1.普通的文件,2.目录 3.网络文件系统的文件,4.字符设备文件 5.(函数)共享库 6.管道,命名管道 7.符号链接

8.底层的socket字流,网络socket,unix域名socket

9.在linux里面,大部分的东西都是被当做文件的…..还有其他很多

怎样使用lsof

这里主要用案例的形式来介绍lsof 命令的使用

1.列出所有打开的文件:

lsof

备注: 如果不加任何参数,就会打开所有被打开的文件,建议加上一下参数来具体定位

2. 查看谁正在使用某个文件

lsof /filepath/file

3.递归查看某个目录的文件信息

lsof +D /filepath/filepath2/

备注: 使用了+D,对应目录下的所有子目录和文件都会被列出

4. 比使用+D选项,遍历查看某个目录的所有文件信息 的方法

lsof | grep ‘/filepath/filepath2/’

5. 列出某个用户打开的文件信息

lsof -u username

备注: -u 选项,u其实是user的缩写

6. 列出某个程序所打开的文件信息

lsof -c mysql

备注: -c 选项将会列出所有以mysql开头的程序的文件,其实你也可以写成lsof | grep mysql,但是第一种方法明显比第二种方法要少打几个字符了

7. 列出多个程序多打开的文件信息

lsof -c mysql -c apache

8. 列出某个用户以及某个程序所打开的文件信息

lsof -u test -c mysql

9. 列出除了某个用户外的被打开的文件信息

lsof -u ^root

备注:^这个符号在用户名之前,将会把是root用户打开的进程不让显示

10. 通过某个进程号显示该进行打开的文件

lsof -p 1

11. 列出多个进程号对应的文件信息

lsof -p 123,456,789

12. 列出除了某个进程号,其他进程号所打开的文件信息

lsof -p ^1

13 . 列出所有的网络连接

lsof -i

14. 列出所有tcp 网络连接信息

lsof -i tcp

15. 列出所有udp网络连接信息

lsof -i udp

16. 列出谁在使用某个端口

lsof -i :3306

17. 列出谁在使用某个特定的udp端口

lsof -i udp:55

特定的tcp端口

lsof -i tcp:80

18. 列出某个用户的所有活跃的网络端口

lsof -a -u test -i

19. 列出所有网络文件系统

lsof -N

20.域名socket文件

lsof -u

21.某个用户组所打开的文件信息

lsof -g 5555

22. 根据文件描述列出对应的文件信息

lsof -d description(like 2)

23. 根据文件描述范围列出文件信息

lsof -d 2-3

TAGS:
七月 17th, 2018

第一步要做的是通过 SSH 连接到你的 Linux。在 Linux 中查找文件有两种方法。一种是使用find 命令,另外一种是使用locate 命令。

如何在 Linux 中查找一个文件如何在 Linux 中查找一个文件
find 命令

使用 Linux find 命令可以用不同的搜索标准如名字、类型、所属人、大小等来搜索目录树。基本语法如下:

# find path expression search-term

下面是使用 find 命令根据文件名来查找特定文件的一个例子:

# find -name test.file

命令会搜索整个目录树来查找名为test.file 的文件,并且会提供其存放位置。你可以使用你 Linux 上一个存在的文件名来尝试一下。

find 命令有时会花费几分钟来查找整个目录树,尤其是如果系统中有很多文件和目录的话。要显著减少时间,你可以指定搜索的目录。比如,如果你知道 /var中存在 test.file,那就没有必要搜索其它目录。这样,你可以使用下面的命令:

# find /var -name test.file

find 还可以根据时间、大小、所属人、权限等选项搜索文件。要了解更多关于这些选项的信息,你可以使用查看Linux find 命令的手册。

# man find

locate 命令

要在Linux中使用locate命令,首先需要安装它。

如果你正在使用 Ubuntu,运行下面的命令来安装 locate:

# apt-get update# apt-get install mlocate

如果你使用的是 CentOS ,运行下面的命令来安装 locate:

# yum install mlocate

locate 是一种比 find 更快的方式,因为它在数据库中查找文件。要更新搜索数据库,运行下面的命令:

# updatedb

使用 locate 查找文件的语法:

# locate test.file

就像 find 命令一样,locate 也有很多选项来过滤输出。要了解更多你可以查看Linux Locate 命令的手册。

# man locate

希望这篇文能够帮到您,谢谢。

原文来自:https://linux.cn/article-8016-1.html

本文地址:http://www.linuxprobe.com/how-linux-find.html

TAGS:
七月 17th, 2018

查看时区列表: timedatectl list-timezones|grep Asia

设置中国时区: timedatectl set-timezone Asia/Shanghai 执行完后时间就变为北京时间了

查看当前时间: date

查看当前设置:

[root@localhost ~]# timedatectl

Local time: Mon 2017-10-09 16:44:08 CST

Universal time: Mon 2017-10-09 08:44:08 UTC

RTC time: Mon 2017-10-09 08:44:08

Time zone: Asia/Shanghai (CST, +0800)

NTP enabled: yes

NTP synchronized: yes

RTC in local TZ: no

DST active: n/a

如果没有系统没有安装ntp服务器的话可以安装yum install ntp -y

然后编辑ntp的配置文件vi /etc/ntp.conf (日志文件默认在/var/log/messages中),添加以下几个服务器域名,如果原配置文件没有的话

server 0.centos.pool.ntp.org iburst

server 1.centos.pool.ntp.org iburst

server 2.centos.pool.ntp.org iburst

server 3.centos.pool.ntp.org iburst

systemctl restart ntpd

systemctl enable ntpd

这样,服务器端就配置得差不多了,但我为了让效果更明显,把服务器修改为纽约时区,另一台需要同步的linux客户端的时区修改为非洲时间,结果导致,客户端ntpdate之后没有同步,后来才发现,需要在同一时区内才能同步时间,也就是说,服务端和客户端的时区必须在中国这个时区内才可以

下面来测试我们的ntp服务器配置有没有成功

在服务器端(ip:10.0.3.66)上

使用date -s 23:30:30 (时间可以随便改,反正改一个跟客户端时间不一样的就可以了),然后date可以看到时间变成了23:30:30

在客户端上

ntpdate 10.0.3.66 执行后发现,时间也变成了23:30:30

TAGS: ,
七月 17th, 2018

#!/bin/bash
export PATH=/sbin:/usr/sbin:/bin:/usr/bin

iptables -F
iptables -X
iptables -Z

#远程SSH登陆,我们要开启22端口
iptables -A INPUT -p tcp –dport 22 -j ACCEPT

#WEB服务器,开启80端口
iptables -A INPUT -p tcp –dport 80 -j ACCEPT

#邮件服务器,开启25,110端口.
iptables -A INPUT -p tcp –dport 110 -j ACCEPT
iptables -A INPUT -p tcp –dport 25 -j ACCEPT

#FTP服务器,开启20,21端口

iptables -A INPUT -p tcp -m multiport –dport 21,60000:60050 -j ACCEPT
#如果做了DNS服务器,开启53端口

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp –sport 53 -j ACCEPT
iptables -A INPUT -p udp –dport 53 -j ACCEPT
#对PING做设置
#iptables -A INPUT -p icmp –icmp-type 8 -s 0/0 -j DROP
#所以对别人的请求丢弃应该就可以达到别人无法PING的
#iptables -A OUTPUT -p icmp –icmp-type 0 -s localip -j DROP
#其实可以不要 包都丢弃了 还怎么会发出响应的包呢

iptables -A INPUT -p icmp –icmp-type 8 -s 0/0 -j ACCEPT
iptables -A INPUT -p icmp –icmp-type 0 -s 0/0 -j ACCEPT
iptables -A OUTPUT -p icmp –icmp-type 0 -s $FW_IP -j ACCEPT
iptables -A OUTPUT -p icmp –icmp-type 8 -s $FW_IP -j ACCEPT

#开放本机对外部80端口
iptables -A INPUT -p tcp ! –syn -s any/0 –sport 80 –dport 1024:65535 -j ACCEPT
iptables -P INPUT DROP

/etc/rc.d/init.d/iptables save
service iptables restart

TAGS:
七月 17th, 2018

Sersync简介

Sersync利用inotify与rsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对文件不同的部分进行操作,所以其优势大大超过使用挂接文件系统的方式进行镜像同步。由金山的周洋开发完成,是目前使用较多的文件同步工具之一。该工具和其他的工具相比有如下优点:

sersync是使用c++编写,由于只同步发生更改的文件,因此比其他同步工具更节约时间、带宽;

安装方便、配置简单;

使用多线程进行同步,能够保证多个服务器实时保持同步状态;

自带出错处理机制,通过失败队列对出错的文件重新出错,如果仍旧失败,则每10个小时对同步失败的文件重新同步;

自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次;

自带socket与http协议扩展,你可以方便的进行二次开发;

rsync+sersync与rsync+Inotify-tools区别

Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来;

rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。

sersync是基于Inotify开发的,类似于Inotify-tools的工具;

sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;

rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。

所以,当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync。

地址:http://code.google.com/p/sersync/,要翻墙才能下载

http://download.csdn.net/detail/hellopengyl/9918625

安装、配置

和Inotify-tools一样,只需要在数据源端安装

1、查看服务器内核是否支持inotify
[root@localhost src]# ll /proc/sys/fs/inotify #查看服务器内核是否支持inotify,出现下面的内容,说明服务器内核支持inotify
total 0
-rw-r–r– 1 root root 0 Jul 27 10:32 max_queued_events
-rw-r–r– 1 root root 0 Jul 27 10:32 max_user_instances
-rw-r–r– 1 root root 0 Jul 27 10:32 max_user_watches
[root@localhost src]# uname -r #Linux下支持inotify的内核最小为2.6.13
2.6.32-642.el6.x86_64
[root@localhost src]# sysctl -a|egrep -i “max_queued_events|max_user_watches|max_user_instances” #修改inotify默认参数(inotify默认内核参数值太小)
fs.inotify.max_user_instances = 128
fs.inotify.max_user_watches = 8192
fs.inotify.max_queued_events = 16384
fs.epoll.max_user_watches = 201420
[root@localhost src]# vim /etc/sysctl.conf
fs.inotify.max_user_instances = 65535
fs.inotify.max_user_watches = 99999999
fs.inotify.max_queued_events = 99999999
[root@localhost src]# cat /proc/sys/fs/inotify/{max_user_instances,max_user_watches,max_queued_events}
65535
99999999
99999999
[root@localhost src]#

max_queued_events inotify队列最大长度,如果值太小,会出现”** Event Queue Overflow **”错误,导致监控文件不准确

max_user_watches 要同步的文件包含多少目录,可以用:find /home/www.osyunwei.com -type d | wc -l统计,必须保证max_user_watches值大于统计结果(这里/home/www.osyunwei.com为同步文件目录)

max_user_instances 每个用户创建inotify实例最大值

2、安装、配置sersync
[root@localhost src]# tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@localhost src]# mv GNU-Linux-x86 /app/sersync
[root@localhost src]# cd /app/sersync/
[root@localhost sersync]# ls
confxml.xml sersync2
[root@localhost sersync]# cp confxml.xml{,.default}
[root@localhost sersync]# vim confxml.xml

#针对插件的保留字段,保留默认即可。
#在sersync正在运行的控制台,打印inotify,rsync同步命令
#对于xfs文件系统用户,需要将这个选项开启才正常工作
#过滤系统的临时文件,被过滤的文件不会被监控提高,默认过滤系统的临时文件(以“.”开头,以“~”结尾)

#inotify监控文件模块
#如果本地文件删除,不需要删除远程段的文件可以设置成false
#如果将createFolder设为false,则不会对产生的目录进行监控,该目录下的子文件与子目录也不会被监控;
#把createFile(监控文件事件选项)设置为false来提高性能,减少rsync通讯;因为拷贝文件到监控目录会产生create事件与close_write事件,所以如果关闭create事件,只监控文件拷贝结束时的时间close_write,同样可以实现文件完整同步;

#进行数据同步的模块
#定义本地要同步的目录
#远程接受同步的IP和rsync模块名
<!—->
<!—->

#自定义rsync参数,默认是-artuz
#开启用户认证,定义用户名密码


#开启会使用rsync -e ssh的方式进行传输

#对于失败的传输,会进行重新传送,再次同步失败后日志记录到/tmp/rsync_fail_log.sh,并且每60分钟对失败的log进行重新同步
#每隔600s会做一次完全同步
#如果开启了filter文件过滤功能,那么crontab整体同步也需要设置过滤,否则虽然实时同步的时候文件被过滤了,但crontab整体同步的时候 如果不单独设置crontabfilter,还会将需过滤的文件同步到远程,
 #crontab的过滤正则与filter过滤的不同,果同时开启了filter与crontab,则要开启crontab的crontabfilter,并按示例设置使其与filter的过滤一一对应。

#当设置为true的时候,将文件同步到远程服务器后会调用name参数指定的插件。

#name指定的插件
#当文件同步完成后,会调用command插件,例如同步文件是file.txt,file.txt文件在改动之后,调用rsync同步到远程服务器后,调用command插件,执行/bin/sh file.txt suffix >/dev/null 2>&1
#如果suffix 设置了,则会放在inotify事件file.txt之后,如果ignoreError为true,则会添加>/dev/null 2>&1

#当filter为ture,include可以只对正则匹配到的文件,调用command。

#http插件,可以向指定域名的主机post,inotify监控的事件。
#socket插件,开启该模块,则向指定ip与端口发送inotify所产生的文件路径信息

#在同步过程中将文件发送到目的服务器后刷新cdn接口。如果不想使用,则设置
#该模块根据chinaCDN的协议,进行设计,当有文件产生的时候,就向cdn接口发送需要刷新的路径位置

#需要监控的目录
#cdnifo标签制定了cdn接口的域名,端口号,以及用户名与密码。

#sendurl标签是需要刷新的url的前缀
<sendurl base="
#regexurl标签中的,regex属性为true时候,使用match属性的正则语句匹配inotify返回的路径信息,并将正则匹配到的部分作为url一部分,

#如果产生文件事件为:/data0/htdoc/cms.xoyo.com/site/jx3.xoyo.com/image/a/123.txt
#经过上面的match正则匹配后,最后刷新的路径是:http://pic.xoyo.com/cms/jx3/a/123.txt;
#如果regex属性为false,最后刷新的路径是http://pic.xoyo.com/cms/jx3.xoyo.com/images/a/123.txt;

[root@localhost sersync]# /app/sersync/sersync2 -d -r -n 8 -o /app/sersync/confxml.xml
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d run as a daemon
option: -r rsync all the local files to the remote servers before the sersync work
option: -n thread num is: 8
option: -o config xml name: /app/sersync/confxml.xml
parse xml config file
host ip : localhost host port: 8008
Open debug, you will see debug infomation
daemon start,sersync run behind the console
Start the crontab Every 600 minutes rsync all the files to the remote servers entirely
use rsync password-file :
user is rsync
passwordfile is /etc/rsyncd.secret
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 10 = 1(primary thread) + 1(fail retry thread) + 8(daemon sub threads)
Max threads numbers is: 18 = 10(Thread pool nums) + 8(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
——————————————
rsync the directory recursivly to the remote servers once
working please wait…
execute command: cd /app/rsync_client && rsync -artuz -R –delete ./ rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
crontab command:cd /app/rsync_client && rsync -artuz -R –delete ./ rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
run the sersync:
watch path is: /app/rsync_client
add watch: /app/rsync_client return wd is: 1
add watch: /app/rsync_client/test return wd is: 2
[root@localhost sersync]#

-d 后台启动

-r 同步前将已存在的文件全部同步过去,如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步;

-n 开启的线程总数默认10

-o 指定配置文件,指定 -o 参数可以指定多个不同的配置文件,从而实现sersync多进程多实例的数据同步

-m 不进行同步,只运行插件 ./sersync -m pluginName 例如:./sersync -m command,则在监控到事件后,不对远程目标服务器进行同步,而是直接运行command插件

[root@localhost sersync]# cat monitor_sersync.sh #监控Sersync运行状态的脚本,如果服务停止了就重启服务
#!/bin/bash
server_file=”/app/sersync/sersync2″
conf_file=”/app/sersync/confxml.xml”
options=”-d -r -n 8 -o”
proc_num=$(ps -ef|grep -i sersync2|grep -v “grep”|wc -l)
if [ $proc_num -lt 1 ];then
cd $(dirname $server_file)
nohup $server_file $options $conf_file &
else
exit 0;
fi
[root@localhost sersync]# chmod +x monitor_sersync.sh
[root@localhost sersync]# crontab -l
*/5 * * * * /app/sersync/monitor_sersync.sh
[root@localhost sersync]# /etc/init.d/crond restart
[root@localhost sersync]# vim /etc/rc.d/rc.local #设置开机自动运行脚本
/app/sersync/sersync2 -d -r -n 8 -o /app/sersync/confxml.xml
[root@localhost sersync]#

测试

在客户端监控的目录/app/rsync_client创建文件,然后查看服务器端app_rsync_server模块对应的目录是否同步更新
[root@localhost rsync_client]# touch file{1..9}
inotify wd:1 name:file1 mask:256
inotify wd:1 name:file1 mask:8
inotify wd:1 name:file2 mask:256
inotify wd:1 name:file2 mask:8
inotify wd:1 name:file3 mask:256
inotify wd:1 name:file3 mask:8
inotify wd:1 name:file4 mask:256
inotify wd:1 name:file4 mask:8
inotify wd:1 name:file5 mask:256
[root@localhost rsync_client]# cd /app/rsync_client && rsync -artuz -R “./file2” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
inotify wd:1 name:file5 mask:8
inotify wd:1 name:file6 mask:256
inotify wd:1 name:file6 mask:8
inotify wd:1 name:file7 mask:256
inotify wd:1 name:file7 mask:8
inotify wd:1 name:file8 mask:256
inotify wd:1 name:file8 mask:8
inotify wd:1 name:file9 mask:256
inotify wd:1 name:file9 mask:8
cd /app/rsync_client && rsync -artuz -R “./file1” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
cd /app/rsync_client && rsync -artuz -R “./file3” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
cd /app/rsync_client && rsync -artuz -R “./file4” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
cd /app/rsync_client && rsync -artuz -R “./file5” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
cd /app/rsync_client && rsync -artuz -R “./file6” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
cd /app/rsync_client && rsync -artuz -R “./file7” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
cd /app/rsync_client && rsync -artuz -R “./file8” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
cd /app/rsync_client && rsync -artuz -R “./file9” rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret
[root@localhost rsync_client]# touch file1
inotify wd:1 name:file1 mask:8
[root@localhost rsync_client]# cd /app/rsync_client && rsync -artuz -R “./file1″ rsync@10.15.43.100::app_rsync_server –password-file=/etc/rsyncd.secret

[root@localhost sersync]#

压测

写入10K个文件批量同步测试结果:

[root@localhost rsync_client]# for n in {1..10000};do dd if=/dev/zero of=/app/rsync_client/”$n”.txt bs=1M count=5;done

查看同步速度,当10K个文件同步完后,在/app/rsync_server里发现才同步了600多个文件

多实例情况

配置多个confxml.xml文件(比如:www、bbs、blog….等等),根据不同的需求同步对应的实例文件
[root@localhost rsync_client]# /app/sersync/sersync2 -d -r -n 8 -o /app/sersync/www_confxml.xml
[root@localhost rsync_client]# /app/sersync/sersync2 -d -r -n 8 -o /app/sersync/bbs_confxml.xml
[root@localhost rsync_client]# /app/sersync/sersync2 -d -r -n 8 -o /app/sersync/blog_confxml.xml

文章链接:https://www.centoschina.cn/shell/programming/9368.html

七月 17th, 2018

1 . 编辑:

/etc/rc.local

添加想要被执行的命令即可(默认是以root用户执行)。

注: 有些很特殊的情况 /etc/rc.local 不会被执行,可以 编辑 /etc/init.d/rc.local see link: http://www.linuxidc.com/Linux/2016-12/138665.htm

2 . 以期望的用户执行命令:

su -c ‘ls -l “myfile.txt”‘ guowei &

解释: 其中需要被执行的命令是 ls -l “myfile.txt”, 期望的用户的 guowei, & 表示在后台运行。

3 . 开机以 screen 运行程序脚本,并添加环境变量(no-login):

#!/bin/bash

# 环境变量要在 su 之前设置好,然后 sudo -E 保持环境变量
# 如果直接是root用户执行该脚本,则只需要 su -p 或者 su -m 保持环境变量即可
export GUOWEI_DIR=/home/guowei
export PATH=/opt/bin:$PATH
source /home/guowei/.bashrc

if [ -e /opt/my_app ]; then
# sudo -E su -p -l guowei << BASH # 如果要以 guowei 用户执行那些程序的话,去掉注释即可。 su – 表示切换的环境变量,sudo 需要添加 -E 选项。
su -p guowei << BASH # 以用户 guowei 执行以下命令,注意不要加 sudo, 否则就需要以 sudo -E 执行。
cd /home/guowei
screen -d -m /opt/my_app
# BASH
fi

# 或者将 export 写在 -c 内部, 加上 -c 和 单引号:
su guowei -c 'export A=/opt/bla; blabla~; /opt/my_app' // 注意:双引号跟单引号有区别

七月 17th, 2018

意:此方法不能用于解决统物理内存占用过高,导致部分服务被强制关闭的问题

要从根本上解决服务器内存占用过高的问题,参考这篇文章(https://www.idaobin.com/archives/345)

用root用户创建定时任务

切换到root用户

su – root

创建脚本文件

touch cleanCache.sh

vim cleanCache.sh

添加如下内容:

#!/bin/bash
#每两小时清除一次缓存
echo “开始清除缓存”
sync;sync;sync #写入硬盘,防止数据丢失
sleep 10 #延迟10秒
echo 3 > /proc/sys/vm/drop_caches

创建定时任务

crontab -e //弹出配置文件

添加如下内容:(按需修改)

0 */2 * * * ./cleanCache.sh

保证crond启动以及开机自启

systemctl start crond.service

systemctl enable crond.service

查看buff/cache情况

free -m

查看定时任务是否被执行

cat /var/log/cron | grep cleanCache

注意:只要任务创建了,即使退出用户登录,任务还是会执行

最后:此方法清理缓存只是紧急临时用的,不建议在生产环境中使用此方法

七月 16th, 2018

确认三件事情

一本地ip

二网关

三dns

一就不说了,设置好本地ip和掩码就行了,二网关 添加默认网关,命令:route add defaule gw 192.168.1.1 这是 你用route命令查看最下面会有一条默认路由,走192.168.1.1网关,当然这个网关是根据你本地的网段决定的,三 就是dns了,dns也需要到配置文件修改,#vi etc/resolv.conf 文件,我的文件默认是空白的。添加一条dns记录就可以了,比如我在河南,我添加:nameserver 222.85.85.85 然后保存退出,OK

ping通外网了

顺便记一下几个命令:

删除默认路由 :

route 命令

设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:

# route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

其中:

add : 添加一条路由规则
del : 删除一条路由规则
-net : 目的地址是一个网络
-host : 目的地址是一个主机
target : 目的网络或主机
netmask : 目的地址的网络掩码
gw : 路由数据包通过的网关
dev : 为路由指定的网络接口

route 命令使用举例

添加到主机的路由

# route add -host 192.168.1.2 dev eth0:0
# route add -host 10.20.30.148 gw 10.20.30.40

添加到网络的路由

# route add -net 10.20.30.40 netmask 255.255.255.248 eth0
# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route add -net 192.168.1.0/24 eth1

添加默认路由

# route add default gw 192.168.1.1

删除路由

# route del -host 192.168.1.2 dev eth0:0
# route del -host 10.20.30.148 gw 10.20.30.40
# route del -net 10.20.30.40 netmask 255.255.255.248 eth0
# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route del -net 192.168.1.0/24 eth1
# route del default gw 192.168.1.1

TAGS:
七月 16th, 2018

步骤1:更新软件包
在安装LAMP之前,最好更新存储库和软件包。 在您的Ubuntu 17.10操作系统上运行以下命令。
sudo apt update

sudo apt upgrade

步骤2:安装 Apache Web Server
输入以下命令来安装Apache Web服务器。该apache2-utils包将安装一些有用的实用程序,如Apache HTTP服务器基准测试工具(ab)。
sudo apt install -y apache2 apache2-utils

安装完成后,应自动启动Apache。 使用systemctl检查其状态。
systemctl status apache2
输出:

● apache2.service – The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active:

active (running) since Sat 2017-10-28 14:37:01 CST; 3s ago
Process: 17568 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCES
Process: 17573 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCC
Main PID: 17577 (apache2)
Tasks: 55 (limit: 4915)
CGroup: /system.slice/apache2.service
├─17577 /usr/sbin/apache2 -k start
├─17578 /usr/sbin/apache2 -k start
└─17579 /usr/sbin/apache2 -k start
如果没有运行,请使用systemctl启动它
sudo systemctl start apache2
使Apache启动时自动启动也是一个好方法
sudo systemctl enable apache2
检查Apache版本:
apache2 -v
输出:
Server version: Apache/2.4.27 (Ubuntu)
Server built: 2017-09-18T15:05:48

现在在浏览器地址栏中输入Ubuntu 17.10服务器的公网IP地址。 您应该看到“It works!”网页,这意味着Apache Web服务器正常运行。 如果要在本地的Ubuntu 17.10计算机上安装LAMP,请在浏览器地址栏中键入127.0.0.1或localhost。

现在我们需要将www-data(Apache用户)设置为文档根目录的所有者。 默认情况下,它由root用户拥有。
sudo chown www-data:www-data /var/www/html/ -R

步骤 3: 安装 MariaDB 数据库服务器
MariaDB是MySQL的替代品。 输入以下命令将其安装在Ubuntu 17.10上。
sudo apt install mariadb-server mariadb-client
安装完毕后,MariaDB服务器应自动开启。 使用systemctl检查其状态。
systemctl status mariadb
输出:
● mariadb.service – MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset:
Active: active (running) since Sat 2017-10-21 14:53:04 CST; 11s ago
Main PID: 19695 (mysqld)
Status: “Taking your SQL requests now…”
Tasks: 26 (limit: 4915)
CGroup: /system.slice/mariadb.service
└─19695 /usr/sbin/mysqld
如果没有运行,请使用以下命令启动它:
sudo systemctl start mariadb
要启用MariaDB在启动时自动启动,请运行
sudo systemctl enable mariadb
现在运行安装后的安全脚本。
sudo mysql_secure_installation
当它要求您输入MariaDB root密码时,按Enter键,因为root密码尚未设置。 然后输入y设置MariaDB服务器的root密码。

输入Y后,要输入root密码两次。
接下来,您可以按Enter回答所有剩余的问题,这将删除匿名用户,禁用远程root登录和删除测试数据库。 此步骤是MariaDB数据库安全性的基本要求。

默认情况下,Ubuntu上的MaraiDB软件包使用unix_socket对用户登录进行身份验证,这主要表示您可以使用操作系统的用户名和密码登录到MariaDB控制台。 因此,您可以运行以下命令登录,而不提供MariaDB root密码。
sudo mariadb -u root
要退出,运行
exit;
检查MariaDB服务器版本信息。
mariadb –version
输出:
mariadb Ver 15.1 Distrib 10.1.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

步骤 4: 安装 PHP7.1
在撰写本文时,PHP7.1是PHP的最新稳定版本,在PHP7.0上具有较小的性能优势。 输入以下命令来安装PHP7.1。
sudo apt install php7.1 libapache2-mod-php7.1 php7.1-mysql php-common php7.1-cli php7.1-common php7.1-json php7.1-opcache php7.1-readline

启用Apache php7.1模块,然后重新启动Apache Web服务器。
sudo a2enmod php7.1

sudo systemctl restart apache2
检查PHP版本信息。
php –version
输出:
PHP 7.1.8-1ubuntu1 (cli) (built: Aug 8 2017 15:57:37) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.1.8-1ubuntu1, Copyright (c) 1999-2017, by Zend Technologies

要使用Apache服务器测试PHP脚本,我们需要在文档根目录中创建一个info.php文件。
sudo nano /var/www/html/info.php
将以下PHP代码粘贴到文件中。

保存并关闭文件。 现在在浏览器地址栏中输入server-ip-address/info.php。 将sever-ip-address替换为您的实际IP。 如果您在本地计算机上遵循本教程,请键入127.0.0.1/info.php或localhost/info.php。
应该看到您的服务器的PHP信息。 这意味着PHP脚本可以与Apache Web服务器正常运行。

恭喜! 您已经在Ubuntu 17.10上成功安装了Apache,MariaDB和PHP7.1。 为了您的服务器的安全性,您应该现在删除info.php文件以防止窥探。
sudo rm /var/www/html/info.php

七月 16th, 2018

CentOS6.5查看防火墙的状态:
# service iptable status
Redirecting to /bin/systemctl status iptable.service
iptable.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead) –表示防火墙已经关闭

CentOS 6.5关闭防火墙
# servcie iptables stop –临时关闭防火墙
# chkconfig iptables off –永久关闭防火墙

CentOS 7.2关闭防火墙
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤

firewall-cmd –state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

# firewall-cmd –state
not running

检查防火墙的状态:

从centos7开始使用systemctl来管理服务和程序,包括了service和chkconfig。
#systemctl list-unit-files|grep firewalld.service
–防火墙处于关闭状态

firewalld.service disabled

# systemctl status firewalld.service
firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)

关闭防火墙:
# systemctl stop firewalld.service #停止firewall
# systemctl disable firewalld.service #禁止firewall开机启动

# systemctl stop firewalld.service
# systemctl disable firewalld.service

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled

Centos 7 firewall 命令:
查看已经开放的端口:
firewall-cmd –list-ports

开启端口
firewall-cmd –zone=public –add-port=80/tcp –permanent

命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

重启防火墙
firewall-cmd –reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd –state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

CentOS 7 以下版本 iptables 命令
如要开放80,22,8080 端口,输入以下命令即可
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp –dport 8080 -j ACCEPT

然后保存:
/etc/rc.d/init.d/iptables save

查看打开的端口:
/etc/init.d/iptables status

关闭防火墙
永久性生效,重启后不会复原

开启: chkconfig iptables on
关闭: chkconfig iptables off

即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop

查看防火墙状态: service iptables status

下面说下CentOS7和6的默认防火墙的区别
CentOS7默认使用的是firewall作为防火墙,使用iptables必须重新设置一下

1、直接关闭防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

2、设置 iptables service
yum -y install iptables-services

如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables

增加规则
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
保存退出后

systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
最后重启系统使设置生效即可。

systemctl start iptables.service #打开防火墙
systemctl stop iptables.service #关闭防火墙

解决主机不能访问虚拟机CentOS中的站点
前阵子在虚拟机上装好了CentOS6.2,并配好了apache+php+mysql,但是本机就是无法访问。一直就没去折腾了。

具体情况如下

1. 本机能ping通虚拟机
2. 虚拟机也能ping通本机
3.虚拟机能访问自己的web
4.本机无法访问虚拟机的web

后来发现是防火墙将80端口屏蔽了的缘故。

检查是不是服务器的80端口被防火墙堵了,可以通过命令:telnet server_ip 80 来测试

解决方法如下:
/sbin/iptables -I INPUT -p tcp –dport 80 -j ACCEPT

然后保存:
/etc/rc.d/init.d/iptables save

重启防火墙
/etc/init.d/iptables restart

CentOS防火墙的关闭,关闭其服务即可:
查看CentOS防火墙信息:/etc/init.d/iptables status
关闭CentOS防火墙服务:/etc/init.d/iptables stop

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138979.htm