APF的安装配置以及使用规则

1
wget http://www.rfxn.com/downloads/apf-current.tar.gz
tar -xvzf apf-current.tar.gz
cd apf-9.7-2/
./install.sh

[root@iZ942k2d5ezZ apf-9.7-2]# ./install.sh
Installing APF 9.7-2: Completed.

Installation Details:
Install path: /etc/apf/
Config path: /etc/apf/conf.apf
Executable path: /usr/local/sbin/apf

Other Details:
Listening TCP ports: 22,80,100,3306,6379,27017
Listening UDP ports: 123,636
Note: These ports are not auto-configured; they are simply presented for information purposes. You must manually configure all port options.

到上面就安装成功了

启动
/etc/init.d/apf start
chkconfig apf on

二,配置apf

vim /etc/apf/conf.apf 一般按照下面的配置好,然后apf -f(或者apf -r) 刷新一下就行了

IG_TCP_CPORTS=”21,22,80,443,3306,8080″ //设置服务器允许被访问的TCP端口
IG_UDP_CPORTS=”53″ //设置服务器允许被访问的UDP端口
EG_TCP_CPORTS=”21,25,80,443,43,2089″ //设置服务器允许对外访问的TCP端口
EG_UDP_CPORTS=”20,21,53″ //设置服务器允许对外访问的UDP端口

DEVEL_MODE=”1″ 改为 DEVEL_MODE=”0″
DLIST_SPAMHAUS=”0″ 改为 DLIST_SPAMHAUS=”1″
DLIST_DSHIELD=”0″ 改为 DLIST_DSHIELD=”1″
配置过程中要注意以下几点:
1,根据不同的服务器开放不同的端口,web服务器根mysql服务器开放的端口肯定不一样。
2,DEVEL_MODE=”1″表示在调试模式下,每五分钟重调配置,这样能避免因为错误的配置而使服务器崩溃。
3,设置只通许192.168.1.139远程连接22端口
// 在/etc/apf/allow_hosts.rules添加如下信息:
tcp:in:d=22:s=192.168.1.139
out:d=22:d=192.168.1.139

// 在/etc/apf/deny_hosts.rules添加如下信息:
tcp:in:d=22:s=0/0
out:d=22:d=0/0

开始的时候,我以为只要在allow_hosts.rules里面加就行了,改过一后,我换了一个IP,已然可以连接,搞得我很无语。后在deny_hosts.rules加上了上面的规则后,在连接时就提示超时了。allow_hosts.rules和deny_hosts.rules里面都加了规则后,重起apf会提示配置成功的信息,偶然发现的。
apf(12234): {trust} allow outbound 192.168.1.139 to port 22
apf(12234): {trust} allow inbound tcp 192.168.1.139 to port 22

三:apf常用命令
apf -s // 启动APF防火墙
apf -r // 重启APF防火墙
apf -f // 刷新APF防火墙配置文件
apf -l // 列出APF的过虑规则
apf -t // APF的日志信息。
apf -e // 将域名解释加入信认规则
apf -a // 将IP/IP段添加到白名单
apf -d // 将IP/IP段添加到黑名单
apf -u // 将IP/IP段从白/黑名单中删除
apf -o // 将IP/IP段从白/黑名单中删除

常用端口:
21/tcp //ftp
22/tcp //ssh
25/tcp //smtp
53/udp //dns
80/tcp //http
110/tcp //pop3
143/tcp //imap
443/tcp //https
993/tcp //imaps
995/tcp //pop3
3306/tcp //mysql
5432/tcp //postgresql

其他:

IG_TCP_CPORTS=”21,22,80,443,3306,8080″ //设置服务器允许被访问的TCP端口

IG_UDP_CPORTS=”53″ //设置服务器允许被访问的UDP端口

EG_TCP_CPORTS=”21,25,80,443,43,2089″ //设置服务器允许对外访问的TCP端口

EG_UDP_CPORTS=”20,21,53″ //设置服务器允许对外访问的UDP端口

DEVEL_MODE=”1″ 改为 DEVEL_MODE=”0″

DLIST_SPAMHAUS=”0″ 改为 DLIST_SPAMHAUS=”1″

DLIST_DSHIELD=”0″ 改为 DLIST_DSHIELD=”1″

配置过程中要注意以下几点:

1,根据不同的服务器开放不同的端口。

2,DEVEL_MODE=”1″表示在调试模式下,每五分钟重调配置,这样能避免因为错误的配置而使服务器崩溃。

