首页 文章 精选 留言 我的

精选列表

搜索[系统],共10000篇文章
优秀的个人博客,低调大师

java B2B2C springmvc mybatis多租户电子商城系统--Zuul的高可用

Zuul的高可用非常关键,因为外部请求到后端服务的流量都会经过Zuul。故而在生产环境下一般都需要部署高可用的Zuul以避免单点故障。愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三一Zuul客户端也注册到EurekaServer上这种情况下,Zuul的高可用非常简单,只须将多个Zuul节点注册到EurekaServer上,就可实现Zuul的高可用。此时Zuul的高可用与其他微服务的高可用没什么区别。如下图,当Zuul客户端也注册到EurekaServer上时,只须部署多个Zuul节点即可实现其高可用。Zuul客户端会自动从EurekaServer中查询ZuulServer的列表,并使用Ribbon负责均衡地请求Zuul集群。 二Zuul客户端未注册到EurekaServer上现实中,这种场景更多,例如,Zuul客户端是一个手机APP——不可能让所有的手机终端都注册到EurekaServer上。这种情况下,可借助一个额外的负载均衡器来实现Zuul的高可用,例如Nginx、HAProxy、F5等。如下图,Zuul客户端请求发送到负载均衡器,负载均衡器将请求转发到其代理的其中一个Zuul节点。这样,就可以实现Zuul的高可用。 整体代码结构如下:资料和源码来源

优秀的个人博客,低调大师

SQL数据库学习之路(练习)--数据库系统教程第三章练习

