• 主页
  • 系列总集
  • OpenCV
  • CMake
  • iOS
  • Java
  • 前端
所有文章 关于我

  • 主页
  • 系列总集
  • OpenCV
  • CMake
  • iOS
  • Java
  • 前端

Hello Server(三):服务器容器Jetty和开放防火墙

2016-07-20

服务器容器Jetty

数据库安装完毕后我们需要安装一个服务器容器以便于架设服务

服务器容器相关知识参考

下载

同MySQL一样,Jetty可以使用wget下载,我采用的是8.1.19版本

1
2
3

wget -O /usr/local/jetty-8.1.19.tar.gz http://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/8.1.19.v20160209/jetty-distribution-8.1.19.v20160209.tar.gz

解压缩和建立软连接

1
2
3
4
[root@localhost local]# tar -xvf jetty-8.1.19.tar.gz
[root@localhost local]# mv jetty-distribution-8.1.19.v20160209 jetty-8.1.19
[root@localhost local]# ln -s jetty-8.1.19 jetty

建立work目录和启动

由于Jetty本身是隐式的work目录参考这里

1
2
3
4
[root@localhost local]# cd jetty-8.1.19
[root@localhost jetty-8.1.19]# mkdir work
[root@localhost jetty-8.1.19]# java -jar start.jar

至此一切顺利的话,应该是启动成功,但是在折腾的过程中往往是不顺利的,遇到的一些坑将在[下章总结][]

防火墙开放端口

服务器启动后在服务器内访问地址 127.0.0.1:8080 可以看到Jetty页面,但是在实体机器内通过服务器地址 192.168.133.130:8080 访问却提示无法打开页面,原因是由于 Linux服务器的防火墙默认并没有开放8080端口

Linux防火墙是什么

Linux防火墙是一个叫做iptables的服务,其配置文件在 /etc/sysconfig/iptables 中

打开iptables

1
2
[root@localhost jetty]# vim /etc/sysconfig/iptables

默认文本为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

开放8080和3306端口

一般情况下各个端口的作用为

  1. 22: ssh端口
  2. 8080: web服务端口
  3. 3306: mysql端口

从默认文本中可以看出,22端口已经被默认允许进入,我们只需要照着写就可以

1
2
3
4
5
6
7
8
9
10
# Firewall configuration written by system-config-firewall
....

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
....

COMMIT

保存退出后重启防火墙服务,新的配置文件才能生效

1
2
3
4
5
6
7
//这个是关闭防火墙指令
[root@localhost jetty]# service iptables stop
//这个是启动指令
[root@localhost jetty]# service iptables start
//这个是重启
[root@localhost jetty]# service iptables restart

使用重启可以看到提示信息

1
2
3
4
5
6
[root@localhost jetty]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]

iptables在讲什么

iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。任何流量在进入网卡之后需要经过5个链(或者叫关卡),这五个链也被称为五个钩子函数(hook functions)。

  1. PREROUTING (路由前)
  2. INPUT (数据包流入口)
  3. FORWARD (转发管卡)
  4. OUTPUT(数据包出口)
  5. POSTROUTING(路由后)

任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@www ~]# iptables-save
# Generated by iptables-save v1.4.7 on Fri Jul 22 15:51:52 2011
*filter <==星号开头的指的是表格,这里为 filter
:INPUT ACCEPT [0:0] <==冒号开头的指的是链,这里使用了3个链INPUT FORWARD OUTPUT
:FORWARD ACCEPT [0:0] <==三条内建链的政策都是 ACCEPT
:OUTPUT ACCEPT [680:100461]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT <==针对 INPUT 的规则
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT <==这条很重要!针对本机内部接口开放!
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT <==针对 22端口的 INPUT 的规则
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited <==针对 FORWARD 的规则
COMMIT
# Completed on Fri Jul 22 15:51:52 2011

参考文献

  1. iptables详解
赏

请问老板还招人么(/ω\)

支付宝
微信
  • Java
  • Net
  • Servlet
  • Server
  • DataBase
  • MySQL
  • Linux
  • Tutorial

扫一扫,分享到微信

微信分享二维码
Hello Server(四):以MySQL初始化为主的一些坑坑坑坑
Hello Server(二):数据库MySQL
© 2021 Alan Li
Hexo Theme Yilia by Litten
  • 所有文章
  • 关于我

tag:

  • iOS
  • Java
  • Collection
  • Python
  • Shell
  • CMake
  • Memory
  • JavaScript
  • Architecture
  • AnchorPoint
  • Android
  • Web
  • Annotation
  • AFNetworking
  • Window
  • ViewController
  • AutoLayout
  • Dozer
  • CoreAnimation
  • Cycle Retain
  • Block
  • UI
  • IDE
  • FrontEnd
  • CSS
  • Category
  • TableViewCell
  • Security
  • Net
  • JSP
  • Spring
  • C
  • MyBatis
  • Date
  • React
  • GCD
  • UITouch
  • Gesture
  • UIControl
  • Git
  • HTML
  • HTTPS
  • HTTP
  • Servlet
  • Server
  • DataBase
  • MySQL
  • Linux
  • Tutorial
  • Ajax
  • Type
  • JQuery
  • JSON
  • Exception
  • Parameter
  • Reflect
  • Thread
  • Sort
  • KVO
  • MKMapKit
  • Overlay
  • Maven
  • Configure
  • Tips
  • Transaction
  • Swift
  • NavigationBar
  • Nginx
  • Runtime
  • OpenCV
  • Property
  • Playground
  • Protocol
  • Redux
  • ScrollView
  • Session
  • Cookie
  • Shiro
  • Error
  • Singleton
  • RegEx
  • StackView
  • StatusBar
  • Base64
  • Socket
  • TCP
  • IP
  • TextField
  • CALayer
  • UILabel
  • View
  • Animation
  • Xcode
  • Hexo
  • Terminal
  • OC
  • Device
  • Log
  • Image
  • JUnit
  • Oval
  • Archive
  • XSS
  • Compiler
  • Aspect
  • Responder
  • Class
  • FireWall
  • RetainCount
  • Const
  • Frame
  • String
  • Symbols
  • Framework
  • CocoaPods
  • Unity
  • Message
  • Button
  • AuthorizationStatus
  • Struct
  • XCTest
  • NSNotification
  • Contact

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

我写的,大概率是错的。。。。。