3,设置只通许192.168.1.139远程连接22端口

// 在/etc/apf/allow_hosts.rules添加如下信息:

tcp:in:d=22:s=192.168.1.139

out:d=22:d=192.168.1.139

// 在/etc/apf/deny_hosts.rules添加如下信息:

tcp:in:d=22:s=0/0

out:d=22:d=0/0

开始的时候,我以为只要在allow_hosts.rules里面加就行了,改过一后,我换了一个IP,已然可以连接,搞得我很无语。后在 deny_hosts.rules加上了上面的规则后,在连接时就提示超时了。allow_hosts.rules和deny_hosts.rules里 面都加了规则后,重起apf会提示配置成功的信息,偶然发现的。

apf(12234): {trust} allow outbound 192.168.1.139 to port 22

apf(12234): {trust} allow inbound tcp 192.168.1.139 to port 22

三,apf的常用命令

apf -s // 启动APF防火墙

apf -r // 重启APF防火墙

apf -f // 刷新APF防火墙配置文件

apf -l // 列出APF的过虑规则

apf -t // APF的日志信息。

apf -e // 将域名解释加入信认规则

apf -a // 将IP/IP段添加到白名单

apf -d // 将IP/IP段添加到黑名单

apf -u // 将IP/IP段从白/黑名单中删除

apf -o // 将IP/IP段从白/黑名单中删除

四,常用端口列表

21/tcp //ftp

22/tcp //ssh

25/tcp //smtp

53/udp //dns

80/tcp //http

110/tcp //pop3

143/tcp //imap

443/tcp //https

993/tcp //imaps

995/tcp //pop3

3306/tcp //mysql

5432/tcp //postgresql

访问前十的URL(可以用来分析网站哪个模块最受欢迎)

awk ‘{print $7}’ www.xxwan.com.log | sort | uniq -c |sort -nr -k 1|head -10

1595483 /games/search_game.php?type=game&k=1?21jhgf
833639 /games/search_game.php?type=game&k=#$csd!
734697 /games/card.php?gid=366
75786 /games/search_game.php?type=game&k=w2qsdw
31686 /games/card.php?gid=518
6367 /bbs/uc_server/index.php?__times__=1
2387 /upimg/a/1479719869638.jpg
2042 /
1673 /upimg/images//1524216154946.jpg
1647 /upimg/images//1486691754833.jpg

 

 

awk统计ip访问量(一条命令)

对下面的1.log 文件进行统计,

要求: 统计出每个IP的访问量有多少? 提示,先awk过滤出ip,然后进行排序,统计重复数。

只用一条命令即可

awk ‘{STAT[$1]++};END{for(A in STAT) print STAT[A], A}’ 1.log|sort -nr|head -10

1.log   的大致格式:

200.104.118.180 – – [27/Jun/2018:10:47:34 +0800] “GET /games/search_game.php?typ
e=game&k=w2qsdw HTTP/1.1” 404 564 “http://www.xxwan.com/games/search_game.php?ty
pe=game&k=w2qsdw” “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTM
L, like Gecko) Chrome/57.0.2987.98 Safari/537.36” –
77.50.62.6 – – [27/Jun/2018:10:47:34 +0800] “GET /games/search_game.php?type=gam
e&k=w2qsdw HTTP/1.1” 404 564 “http://www.xxwan.com/games/search_game.php?type=ga
me&k=w2qsdw” “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Mo
zilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 3.5.30729)” –
90.189.159.36 – – [27/Jun/2018:10:47:34 +0800] “GET /games/search_game.php?type=
game&k=w2qsdw HTTP/1.1” 404 564 “http://www.xxwan.com/games/search_game.php?type
=game&k=w2qsdw” “Mozilla/4.0 (compatible; MSIE 6.0; Windows XP 5.1) Lobo/0.98.4”

学习ASP.NET Core Razor 编程系列十一——把新字段更新到数据库

学习ASP.NET Core Razor 编程系列目录

学习ASP.NET Core Razor 编程系列一

学习ASP.NET Core Razor 编程系列二——添加一个实体

 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面

学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面

学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面

学习ASP.NET Core Razor 编程系列六——数据库初始化

学习ASP.NET Core Razor 编程系列七——修改列表页面

学习ASP.NET Core Razor 编程系列八——并发处理