目录 实验要求 利用SQL语句创建数据库Lesson 通过SQL语句创建以下基本表 通过SQL语句实现以下操作: 撤销索引IDX_CLASSID及IDX_S#_C# 在学生关系中增加班级号属性列CLASSID 撤销学生关系中的班级号属性列CLASSID 撤销班级关系CLASS 利用实验1创建的数据库Lesson,分别在各表中插入以下记录,要求至少有一个表为单元组、至少有一个表为多元组的方式插入: 通过select into语句将SC表的表结构复制为SC_TEMP表,然后查询所有性别非空的学生的选课记录并将之插入到SC_TEMP表。 删除SC_TEMP表中无成绩的元组。 将SC_TEMP表中S3的低于S3平均成绩的成绩提高10% 删除SC_TEMP表中S3的小于该生平均成绩的成绩元组。 将S表中性别为空的学生的性别修改为女,并将年龄修改为25岁 创建视图V_M_STUDENT, 要求显示男学生的学号、姓名、课程名、教师名、成绩等列 ​检索学习C3课程的所有学生姓名和年龄 检索学习由教授讲授的课程的学生学号和姓名 检索没选修任何课程的学生学号 检索年龄在18到20岁之间的女学生学习的课程号和课程名 ​检索学习了C1或C3课程的学生学号 ​检索Hu同学不学的课程号 检索成绩为空的课程对应的教师号和教师姓名 检索至少有S2和S4学习的课程号 ​检索选修了S3学习的全部课程的学生学号 检索每个学生的姓名和出生年份,并将出生年份列重命名为Birth_Year 检索选修了课程的所有学生的学号,要求不显示重复结果 检索LIU老师所授课程的每门课程的人数和平均成绩 统计各门课程的最高分 统计每门课程的学生选修人数,(超过3人的课程才统计),要求显示课程号和人数,查询结构按人数升序排序,若人数相同,按课程号降序排序 查询每个学生超过他自己选修课程平均成绩的学号及课程号 把低于所有课程总平均成绩的女同学的成绩提高3% 分别用INNER JOIN 和LEFT OUTER JOIN 连接S和SC表 检索姓名中第三个字母为“N”的学生的姓名和年龄 选择C1课程的前3名的学生学号和成绩 检索平均成绩大于85的学生学号 实验要求 利用SQL语句创建数据库Lesson create database work on primary( name='work', --主数据文件的逻辑名称 filename='F:\SQL\work1\work.mdf', --主数据文件的物理名称 size=10mb, --主数据文件的初始大小 filegrowth=10mb --主数据文件的增长率 ) log on( name='work_log', --日志文件的逻辑名称 filename='F:\SQL\work1\work_log.ldf', --日志文件的物理名称 size=5mb, --日志文件的初始大小 filegrowth=10% --日志文件的增长率 ) 通过SQL语句创建以下基本表 教师关系 T(T#, TNAME,TITLE) 课程关系 C(C#,CNAME,T#) 学生关系 S(S#,SNAME,AGE,SEX) 选课关系SC(S#,C#,SCORE) 班级关系CLASS(CLASSID,CLASSNAME) 其中红色粗体为主键,带下划线的属性为外键。 通过SQL语句在CLASS表的CLASSID列上创建聚集索引IDX_CLASSID 通过SQL语句创建在S#和C#两个列上创建索引IDX_S#_C#,并指定索引按S#降序,C#升序有序。 create table T --创建表教师关系T (T# char(4) not null, TNAME char(8) not null, TITLE char(10), PRIMARY KEY(T#) --设置主键为T# ); create table C --创建表课程关系T (C# char(4), CNAME char(10) not null, T# char(4), PRIMARY KEY(C#), --设置主键为C# FOREIGN KEY(T#)REFERENCES T(T#) --设置外键为T# ); create table S --创建表学生关系S (S# char(4) not null, SNAME char(8) not null, AEG char(1), PRIMARY KEY(S#) --设置主键为S# ); create table SC --创建表选课关系SC (S# char(4), C# char(4), SCORE SMALLINT, PRIMARY KEY(S#,C#), --设置主键为S#,C# FOREIGN KEY(S#)REFERENCES S(S#), ----设置外键为S# FOREIGN KEY(C#)REFERENCES C(C#) ----设置外键为C# ); create table class --创建表班级关系class ( CLASSID char(4), CLASSNAME char(8) ); 通过SQL语句实现以下操作: 撤销索引IDX_CLASSID及IDX_S#_C# create unique index IDX_CLASSID on class(CLASSID); --在CLASS表的CLASSID列上创建聚集索引IDX_CLASSID create unique index IDX_S#_C# on SC(S# DESC,C# ASC); --创建在S#和C#两个列上创建索引IDX_S#_C#,并指定索引按S#降序,C#升序有序 DROP INDEX IDX_CLASSID on class; --撤销索引IDX_CLASSID DROP INDEX IDX_S#_C# on SC; --撤销索引IDX_S#_C# 在学生关系中增加班级号属性列CLASSID alter table S add CLASSID char(4); --在学生关系中增加班级号属性列CLASSID 撤销学生关系中的班级号属性列CLASSID alter table S drop column CLASSID; --撤销学生关系中的班级号属性列CLASSID 撤销班级关系CLASS drop table class ; --撤销班级关系CLASS 利用实验1创建的数据库Lesson,分别在各表中插入以下记录,要求至少有一个表为单元组、至少有一个表为多元组的方式插入: S表 C表 SC表 T表 insert S(S#,SNAME,AEG,sex) values('s1','WANG','20','男'), ('s2','LIU','18','女'), ('s3','HU','17','男'), ('s4','XIA','19',NULL), ('s5','SUN','20','男'), ('s6','ZHAO',NULL,'男'), ('s7','DENG',NULL,'女') insert C(C#,CNAME,T#) values ('c1','OS','t2') insert C(C#,CNAME,T#) values ('c2','java','t1') insert C(C#,CNAME,T#) values ('c3','C++','t1') insert C(C#,CNAME,T#) values ('c4','C','t3') insert SC(S#,C#,SCORE) values('s1','c1','80'), ('s1','c2','53'), ('s1','c3',NULL), ('s1','c4','68'), ('s2','c1','85'), ('s3','c1','85'), ('s3','c3','83'), ('s3','c4','75'), ('s4','c1','79'), ('s4','c2','92'), ('s5','c1',NULL), ('s5','c2','45') insert T(T#,TNAME,TITLE) values('t1','LIU','教授'), ('t2','ZHANG','副教授'), ('t3','LI','教授'), ('t4','ZHAO','讲师') 通过select into语句将SC表的表结构复制为SC_TEMP表,然后查询所有性别非空的学生的选课记录并将之插入到SC_TEMP表。 select *into SC_TEMP from SC where 1=2 insert into SC_TEMP select *from SC where S# in(select S# from S where sex is not NULL) 删除SC_TEMP表中无成绩的元组。 delete from SC_TEMP where SCORE is NULL --删除SC_TEMP表中成绩为NULL的元组 将SC_TEMP表中S3的低于S3平均成绩的成绩提高10% --将SC_TEMP表中S3的低于S3平均成绩的成绩提高10% update SC_TEMP set SCORE =1.1*SCORE where SCORE <(select AVG(SCORE) from SC_TEMP where S#='s3') and S#='s3' 删除SC_TEMP表中S3的小于该生平均成绩的成绩元组。 --删除SC_TEMP表中S3的小于该生平均成绩的成绩元组。 delete from SC_TEMP where SCORE <(select AVG(SCORE) from SC_TEMP where S#='s3') and S#='s3' 将S表中性别为空的学生的性别修改为女,并将年龄修改为25岁 update S set [sex]='女', [AEG]='25' where sex is NULL 创建视图V_M_STUDENT, 要求显示男学生的学号、姓名、课程名、教师名、成绩等列 create view V_M_STUDENT(S#,SNAME,CNAME,TNAME,SCORE) as select S.S#,SNAME,CNAME,TNAME,SCORE from S,C,T,SC where S.S#=SC.S# AND SC.C#=C.C# AND C.T#=T.T# 检索学习C3课程的所有学生姓名和年龄 --1)检索学习C3课程的所有学生姓名和年龄 select S.SNAME,S.AEG from S,SC where S.S#=SC.S# and SC.C#='c3' 检索学习由教授讲授的课程的学生学号和姓名 --2)检索学习由教授讲授的课程的学生学号和姓名 Select DISTINCT S.S#,S.SNAME from S,SC,C,T where T.TITLE='教授' AND T.T#=C.T# AND C.C#=SC.C# AND SC.S#=S.S# 检索没选修任何课程的学生学号 --3)检索没选修任何课程的学生学号 select S.S# from S where S.S# NOT IN (SELECT S# FROM SC) 检索年龄在18到20岁之间的女学生学习的课程号和课程名 --4)检索年龄在18到20岁之间的女学生学习的课程号和课程名 SELECT DISTINCT C.C#,C.CNAME FROM C,SC WHERE C.C#=SC.C# AND SC.S# IN(SELECT S# FROM S WHERE S.AEG BETWEEN 18 AND 20) 检索学习了C1或C3课程的学生学号 --5)检索学习了C1或C3课程的学生学号 SELECT DISTINCT S.S# FROM S,SC WHERE S.S# LIKE SC.S# AND (SC.C#='c1' or SC.C#='c3') 检索Hu同学不学的课程号 --6)检索Hu同学不学的课程号 SELECT C.C# FROM C WHERE C.C# NOT IN (SELECT C# FROM SC,S WHERE SC.S# LIKE S.S# AND S.SNAME='HU') 检索成绩为空的课程对应的教师号和教师姓名 --7)检索成绩为空的课程对应的教师号和教师姓名 SELECT T.T#,T.TNAME FROM T WHERE T.T# IN (SELECT C.T# FROM C,SC WHERE C.C# LIKE SC.C# AND SC.SCORE IS NULL) 检索至少有S2和S4学习的课程号 --8)检索至少有S2和S4学习的课程号 SELECT DISTINCT SC.C# FROM SC WHERE SC.C# IN ((SELECT SC.C# FROM SC WHERE SC.S# like 's2') INTERSECT (SELECT SC.C# FROM SC WHERE SC.S# like 's4')) 检索选修了S3学习的全部课程的学生学号 --9)检索选修了S3学习的全部课程的学生学号 SELECT DISTINCT SC.S# FROM SC WHERE SC.C# IN (SELECT SC.C# FROM SC WHERE SC.S# LIKE 's3') 检索每个学生的姓名和出生年份,并将出生年份列重命名为Birth_Year --10)检索每个学生的姓名和出生年份,并将出生年份列重命名为Birth_Year SELECT S.SNAME,2018-S.AEG AS Birth_Year FROM S 检索选修了课程的所有学生的学号,要求不显示重复结果 --1)检索选修了课程的所有学生的学号,要求不显示重复结果 SELECT DISTINCT SC.S# FROM SC 检索LIU老师所授课程的每门课程的人数和平均成绩 --2)检索LIU老师所授课程的每门课程的人数和平均成绩。 SELECT C.C#,COUNT(DISTINCT SC.S#),AVG(SC.SCORE) FROM C,T,SC WHERE C.T#=T.T# AND C.C#=SC.C# AND TNAME='LIU' GROUP BY C.C#; 统计各门课程的最高分 --3)统计各门课程的最高分。 SELECT SC.C#,MAX(SC.SCORE) FROM SC GROUP BY SC.C# 统计每门课程的学生选修人数,(超过3人的课程才统计),要求显示课程号和人数,查询结构按人数升序排序,若人数相同,按课程号降序排序 --4)统计每门课程的学生选修人数,(超过3人的课程才统计),要求显示课程号和人数,查询结构按人数升序排序,若人数相同,按课程号降序排序。 SELECT DISTINCT C#,COUNT(DISTINCT S#) AS 人数 FROM SC GROUP BY C# HAVING COUNT(S#)>3 ORDER BY COUNT(DISTINCT S#) asc,C# 查询每个学生超过他自己选修课程平均成绩的学号及课程号 --5)查询每个学生超过他自己选修课程平均成绩的学号及课程号。 SELECT X.S#,X.C# FROM SC AS X WHERE X.SCORE >(SELECT AVG(Y.SCORE) FROM SC AS Y WHERE X.S# =Y.S# ) 把低于所有课程总平均成绩的女同学的成绩提高3% --6)把低于所有课程总平均成绩的女同学的成绩提高3% --SELECT SC.SCORE FROM SC,S WHERE SC.S# LIKE S.S# AND S.sex='女' AND SC.SCORE>(SELECT AVG(SC.SCORE) FROM SC) UPDATE SC SET SC.SCORE=SC.SCORE*1.03 WHERE SC.SCORE LIKE (SELECT SC.SCORE FROM SC,S WHERE SC.S# LIKE S.S# AND S.sex='女' AND SC.SCORE<(SELECT AVG(SC.SCORE) FROM SC)) 分别用INNER JOIN 和LEFT OUTER JOIN 连接S和SC表 --INNER JOIN 仅对满足连接条件的CROSS中的列 LEFT OUTER JOIN 一个表满足条件的行,和另一个表的所有行 SELECT *FROM S INNER JOIN SC on S.S#=SC.S# SELECT *FROM S LEFT OUTER JOIN SC on S.S#=SC.S# 检索姓名中第三个字母为“N”的学生的姓名和年龄 --8)检索姓名中第三个字母为“N”的学生的姓名和年龄。 SELECT S.SNAME,S.AEG FROM S WHERE S.SNAME LIKE '__N%' 选择C1课程的前3名的学生学号和成绩 --9) 选择C1课程的前3名的学生学号和成绩。 SELECT TOP(3) SC.S#,SC.SCORE FROM SC WHERE SC.C# LIKE 'c1' ORDER BY SC.SCORE DESC 检索平均成绩大于85的学生学号 --10) 检索平均成绩大于85的学生学号。 SELECT DISTINCT X.S# FROM SC AS X WHERE 85<= ALL(SELECT AVG(Y.SCORE) FROM SC AS Y WHERE Y.S#=X.S# GROUP BY Y.S#)

