文章目录
文章目录
存储服务
Redis是目前广泛使用的构建缓存服务的应用软件,当前使用的版本为3.2.12
布署应用
安装redis
sudo yum install redis
打开配置文件
sudo vim /etc/redis.conf
关闭ip绑定与保护模式,打开守护模式
#bind 127.0.0.1
protected-mode no
daemonize yes
设置开机自动启动
sudo chkconfig redis on
设置开机自动启动
sudo service redis start
参考
布署监控
redis-stat
切换为ruby 2.5.1版本,下载并运行。官网
rbenv global 2.5.1
gem install redis-stat
~/.rbenv/versions/2.5.1/bin/redis-stat --server --auth=password 172.16.20.116:6379
访问http://IP:63790 即可
redmon
切换为ruby 2.5.1版本,下载并运行。官网
rbenv global 2.5.1
gem install redmon
~/.rbenv/versions/2.5.1/bin/redmon -r redis://:password@172.16.20.116:6379
访问http://IP:4567 即可
redis-monitor(LittlePeng)
切换为python 2.7.16,从官网下载源码
cd ~
mkdir redisMonitor
cd redisMonitor/
git clone git://github.com/LittlePeng/redis-monitor.git ./
打开并修改依赖文件,将redis的版本限制在3以下。否则会报运行时错误
ne requirements.txt
redis<3
打开并按需修改配置文件
cd ./src
ne redis_live.conf
{"master_slave_sms": "0,0",
"RedisStatsServer": {"port": 6379, "server": "172.16.20.103"},
"sms_alert": "192.168.110.207:9999",
"DataStoreType": "redis",
"RedisServers": [
{"instance": "Master1", "group": "Test1", "port": 6379, "server": "172.16.20.103"},
{"instance": "Slave1", "group": "Test1", "port": 6380, "server": "172.16.20.116", "password": "password"}
]}
最后启动数据采集服务与Web服务
python redis_monitor_daemon.py
python redis_live_daemon.py --port=8890
访问http://IP:8890/index.html 即可
redis-monitor(NetEaseGame)
切换为python 3.6.8版本,下载并运行。官网
pyenv global 3.6.8
pip install redis-monitor
redis-monitor init
redis-monitor start
访问http://IP:9527 即可。经测试,只能实现对本机redis服务监控。
参考
文件服务
平台采用FastDFS构建分布式文件系统
FastDFS
整体架构
安装FastDFS
准备编译环境
sudo yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
创建源代码目录
cd /tmp
mkdir fastdfs
安装libfatscommon
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh
sudo ./make.sh install #编译安装
安装FastDFS
cd ../ #返回上一级目录
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh
sudo ./make.sh install #编译安装
配置Tracker
创建存储目录,复制配置文件
sudo mkdir /opt/fastdfs_tracker
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
sudo ne /etc/fdfs/tracker.conf
修改如下配置
# 存储日志和数据的根目录
base_path=/opt/fastdfs_tracker
# 当报出java.lang.Exception: getStoreStorage fail, errno code: 28错误时,则可调整硬盘剩余容量参数。默认为10%
reserved_storage_sapce=3%
设置为开机自动启动,并启动服务
sudo chkconfig fdfs_trackerd on #自启动storage服务
sudo service fdfs_trackerd start #启动storage服务
配置Storage
创建存储目录,复制配置文件
sudo mkdir /opt/fastdfs_storage
sudo mkdir /opt/fastdfs_storage_data
sudo cp /tmp/fastdfs/conf/http.conf /etc/fdfs/ #供nginx访问使用
sudo cp /tmp/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
sudo ne /etc/fdfs/storage.conf
修改如下配置
base_path=/opt/fastdfs_storage #设置storage数据文件和日志目录
store_path0=/opt/fastdfs_storage_data #实际文件存储路径
tracker_server=172.16.20.147:22122 #tracker 服务器的 IP地址和端口号
设置为开机自动启动,并启动服务
sudo chkconfig fdfs_storaged on #自启动storage服务
sudo service fdfs_storaged start #启动storage服务
安装Nginx
Nginx需与Storage安装在一台机上
cd ../ #返回上一级目录
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
wget http://nginx.org/download/nginx-1.15.4.tar.gz #下载nginx压缩包
tar -zxvf nginx-1.15.4.tar.gz #解压
cd nginx-1.15.4/
./configure --prefix=/usr/local/nginx --add-module=../fastdfs-nginx-module/src/
make
sudo make install
配置Nginx
复制模块配置文件
sudo cp /tmp/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
sudo ne /etc/fdfs/mod_fastdfs.conf
模块配置修改如下
#需要修改的内容如下
tracker_server=172.16.20.147:22122 #tracker服务器IP和端口
url_have_group_name=true
store_path0=/opt/fastdfs_storage_data
打开Nginx配置
sudo ne /usr/local/nginx/conf/nginx.conf
Nginx配置修改如下
#添加如下配置
server {
listen 6001; ## 该端口为storage.conf中的http.server_port相同
server_name localhost;
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
}
设置系统服务
cd /usr/local/nginx/
sudo ne nginx
添加如下内容
#! /bin/bash
# chkconfig: - 85 15
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
设置开机自启动
sudo chmod +x nginx
sudo ln -s /usr/local/nginx/nginx /etc/rc.d/init.d/nginx
sudo chkconfig --add nginx
sudo chkconfig nginx on
启动服务
sudo service nginx start
文件读写
在pom.xml添加如下依赖
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27</version>
</dependency>
在resources文件夹下放置配置文件fastdfs-client.properties
,fastdfs.tracker_servers
为必填项
#fastdfs.connect_timeout_in_seconds = 5
#fastdfs.network_timeout_in_seconds = 30
#fastdfs.charset = UTF-8
#fastdfs.http_anti_steal_token = false
#fastdfs.http_secret_key = FastDFS1234567890
#fastdfs.http_tracker_http_port = 80
fastdfs.tracker_servers = 172.16.20.147:22122
使用如下代码,即可完成文件上传
ClientGlobal.initByProperties("fastdfs-client.properties");
StorageClient client = new StorageClient(new TrackerClient().getConnection(), null);
String[] paths = client.upload_file("i:\\锅.gif", null, null);
Arrays.stream(paths).forEach(System.out::println);
最后,基于返回的地址(http://172.16.20.148:6001/group1/M00/00/01/rBAUlFyiUbuANWBDAAFklND3VYs523.jpg),访问已上传的图片。
参考
MongoDB
安装MongoDB
创建仓库
sudo ne /etc/yum.repos.d/mongodb-org-4.0.repo
复制如下内容
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
安装
sudo yum install -y mongodb-org
打开配置文件
sudo ne /etc/mongod.conf
修改绑定IP,使其它电脑也能访问本服务
net:
bindIp: 0.0.0.0
启动
sudo service mongod start
参考
Nginx
安装工具包
sudo yum -y install pcre-devel openssl-devel zlib-devel
sudo yum -y install gcc gcc-c++
下载源码并安装。注意,nginx-gridfs配合0.3版本的mongo-c-driver,才能通过编译。
cd /tmp
mkdir nginx
cd nginx
wget http://nginx.org/download/nginx-1.6.3.tar.gz
tar zxvf nginx-1.6.3.tar.gz
wget https://github.com/mdirolf/nginx-gridfs/archive/v0.8.zip
unzip v0.8.zip
wget https://github.com/eagleas/mongo-c-driver/archive/v0.3.zip
unzip v0.3.zip
cp -rf ./mongo-c-driver-0.3/* ./nginx-gridfs-0.8/mongo-c-driver
cd nginx-1.6.3
./configure --prefix=/usr/local/nginx --with-openssl=/usr/include/openssl --add-module=../nginx-gridfs-0.8/
make -j8
sudo make install -j8
打开配置文件
sudo ne /usr/local/nginx/conf/nginx.conf
修改监听端口与GridFS请求
http {
server {
listen 88;
location /files/ {
gridfs files
field=filename
type=string;
mongo 127.0.0.1:27017;
}
}
设置系统服务
cd /usr/local/nginx/
sudo ne nginx
添加如下内容,确保nginx晚于mongodb启动。
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
killall -9 nginx
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
设置开机自启动
sudo chmod +x nginx
sudo ln -s /usr/local/nginx/nginx /etc/rc.d/init.d/nginx
sudo chkconfig --add nginx
sudo chkconfig nginx on
启动服务
sudo service nginx start
参考
用nginx-gridFS读取MongoDB的图片及文件(为什么你老是配不成功?)
添加nginx为系统服务(service nginx start/stop/restart)
文件读写
使用Spring.Data.MongoDB完成文件读写。在pom.xml添加如下依赖
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.10.18.RELEASE</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.2</version>
</dependency>
Spring配置文件如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
<!-- 扫描服务 -->
<context:component-scan base-package="com.fsl"></context:component-scan>
<mongo:db-factory id="mongoDbFactory" host="172.16.20.103" port="27017" dbname="files" />
<mongo:mapping-converter id="converter" />
<bean class="org.springframework.data.mongodb.gridfs.GridFsTemplate">
<constructor-arg ref="mongoDbFactory" />
<constructor-arg ref="converter" />
</bean>
</beans>
示例代码如下
public class FileAccess {
@Autowired
private GridFsTemplate template;
public void SaveFile() {
// 打开文件流
try (InputStream inputStream = FileUtil.getInputStream("i:\\nginx-list.png")) {
// 自定义文件元属性
HashMap<String, String> map = new HashMap<>();
map.put("metadata", "文件元属性");
// 存储文件
template.store(inputStream, "a.gif", map);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
上传成功后,访问http://ip:88/files/文件名 ,即可访问该文件。
参考
vsftpd
vsftpd是目前广泛使用的构建ftp服务的应用软件,当前使用的版本为2.2.2
布署应用
安装vsftpd
sudo yum install vsftpd
打开配置文件
sudo vim /etc/vsftpd/vsftpd.conf
修改匿名根目录,禁用切换根目录
anon_root=/home/fslftp
chroot_local_user=YES
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。需添加如下配置
allow_writeable_chroot=YES
创建ftp专用用户
sudo useradd -s /sbin/nologin fslftp
sudo passwd fslftp
修改目录权限
sudo chmod +rx /home/fslftp
设置开机自动启动
sudo chkconfig vsftpd on
启动服务
sudo service vsftpd start
参考
html/#gridfs)
vsftpd
vsftpd是目前广泛使用的构建ftp服务的应用软件,当前使用的版本为2.2.2
布署应用
安装vsftpd
sudo yum install vsftpd
打开配置文件
sudo vim /etc/vsftpd/vsftpd.conf
修改匿名根目录,禁用切换根目录
anon_root=/home/fslftp
chroot_local_user=YES
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。需添加如下配置
allow_writeable_chroot=YES
创建ftp专用用户
sudo useradd -s /sbin/nologin fslftp
sudo passwd fslftp
修改目录权限
sudo chmod +rx /home/fslftp
设置开机自动启动
sudo chkconfig vsftpd on
启动服务
sudo service vsftpd start
参考