学习ASP.NET Core Razor 编程系列九——增加查询功能

 学习ASP.NET Core Razor 编程系列十——添加新字段

 

 

         在经过了上面篇文章的学习之后,本篇文章我们来学习如何使用 Entity Framework Code First 迁移功能将新字段添加到模型,并且同时将新字段添加到数据库中。

            使用 EF Code First 自动创建数据库时,Code First 会向数据库添加一个表,以帮助跟踪数据库的架构是否与生成它的实体类同步。 如果它们不同步,EF 就会引发异常。 这样一来就更容易发现一致的数据库表或者代码问题。

          我们接下来使用Code First迁移功能更新数据库。

         1. 现在我们来修改seeddata类,在类中增加一个Publishing字段,并提供数据。修改示例如下所示,你可以对每一本书籍信息都参照修改。

 
  context.Book.AddRange(
                    new Book
                    {
                        Name = "Python编程 从入门到实践",
                        ReleaseDate = DateTime.Parse("2018-1-12"),
                        Author = "埃里克·马瑟斯",
                        Price = 75.99M,
                        Publishing="机械出版社"
                    },

          2. 在Visual Studio 2017菜单中选择生成->生成解决方案

         3.在Visual Studio 2017的菜单中选择“工具”菜单–>“NuGet 包管理器”>“包管理器控制台”。 如下图。

       

         4. 在 PMC 中,输入以下命令,如图:

          Add-Migration Publishing

 

      Add-Migration 指令会通知框架执行以下操作:

    1)  将 Book实体类与 数据库中的Book表进行比较。

    2)  创建代码以将在数据库中对表Books表结构进行更新。如下图。

    3)  Visual Studio 2017对于有新字段“Publishing”的迁移文件的命名是当前日期+字段名称。这样命名这样有助于管理。如下图。

 

         5. 在执行完上面的指令之后,在 PMC 中,输入以下命令,如图:

            Update-Database

 

          7. 在执行完以上指令之后,在数据库中添加了Publishing字段。如下图。

 

        8. 虽然我们把字段添加 到数据库,但是这个字段,却是没有数据的。如下图。

 

 

那如何给字段同值呢?

  1. 如果你是开发,而且已经修改了初始化类SeedData类。那么可以参考(学习ASP.NET Core Razor 编程系列六——数据库初始化)给数据库初始化数据。
  2. 如果你把所有的记录从数据库中删除。你可以在浏览器中打开书籍列表页面,然后使用删除链接删除记录,也可以使用SQL Server对象资源管理器(SQL Server Management Studio)使用SQL语句把数据从数据库中删除。

 

          现在我们在visual studio 2017中按F5运行应用程序,应用程序不会在如上一篇文章那样报错了。在应用程序运行起来之后,在浏览器中分别打开创建/编辑/列表页面,验证这些页面中是否已经有了publishing 字段的书籍信息。如下图。

列表页面:

 

创建页面:

 

编辑页面:

 

 

 

 

 

在Linux下安装RabbitMQ

Installing on RPM-based Linux (CentOS, Fedora, OpenSuse, RedHat)

安装新版本的RabbitMQ出错:

centos端口转发神器:socat安装及使用

socat作用是在两个流之间建立双向的通道,且支持众多协议和链接方式:ip,tcp,udp,ipv6,pipe,exec,system,open,proxy,openssl,socket等
yum 方式安装:

wget –no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
yum makecache
yum install socat -y

cat /etc/yum.repos.d/convirt.repo

[convirt-dep]
name=ConVirt Dependencies
baseurl=http://www.convirture.com/repos/deps/RHEL/6.x
enabled=1
gpgcheck=0
gpgkey=http://www.convirture.com/repos/convirture_packaging_pub_key

使用方式:

sudo nohup socat tcp-l:外部访问端口,reuseaddr,fork tcp:192.168.xxx.xxx:内部转发端口

1、安装Erlang:http://www.rabbitmq.com/releases/erlang/

yum -y install openssl* 
rpm -ivh http://www.rabbitmq.com/releases/erlang/erlang-17.4-1.el6.x86_64.rpm (old)
rpm -ivh http://www.rabbitmq.com/releases/erlang/erlang-18.3-1.el6.x86_64.rpm (new)

2、安装RabbitMQ

rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
yum install http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.4/rabbitmq-server-3.5.4-1.noarch.rpm -y (old)
yum install http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2-1.noarch.rpm -y (new)

3、修改配置

mkdir -p /data/rabbitmq/log/
chown -R rabbitmq:rabbitmq /data/rabbitmq
vim /usr/lib/rabbitmq/bin/rabbitmq-defaults  --修改日志文件和数据库文件存放路经
vim /usr/lib/rabbitmq/bin/rabbitmq-env  修改端口号