优秀的个人博客,低调大师

Dubbo分布式架构实战--FastDFS分布式文件系统的安装与使用(单节点)

样例参考视频: http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 跟踪服务器:192.168.4.121 (edu-dfs-tracker-01) 存储服务器:192.168.4.125 (edu-dfs-storage-01) 环境:CentOS 6.6 用户:root 数据目录:/fastdfs (注:数据目录按你的数据盘挂载路径而定) 安装包: FastDFS v5.05 libfastcommon-master.zip(是从FastDFS和FastDHT中提取出来的公共C函数库) fastdfs-nginx-module_v1.16.tar.gz nginx-1.6.2.tar.gz fastdfs_client_java._v1.25.tar.gz 源码地址:https://github.com/happyfish100/ 下载地址:http://sourceforge.net/projects/fastdfs/files/ 官方论坛:http://bbs.chinaunix.net/forum-240-1.html 一、所有跟踪服务器和存储服务器均执行如下操作 1、编译和安装所需的依赖包: # yum install make cmake gcc gcc-c++ 2、安装libfastcommon: (1)上传或下载libfastcommon-master.zip到/usr/local/src目录 (2)解压 # cd /usr/local/src/ # unzip libfastcommon-master.zip # cd libfastcommon-master (3) 编译、安装 # ./make.sh # ./make.sh install libfastcommon默认安装到了 /usr/lib64/libfastcommon.so /usr/lib64/libfdfsclient.so (4)因为FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接. # ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so # ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so # ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so # ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so 3、安装FastDFS (1)上传或下载FastDFS源码包(FastDFS_v5.05.tar.gz)到 /usr/local/src 目录 (2)解压 # cd /usr/local/src/ # tar -zxvf FastDFS_v5.05.tar.gz # cd FastDFS (3)编译、安装(编译前要确保已经成功安装了libfastcommon) # ./make.sh # ./make.sh install 采用默认安装的方式安装,安装后的相应文件与目录: A、服务脚本在: /etc/init.d/fdfs_storaged /etc/init.d/fdfs_tracker B、配置文件在(样例配置文件): /etc/fdfs/client.conf.sample /etc/fdfs/storage.conf.sample /etc/fdfs/tracker.conf.sample C、命令工具在/usr/bin/目录下的: fdfs_appender_test fdfs_appender_test1 fdfs_append_file fdfs_crc32 fdfs_delete_file fdfs_download_file fdfs_file_info fdfs_monitor fdfs_storaged fdfs_test fdfs_test1 fdfs_trackerd fdfs_upload_appender fdfs_upload_file stop.sh restart.sh (4)因为FastDFS服务脚本设置的bin目录是/usr/local/bin,但实际命令安装在/usr/bin,可以进入 /user/bin目录使用以下命令查看fdfs的相关命令: # cd /usr/bin/ # ls | grep fdfs 因此需要修改FastDFS服务脚本中相应的命令路径,也就是把/etc/init.d/fdfs_storaged 和/etc/init.d/fdfs_tracker两个脚本中的/usr/local/bin修改成/usr/bin: # vi fdfs_trackerd 使用查找替换命令进统一修改:%s+/usr/local/bin+/usr/bin # vi fdfs_storaged 使用查找替换命令进统一修改:%s+/usr/local/bin+/usr/bin 二、配置FastDFS跟踪器(192.168.4.121) 1、 复制FastDFS跟踪器样例配置文件,并重命名: # cd /etc/fdfs/ # cp tracker.conf.sample tracker.conf 2、 编辑跟踪器配置文件: # vi /etc/fdfs/tracker.conf 修改的内容如下: disabled=false port=22122 base_path=/fastdfs/tracker (其它参数保留默认配置,具体配置解释请参考官方文档说明: http://bbs.chinaunix.net/thread-1941456-1-1.html ) 3、 创建基础数据目录(参考基础目录base_path配置): # mkdir -p /fastdfs/tracker 4、 防火墙中打开跟踪器端口(默认为22122): # vi /etc/sysconfig/iptables 添加如下端口行: -A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT 重启防火墙: # service iptables restart 5、 启动Tracker: # /etc/init.d/fdfs_trackerd start (初次成功启动,会在/fastdfs/tracker目录下创建data、logs两个目录) 查看FastDFS Tracker是否已成功启动: # ps -ef | grep fdfs 6、 关闭Tracker: # /etc/init.d/fdfs_trackerd stop 7、 设置FastDFS跟踪器开机启动: # vi /etc/rc.d/rc.local 添加以下内容: ## FastDFS Tracker /etc/init.d/fdfs_trackerd start 三、配置FastDFS存储(192.168.4.125) 1、 复制FastDFS存储器样例配置文件,并重命名: # cd /etc/fdfs/ # cp storage.conf.sample storage.conf 2、 编辑存储器样例配置文件: # vi /etc/fdfs/storage.conf 修改的内容如下: disabled=false port=23000 base_path=/fastdfs/storage store_path0=/fastdfs/storage tracker_server=192.168.4.121:22122 http.server_port=8888 (其它参数保留默认配置,具体配置解释请参考官方文档说明: http://bbs.chinaunix.net/thread-1941456-1-1.html ) 3、 创建基础数据目录(参考基础目录base_path配置): # mkdir -p /fastdfs/storage 4、 防火墙中打开存储器端口(默认为23000): # vi /etc/sysconfig/iptables 添加如下端口行: -A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT 重启防火墙: # service iptables restart 5、 启动Storage: # /etc/init.d/fdfs_storaged start (初次成功启动,会在/fastdfs/storage目录下创建data、logs两个目录) 查看FastDFS Storage是否已成功启动 # ps -ef | grep fdfs 6、 关闭Storage: # /etc/init.d/fdfs_storaged stop 7、 设置FastDFS存储器开机启动: # vi /etc/rc.d/rc.local 添加: ## FastDFS Storage /etc/init.d/fdfs_storaged start 四、文件上传测试(192.168.4.121) 1、修改Tracker服务器中的客户端配置文件: # cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf # vi /etc/fdfs/client.conf base_path=/fastdfs/tracker tracker_server=192.168.4.121:22122 2、执行如下文件上传命令: # /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/FastDFS_v5.05.tar.gz 返回ID号:group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz (能返回以上文件ID,说明文件上传成功) 六、在每个存储节点上安装nginx 1、fastdfs-nginx-module作用说明 FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.4.125,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.4.126,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.4.126上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。(解压后的fastdfs-nginx-module在nginx安装时使用) 2、上传fastdfs-nginx-module_v1.16.tar.gz到/usr/local/src 3、解压 # cd /usr/local/src/ # tar -zxvf fastdfs-nginx-module_v1.16.tar.gz 4、修改fastdfs-nginx-module的config配置文件 # cd fastdfs-nginx-module/src # vi config CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/" 修改为: CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" (注意:这个路径修改是很重要的,不然在nginx编译的时候会报错的) 5、上传当前的稳定版本Nginx(nginx-1.6.2.tar.gz)到/usr/local/src目录 6、安装编译Nginx所需的依赖包 # yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel 7、编译安装Nginx(添加fastdfs-nginx-module模块) # cd /usr/local/src/ # tar -zxvf nginx-1.6.2.tar.gz # cd nginx-1.6.2 # ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src # make && make install 8、复制fastdfs-nginx-module源码中的配置文件到/etc/fdfs目录,并修改 # cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ # vi /etc/fdfs/mod_fastdfs.conf 修改以下配置: connect_timeout=10 base_path=/tmp tracker_server=192.168.4.121:22122 storage_server_port=23000 group_name=group1 url_have_group_name = true store_path0=/fastdfs/storage 9、复制FastDFS的部分配置文件到/etc/fdfs目录 # cd /usr/local/src/FastDFS/conf # cp http.conf mime.types /etc/fdfs/ 10、在/fastdfs/storage文件存储目录下创建软连接,将其链接到实际存放数据的目录 # ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00 11、配置Nginx 简洁版nginx配置样例: user root; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8888; server_name localhost; location ~/group([0-9])/M00 { #alias /fastdfs/storage/data; ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } 注意、说明: A、8888端口值是要与/etc/fdfs/storage.conf中的http.server_port=8888 相对应, 因为http.server_port默认为8888,如果想改成80,则要对应修改过来。 B、Storage对应有多个group的情况下,访问路径带group名,如/group1/M00/00/00/xxx, 对应的Nginx配置为: location ~/group([0-9])/M00 { ngx_fastdfs_module; } C、如查下载时如发现老报404,将nginx.conf第一行user nobody修改为user root后重新启动。 12、防火墙中打开Nginx的8888端口 # vi /etc/sysconfig/iptables 添加: -A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT # service iptables restart 13、启动Nginx # /usr/local/nginx/sbin/nginx ngx_http_fastdfs_set pid=xxx (重启Nginx的命令为:/usr/local/nginx/sbin/nginx -s reload) 14、通过浏览器访问测试时上传的文件 http://192.168.4.125:8888/group1/M00/00/00/wKgEfVUYNYeAb7XFAAVFOL7FJU4.tar.gz 七、FastDFS的使用的Demo样例讲解与演示: 具体内容请参考样例代码和视频教程 注意:千万不要使用kill -9命令强杀FastDFS进程,否则可能会导致binlog数据丢失。 关注公众号:

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册