在LINUX下安装部署fastdfs服务器和nginx,小编结合自己之前部署的时候遇到的一些问题,写了如下的详细环境部署操作过程,结合安装docker容器(是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口),有兴趣的朋友可以借鉴参考
我当前使用的是Centos6.7做部署,大致上LINUN系列的部署没有多大的差异
查看当前centos版本:uname –a
cat /etc/issue
查看当前centos系统内核:uname -r
https://blog.csdn.net/szxiaohe/article/details/76650266
查看已有的jdk
[root@root ~]# rpm -qa|grep jdk
copy-jdk-configs-3.3-9.el6.noarch
java-1.7.0-openjdk-1.7.0.191-2.6.15.4.el6_10.x86_64
[root@root ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.4.el6_10.x86_64
安装jdk1.8
建立安装路径:mkdir /usr/local/java
把jdk1.8安装包放入java目录中,进行解压
tar -zxvf jdk-8u60-linux-x64.tar.gz
编辑配置文件,配置环境变更
vim /etc/profile
添加如下内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_111
export CLASSPATH=$JAVA_HOME/lib/
(或 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar)
export PATH=$JAVA_HOME/bin:$PATH
让修改的文件立刻生效,而不用重新登录
#source /etc/profile
查看jdk是否安装成功
#java -version
将 apache-tomcat-9.0.0.M17.tar.gz 拷贝到 /usr/local/tomcat/ 目录下
解压
#tar -zxvf apache-tomcat-9.0.0.M17.tar.gz
#cd /usr/local/tomcat/apache-tomcat-9.0.0.M17/bin/
启动服务命令,可以看见启动成功,
关闭服务
添加tomcat用户,并创建图片存放目录
创建tomcat用户
#useradd tomcat
切换tomcat用户
#su tomcat
创建图片保存地址
#cd /home/tomcat
#mkdir mkdir -p ./terminalPM-web/img
建立TOMCAT虚拟目录
1). # cd /usr/local/tomcat/apache-tomcat-9.0.0.M17/conf
2). 创建图片存放目录
在server.xml中找到
在其中添加:
部署terminalPM-web应用
先将 /usr/local/tomcat/apache-tomcat-9.0.0.M17/webapps/ 目录下的
terminalPM-web文件夹和terminalPM-web.war删除
拷贝terminalPM-web.war到/usr/local/tomcat/apache-tomcat-9.0.0.M17/webapps/
9、启动tomcat
# /usr/local/tomcat/apache-tomcat-9.0.0.M17/bin/startup.sh
10.修改配置文件
#cd /usr/local/tomcat/apache-tomcat-9.0.0.M17/webapps/terminalPM-web/WEB-INF/classes
#vim terminalPM.properties
修改下面这些的属性(主要是ip和port ,其他不用修改)
DB.url=jdbc:mysql://192.168.100.22:3306/mysql?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true
#memcached.server=192.168.100.22:11211
#memcached.server=192.168.100.22:11212
#memcached.server=192.168.100.222:11213
#img.urlMap=http://192.168.100.222:8088/terminalPM-web/img/
img.privateUrlMap=http://192.168.100.22:8080/terminalPM-web/img/
重启tomcat
12查看tomcat 日志 (调试时用,部署时可忽略)
#cd /usr/local/tomcat/apache-tomcat-9.0.0.M17/logs
# tail -f catalina.out
Ctrl+c 退出日志
下载:https://tomcat.apache.org/download-80.cgi
在/usr/local/tomcat下放入Tomcat包
#mkdir –p /usr/local/tomcat
在bin下开启Tomcat
在浏览器访问地址
到此Tomcat8安装成功
检查系统中的MySQL
命令:rpm -qa | grep -i mysql;
安装[MySQL-shared-compat-5.6.29-1.el6.x86_64.rpm]
命令:rpm -i MySQL-shared-compat-5.6.29-1.el6.x86_64.rpm
删除mysql-libs-5.1
命令:yum -y remove mysql-libs-5.1.71*
或rpm -e --nodeps mysql-libs-5.1.71*
删除MySQL目录
查找目录:find / -name mysql
删除目录和文件
rm -rf /root/.mysql_sercret
rm –rf /usr/my.cnf
删除mysql服务
chkconfig --list | grep -i mysql
chkconfig --del mysql
Centos7.0,卸载mariadb
检查系统中的mariadb
命令:rpm -qa | grep mariadb
卸载
rpm -e --nodeps mariadb-libs-5.5.35-3.el7.x86_64
rpm -e --nodeps mariadb-5.5.35-3.el7.x86_64
rpm -e --nodeps mariadb-server-5.5.35-3.el7.x86_64
2、安装测试
rpm -ivh --test MySQL-server-5.6.29-1.el6.x86_64.rpm
安装
rpm -ivh MySQL-server-5.6.29-1.el6.x86_64.rpm
rpm -ivh MySQL-client-5.6.29-1.el6.x86_64.rpm
rpm -ivh MySQL-devel-5.6.29-1.el6.x86_64.rpm (Mysql静态库)
rpm -ivh MySQL-shared-5.6.29-1.el6.x86_64.rpm (Mysql动态库)
开启Mmysql服务:
cd /usr/share
cd mysql
cp my-default.cnf /etc/my.cnf
service mysql start
修改数据库配置文件 命令:vi/etc/my.cnf。
添加:
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
保存退出vi编辑。
service mysql start
初始化数据库
/usr/bin/mysql_install_db
3) 开启服务:
命令:/etc/init.d/mysql star
在下面文件内找到初始密码
more /root/.mysql_secret
使用初始密码登录
mysql -uroot -pF6K3v_xggFoLQeiN
修改密码
Set password = password(‘123456’);
MySQL开机启动
设置:chkconfig mysql on
查看:chkconfig mysql --list
登录MySQl
创建数据库(v2vnms)
Create database v2vnms;
创建用户nms,为其赋予对v2vnms数据库的全部权限。nms只能本地访问。
Create user ‘nms’@’localhost’ IDENTIFIED BY ‘123456’;
Create user ‘nmstest’@’%’ IDENTIFIED BY ‘123456’;
GRANT ALL ON v2vnms.* TO ‘nmstest’@’%’;
Mysql安装目录:/data/mysql
检测系统是否自带安装mysql
#yum list installed | grep mysql
删除系统自带的mysql及其依赖命令:
#yum -y remove mysql-libs.x86_64
给CentOS添加rpm源
#wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
#yum localinstall mysql-community-release-el6-5.noarch.rpm
#yum repolist all | grep mysql
#yum-config-manager –disable mysql55-community
#yum-config-manager –disable mysql56-community
#yum-config-manager –enable mysql57-community-dmr
#yum repolist enabled | grep mysql
安装mysql 服务器命令:
#yum install mysql-community-server
注意:在进行yum install时候,会可能出现下载更新包错误,多尝试几遍,原因是因为网络不通等原因
启动mysql命令:
#service mysqld start
查看mysql是否自启动,并且设置开启自启动命令:
#chkconfig –list | grep mysqld
#chkconfig mysqld on
解决密码,字符集问题:
[root@zxq-pc ~]# grep “password” /var/log/mysqld.log
能查看到:[Note] A temporary password is generated for root@localhost: 3XMIr2XgfL!W
最后就是密码
(1)但是有时候/var/log/mysqld.log里没有记录到默认密码,此时查看:
Vim /root/.mysql_secret 就可以看到密码了
使用该密码进入mysql:
#mysql –uroot –p
->password:
Mysql>SET PASSWORD = PASSWORD(‘123456’);//设置密码123456,到这里就解决设置密码的问题了,BUT通常情况下,使用默认随机密码还是不能登录mysql
(2)这时候,一般都会是没有密码的可以登录,先进入到mysql
#mysql –u -p
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
此处mypassword为新设置的密码:
(3)设置字符集
进入mysql show variables like ‘character_set_%’;查看mysql字符集,发现默认并非utf8
这里我们首先停止mysql的服务 systemctl stop mysqld
然后修改配置文件,目录是/etc/my.cnf, 在client和mysqld两个节点下分别添加如下:
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
修改完成,重新开启mysql的服务,systemctl restart mysqld
然后查看字符集如下:
建立远程登录用户
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,一个新的帐户:
mysql>grant all privileges on . to ‘root’@’%’ identified by ‘root’;
mysql>flush privileges;
查看表
mysql> use mysql;
mysql> select host,user from user;
这时候应该可以远程连接了
安装下载文件
安装下载libfastcommon 和fastdfs-5.05,可以见附件下载参考
下载完后将这两个文件上传到服务器中
• FastDFS的版本为v5.05
• nginx的版本为1.8.0
• 本机的内网ip地址为:192.168.100.22
• tracker的储存地址为:/usr/local/fastdfs/home
• storage的储存地址为:/usr/local/fastdfs/storage
• storage的日志地址为:/usr/local/fastdfs/home
安装FastDFS依赖
#在Centos6.7s上不需要执行此命令(自带)
yum -y install gcc-c++
#FastDFS依赖libevent库
yum -y install libevent
安装libfastcommon
上传文件到/usr/local/fds下,解压
tar -zxvf libfastcommonV1.0.7.tar.gz
进入目录查看压缩包文件:ls
执行./make.sh
./make.sh install
libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下
cp /usr/lib64/libfastcommon.so /usr/lib/
至此libfastcommon就已经安装成功了
设置完毕后就可以开始安装fastdfs了。
上传文件到/usr/local/fds
解压
tar -zxvf fastdfs-5.05.tar.gz
cd FastDFS
解压完成后进入目录fastdfs-5.05,依次执行./make.sh和./make.sh install:
./make.sh
./make.sh install
安装到了/etc/fdfs中
#将conf目录下的配置文件拷贝到/etc/fdfs
cp conf/* /etc/fdfs/
安装成功后就会生成如上的3个.sample文件(示例配置文件),我们再分别拷贝出3个后面用的正式的配置文件:
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
至此FastDFS已经安装完毕,接下来的工作就是依次配置Tracker和Storage了。
创建tracker服务器的文件路径,用来存放Tracker的数据文件和日志文件等
#创建tracker
的储存目录
mkdir -p /usr/local/fastdfs/home
#使用tracker.conf.sample覆盖掉原有的tracker.conf
cp tracker.conf.sample tracker.conf
#修改/etc/fdfs/tracker.conf文件
vim /etc/fdfs/tracker.conf
#修改/etc/fdfs/tracker.conf文件的base_path变量为我们刚创建的目录
base_path=/usr/local/fastdfs/home
#启动tracker服务
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
#查看服务是否启动成功
ps -aux|grep tracker
#配置开机自启动(在/etc/rc.d/rc.local)文件中添加如下命令
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
编辑tracker.conf配置文件
Vim /etc/fdfs/tracker.conf
disabled=false #启用配置文件(默认启用)
port=22122 #设置tracker的端口号,通常采用22122这个默认端口
base_path=/usr/local/fastdfs/home #设置tracker的数据文件和日志目录
http.server_port=6666 #设置http端口号,默认为8080
#创建storage储存目录
mkdir -p /usr/local/fastdfs/storage
#编辑配置文件
vim /etc/fdfs/storage.conf
#修改的内容有
#默认group_name=group1,这里不需要修改
group_name=group1
#修改base_path:这里是日志文件,使用tracker创建的文件/usr/local/fastdfs/home
base_path=/usr/local/fastdfs/home
#修改store_path0,为实际存储路径/usr/local/fastdfs/storage,如果有多个路径还可以添加(store_path1=… store_path2=…)
store_path0=/usr/local/fastdfs/storage
#指定tracker的地址(哪怕是伪分布,此处也千万不要写localhost)
tracker_server=192.168.232.131:22122
#启动storage服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
#查看服务是否启动
ps -aux|grep storage
#配置服务自启动,在(/etc/rc.d/rc.local)文件中添加下面代码
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
验证FastDFS是否安装成功
#编辑/etc/fdfs/client.conf文件
vim /etc/fdfs/client.conf
#修改base_path参数和tracker_server参数
base_path=/usr/local/fastdfs/home
tracker_server=192.168.100.22:22122
查看当前启动的进程:
可以看到这俩已经启动了 ok
在/usr/local/fastdfs/storage/data下可以查看有这么多
如没有成功
在usr/local/fastdfs/home/logs下可以查看log中的错误信息,来寻找原因
验证文件是否可以上传
#将/usr/src/1001.png上传到FastDFS服务器(此处的1001.png是我随便找的一个图放在此处的,做测试用)
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/src/1001.png
至此文件上传已经成功,因为没有整合fastdfs和nginx,所以还不能在浏览器查看到
fastdfs和nginx整合
上传FastDFS-nginx-module_v1.16.tar.gz到usr/local/fds/
安装整合模块
#解压安装包
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
#进入安装文件src目录
cd fastdfs-nginx-module/src/
#修改配置文件config,将/usr/local/路径改为/usr/(一共修改三处,如下图所示)
#将src目录的mod_FastDFS.conf复制到/etc/fdfs/目录下面
cp mod_fastdfs.conf /etc/fdfs/
#修改mod_fastdfs.conf文件的内容,base_path、tracker_server(可配置多个)、url_have_group_name、store_path0(可配置多个)
base_path=/usr/local/fastdfs/home
tracker_server=192.168.100.22:22122
url_have_group_name=true
store_path0=/usr/local/fastdfs/storage
#将libfdfsclient.so拷贝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
#创建nginx/client目录
mkdir -p /var/temp/nginx/client
config配置文件
安装nginx依赖库
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
安装nginx
#上传nginx,并解压
tar -zxvf nginx-1.8.0.tar.gz
#进入nginx目录
cd nginx-1.8.0
#创建nginx临时目录
mkdir -p /var/temp/nginx
#配置nginx(prefix配置nginx的安装目录,add-module指定我们的整合插件地址)
./configure
–prefix=/usr/local/nginx
–pid-path=/var/run/nginx/nginx.pid
–lock-path=/var/lock/nginx.lock
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–with-http_gzip_static_module
–http-client-body-temp-path=/var/temp/nginx/client
–http-proxy-temp-path=/var/temp/nginx/proxy
–http-fastcgi-temp-path=/var/temp/nginx/fastcgi
–http-uwsgi-temp-path=/var/temp/nginx/uwsgi
–http-scgi-temp-path=/var/temp/nginx/scgi
–add-module=/usr/src
#编译
make
#安装(会在/usr/local/下生成nginx文件夹)
make install
修改nginx的配置文件(nginx.conf,修改该文件的Server节点,如下)
server {
listen 80;
server_name 192.168.100.22;
location /group1/M00/{
ngx_fastdfs_module;
}
}
*:server_name是本机的ip地址
/group1/M00/是根据我们上传的图片的地址确定的
启动nginx
启动nginx命令
./nginx
#重新加载nginx命令
./nginx -s reload
浏览器访问刚刚我们上传的图片地址,查看图片(图片随意截图的,有点不整洁,但是不影响测试效果哦)
到这里,咱的fastdfs服务器已经搭建成功了,以下附上相关的安装包,如果失效,请留言会给相对应的新的地址,下面的内容是安装docker容器,有兴趣的朋友可以参考,因为服务器部署安装操作繁多且杂,在部署过程中,一定要细心,不放过每一个细节,不然就会报错的呢
附件下载参考
Fastdfs相关安装包:
链接:https://pan.baidu.com/s/1H0JJTIH-1ocQnElKuyKIrg 密码:rmkc
Tomcat7:
链接:https://pan.baidu.com/s/1Uk9eLjxNwp4Oqfplab6Rwg 密码:iimh
Tomcat8:
链接:https://pan.baidu.com/s/1TK3-ex7axkFNFU5xeJsUsQ 密码:tgui
Mysql5.6:
链接:https://pan.baidu.com/s/1_aQVBMjdDsr9SIrxnUAbIg 密码:6lp9
以下为参考资料,亲测一部分,docker-compose可忽略,只做参考用
**
一、 centos6.7安装docker docker-compose
**
https://www.cnblogs.com/cearnach/p/9491180.html
先yum update :(若要卸载:yumlist installed | grep docker yum - y remove
docker-engine.x86_64 rum-rf /var/lib/docker)
https://www.2cto.com/kf/201612/577964.html
安装docker
然后:yuminstalldocker-io
再servicedockerstart
启动成功,即可查看docker info
设置开机启动:chkconfig docker on
安装docker-compose
先:yum install python-pip.noarch
#对安装好的pip进行一次升级
sudo pip install --upgrade pip
再:pip install docker-compose
另一种方式:
curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-uname -s
-uname -m
> /usr/local/bin/docker-compose
再 chmod +x /usr/local/bin/docker-compose
若/usr/bin 下找不到命令,则cp /usr/local/bin/docker-compose /usr/bin/ 下即可
最后docker-compose -version 查看
使用docker-compose一键部署FastDFS
Docker 联网:http://www.cnblogs.com/ldw85/p/5218766.html
第一步:安装docker
Linux的版本 CentOS
安装命令:
yum install -y docker-io
如果不行则先执行如下命令,若上述命令成功则跳过如下命令:
yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
第二步:启动docker
启动命令:
service docker start
查看docker版本:docker -v
第三步:下载fastdfs容器
命令:
docker pull morunchang/fastdfs
查看是否下载成功:
docker images
docker镜像的保存位置为:
/var/lib/docker/containers
第四步docker加入开启启动
直接执行:chkconfig docker on
第五步:启动fastdfs
启动tracker命令:
docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
启动storage命令:
docker run -d --name storage --net=host -e TRACKER_IP=:22122 -e GROUP_NAME= morunchang/fastdfs sh storage.sh
注:
1.使用的网络模式是–net=host, 替换为你机器的Ip即可
2. 是组名,即storage的组
3.如果想要增加新的storage服务器,再次运行该命令,注意更换 新组名
4.docker ps 查看容器信息
第六步:修改访问文件的端口(本镜像默认为8080):
分别进入docker,storage容器内部
docker exec -it tracker /bin/bash
修改nginx配置文件中的监听端口(本次采用的是8099端口,配置文件中的端口号还是22122,8099只是通过浏览器访问图片时的端口号)
vi /etc/nginx/conf/nginx.conf
保存完毕后输入exit退出
重启容器:docker restart tracker
第七步:docker和fastdfs的安装与卸载
采用yum安装,可通过命令查看安装目录:rpm -ql docker-io
默认安装目录
/etc 一些设置文件放置的目录
/usr/bin 一些可执行文件
/usr/libexec 一些程序使用的动态函数库
/usr/share/doc 一些基本的软件使用手册与帮助文档
/usr/share/man/man1 一些docker文件
通过yum安装的docker的卸载命令:yum remove docker-io
查看容器信息的命令:docker ps
删除fastdfs容器要先停止容器再删除:docker stop <容器的id>
在执行:docker rm <容器id>
删除镜像的命令:docker rmi <容器id>
附录:java测试代码
上传:
@Test
public void fastDfsTest1() throws Exception{
//加载配置文件,也就是加载tracker的地址
ClientGlobal.init(“C:/Soft/MarsWorkSpace/exercise_parent/exercise-fastDfs/src/main/resources/fdfs-client.conf”);
//创建trackerClient客户端对象
TrackerClient trackerClient=new TrackerClient();
//通过trackerClient对象创建trackerServer对象
TrackerServer trackerServer = trackerClient.getConnection();
//创建一个storgeServer对象,值为空
StorageServer storageServer=null;
//创建一个storgeClient对象,将trackerServer与storgeServer作为参数
StorageClient storageClient=new StorageClient(trackerServer, storageServer);
//使用storgeClent对象上传图片
String[] file = storageClient.upload_file(“D:/xiaozhu.jpg”,“jpg”,null);
//打印路径
for (String string : file) {
System.out.println(string);
}
}
下载:
@Test
public void fastDfsTest1() throws Exception{
//加载配置文件,也就是加载tracker的地址
ClientGlobal.init(“C:/Soft/MarsWorkSpace/exercise_parent/exercise-fastDfs/src/main/resources/fdfs-client.conf”);
//创建trackerClient客户端对象
TrackerClient trackerClient=new TrackerClient();
//通过trackerClient对象创建trackerServer对象
TrackerServer trackerServer = trackerClient.getConnection();
//创建一个storgeServer对象,值为空
StorageServer storageServer=null;
//创建一个storgeClient对象,将trackerServer与storgeServer作为参数
StorageClient storageClient=new StorageClient(trackerServer, storageServer);
byte[] download_file = storageClient.download_file(“group1”,“M00/00/00/ezhXb1rxQr2ARgXZAAAsG6Eq_DY734.jpg”);
BufferedOutputStream bos=null;
FileOutputStream fos=null;
File file=new File(“D:/2.jpg”);
fos=new FileOutputStream(file);
bos=new BufferedOutputStream(fos);
bos.write(download_file);
}
浏览器访问路径:
http://123.56.87.111:8099/group/<文件详细路径>(本机测试浏览URL)
配置文件:
connect_timeout = 30
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 8077
http.anti_steal_token = no
http.secret_key = FastDFS1234567890
tracker_server = 123.56.87.111:22122
至此,在centos 安装fastdfs服务器关联nginx和docker容器已经完成了,写这么多实属不易,在部署docker会有很多问题,小编不能确保各位在部署不会出现问题,但也可作为借鉴
看累了,就赞一下吧emmm