从 0 到 1 搭建应用服务器(二):基于 CentOS 搭建生产环境
3、搭建生产服务器环境
上面的配置已经做到了安全性的基本要求。下面着手搭建服务器生产环境。既然是基于 Java 的生产环境,那么要求安装的东西不多,一个必备的 ftp 服务,一个 JDK 环境即可。当然,正式的话还有数据库 MySQL, Redis,以及常用的中间件 MQ、ES 等。这里我们先搭建一个基础的 Java 环境,能运行起 Springboot 即可,所以 JDK 就够了。
3.1 安装 ftp 服务
Ftp 还是比较重要的,我一般使用 ftp 上传要发布的 jar 包。另外,个别软件的安装包比较大,而且存在网络连接问题,导致下载速率比较低,因此,有时候会选择本地下载完成安装包之后通过 ftp 上传到服务器再进行安装。所以,ftp 是非常重要的一个环节。
先安装 vsftpd,
1 | yum install -y vsftpd |
安装之后会生成 /etc/vsftpd/
和 /var/ftp/
,其中
/etc/vsftpd/
目录下面包含四个文件:ftpusers
指定了哪些用户不能访问 ftp 服务user_list
当 vsftpd 里userlist_deny=NO
时,只允许这里的用户访问 ftp 服务;当 vsftpd 里userlist_deny=YES
(默认) 时,不允许这里的用户 访问 ftp 服务vsftpd.conf
是 vsftpd 的核心配置文件vsftpd_conf_migrate.sh
是 vsftpd 操作的一些变量和设置脚本
/var/ftp/
是匿名访问 ftp 服务器的时候能够访问的目录
使用 vim vsftpd.conf
编辑配置文件,比较重要的配置项说明:
1 | # 是否允许匿名登录,默认 YES,为了安全起见,我们应该将其关闭 |
其他配置还可以选择:
1 | # 地址:设置监听f t p服务的ip地址,默认监听所有IP地址 |
配置完成之后就可以使用以下命令开启服务:
1 | service vsftpd start |
另外还需要配置 系统的安全模块 SELinux:
1 | # Step 1: 打开 SELinux 文件进行编辑: |
然后,我们需要添加一个独立的用户来进行 ftp 访问,并且限制 ftp 用户只能进行 ftp 连接,不能进行服务器登录,不应该将 ftp 用户和登录用户混为一谈,以此来进一步保障服务器的安全性:
1 | # Step 1: 添加用户,语法是 useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号] |
3.2 连接 ftp 服务器
1. 远程连接 ftp
在 Mac 上面,可以使用 finder 连接 ftp 服务器,缺点是只能下载不能上传。参考文章 《Mac自带FTP工具用法》 进行连接即可,另外还可以使用 iterm2 连接。iterm2 是 Mac 上的终端神奇。其安装和配置可以参考 《MAC终端神器iterm2——告别黑白》,然后需要在 Mac 上面安装 ftp,参考 《Mac ftp 命令安装即使用》。至于 Windows 上面,直接使用 Xftp 即可。可以到我的公众号后台回复 【服务器连接软件】 获取我打包好的软件。
2. 连接 ftp 服务器的问题
用 xftp 连接提示无法打开,无法显示远程文件夹:选择 “属性->选项->将使用被动模式” 选项去掉即可。
3.3 安装 JDK
需要注意:Java SDK 和 ElasticSearch 等其他的中间件的版本对应关系,一般来说 JDK 8+ 可以满足大部分需求。
到官方网站 JDK 官方下载地址 下载 JDK 即可。在官网下载之前需要先进行用户登录,获取到下载链接之后使用 wget 命令进行下载即可:
1 | wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.tar.gz?AuthParam=1531155951_4e06a4d17c6c1dbfb8440352e19dd2ae |
注意下载后缀中包含 AuthParam
参数,如果链接不包含这个参数,下载之后可能无法使用。
如果从官网下载速度比较慢,可以尝试从华为镜像下载:华为 JDK 镜像。
进行安装:
1 | # Step 1: 创建安装目录 |
设置环境变量:
1 | # Step 1:打开 profile 编辑模式 |
3.4 搭建 Springboot 环境
如果仅仅是提供一个下载服务的话,还是比较简单的,直接使用 Springboot 的 web 和模板引擎构建一个 html 页面,apk 放到 static 目录下即可。也有问题需要注意下,即如果这样简简单单地搭建的一个服务是不安全的,因为没有做限流处理。而一般我会使用 Redis 做限流,但是这样就要介绍如何安装 Redis 以及 Redis 的各种安全配置等……所以,目前先不做,当前能够展示应用详情,并且能够给用户提供下载渠道即可。