4、启动RabbitMQ

chkconfig rabbitmq-server on
/sbin/service rabbitmq-server stop/start
或
service rabbitmq-server start/stop

5、安装监控插件

rabbitmq-plugins enable rabbitmq_management   --安装监控插件

6、设置用户

复制代码
rabbitmqctl add_user user1 ****  --添加用户user1和密码

rabbitmqctl set_permissions -p / user1 ".*" ".*" ".*"  --设置user1用户在虚拟主机/下面的权限

rabbitmqctl list_user_permissions user1   --显示user1权限

rabbitmqctl set_user_tags user1 administrator  --设置user1为管理员标示

rabbitmqctl delete_user guest     --删除默认guest用户

rabbitmqctl list_users   --显示所有用户

rabbitmqctl add_vhost vhost1  --添加虚拟主机vhost1,虚拟主机只是起到一个命名空间的作用,所以可以多个user共同使用一个virtual host
复制代码

7、设置防火墙

复制代码
iptables -I INPUT -p tcp --dport 5672 -j ACCEPT   --rabbitmq端口

iptables -I INPUT -p tcp --dport 15672 -j ACCEPT  --监控端口

service iptables save
service iptables restart 
cat /etc/sysconfig/iptables
复制代码

 

 

Centos 安装GIT 1.7.1

在Linux上安装Git

1、首先,你可以试着输入git,看看系统有没有安装Git:

git

2、安装GIT https://git-scm.com/download/linux

yum install git -y

3、检查GIT是否安装成功

git --version

4、安装完成后,还需要最后一步设置,在命令行输入:

复制代码
git config --global user.name "your name"
git config --global user.email "your email address"
解决办法UTF8 编码的环境,通过将git配置变量 core.quotepath设置为false
git config --global core.quotepath false
git config --global i18n.logOutputEncoding utf-8
git config --global i18n.commitEncoding utf-8
查看已设配置
git config --list
复制代码

5、在服务器上创建本地仓(git init  和 git init –bare 的区别)

复制代码
useradd git  --增加git用户来运行git服务
mkdir /data/git_repo
chown -R git:git /data/git_repo  --修改所有者
su git --切换git用户登录

cd /data/git_repo/
git init --bare tlz.common.git  --在服务器上创建本地仓名为tlz.common.git需要使用--bare参数,在用户本地创建则不需要使用--bare参数(也不一定非要按这样的规定方式创建)
或
cd /data/git_repo/
mkdir tlz.common.git
cd tlz.common.bit
git init                --把这个目录tlz.common.bit变成Git可以管理的仓库
复制代码

查看git_repo仓库的所有者和所有组必须是git:

没有使用–bare参数创建git仓库:

使用–bare参数创建git仓库:

6、在windows下面创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(在本地windows操作系统上右键菜单中选择“Git Bash Here”,打开Git Bash窗口 ),创建SSH Key:

ssh-keygen -t rsa -C "youremail@example.com" ----一路回车就可以创建默认的id_rsa和id_rsa.pub文件
ssh-keygen -t rsa -C wangyunpeng@tidebuy.net -f ~/.ssh/wyp -P ''(这里是空字符串)   ----创建指定用户名称的公钥文件
ls -la

7、如果在linux服务器上没有.ssh目录,也需要通过创建证书的方式创建出来.ssh目录

su git  ----切换到git用户
ssh-keygen -t rsa

8、在服务器上添加登陆用户的证书,记住要在git用户下面的.ssh目录里面创建authorized_keys文件(/home/git/.ssh/下面创建authorized_keys文件)

vim authorized_keys  --编辑文件,将windows里面的ssh目录下面创建的wyp.pub文件的内容粘贴到这里
cat authorized_keys  --查看复制内容
chmod 600 authorized_keys
rm -f id_rs*    --可以删除证书文件

9、回到root用户下面修改/etc/passwd,禁止git用户登录

exit
vim /etc/passwd     --修改git登录方式/usr/bin/git-shell,改为禁用

9、在windows客户端上的ssh目录里面创建config文件,指定git服务器的ip地址、端口、登陆用户名和登陆密钥证书

10、在windows客户端里面,找到要存放远程git仓库的本地目录获取代码有两种方式:

a、使用命令行方式获取代码,右键菜单选择“Git Bash Here”:

git clone git@localgit:/data/git_repo/tlz.common.git

b、使用图形窗口获取代码,右键菜单选择“Git Clone”:

c、结果: