部署服务器 忘是亡心i 2021-09-08 23:08 469阅读 0赞 ## 1、部署服务器 ## 1. 59.226.29.77(占用空间1T,带宽为百兆共享,32G内存,16核CPU): * 运行负载均衡服务 * fastdfs,开放端口`22122`, `23000` * nginx访问fastdfs文件 2. 59.226.29.78(占用空间1T,带宽为百兆共享,32G内存,16核CPU): * docker运行后端微服务 * nginx运行后台管理系统 3. 59.226.29.79(占用空间1T,带宽为百兆共享,32G内存,16核CPU): * docker运行后端微服务 * nginx运行后台管理系统 4. 59.226.29.80(占用空间1T,带宽为百兆共享,16G内存,8核CPU): * 运行主数据库:用户名`root`,端口`3306`,密码`123@cnic` * nginx运行前端商城 1. 59.226.29.81(占用空间1T,带宽为百兆共享,16G内存,8核CPU): * 运行备份数据库:用户名`root`,端口`3306`,密码`123@cnic` * nginx运行前端商城 2. 59.226.29.82(占用空间1T,带宽为百兆共享,32G内存,8核CPU): * apollo配置中心,包括:apollo-configservice、apollo-adminservice、apollo-portal ,端口`8080`,`8070`,用户名`apollo`,密码`admin` * zookeeper,运行在docker中,端口`2181` * kafka,运行在docker中 ,端口`9092` * elasticSearch,运行在docker中, 端口`9200`,`9300` * redis,运行在docker中 ,端口`6379`,密码`123@cnic` ### 6、安装FastDFS ### ## 2、环境安装 ## ### 1、安装JDK ### 在6台机器上安装JDK * 上传JDK压缩包 * 解压`tar xzvf jdk-8u211-linux-x64.tar.gz` * 配置环境变量`vim /etc/profile`末尾添加如下内容 export JAVA_HOME=/data/jdk1.8.0_211 export PATH=$JAVA_HOME/bin:$PATH * 加载配置文件`source /etc/profile` ### 2、安装docker ### 在2、3、6机器上安装docker * 安装方法:[docker安装官方文档][docker] * #卸载旧版本 $ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine * #安装所需的软件包 $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 * #使用以下命令来设置稳定的存储库 $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo * #安装Docker sudo yum install docker-ce docker-ce-cli containerd.io * #启动Docker sudo systemctl start docker * #开启2375端口 vim /usr/lib/systemd/system/docker.service * #修改为下面的配置 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock * #重新加载docker配置 systemctl daemon-reload #重启docker systemctl restart docker ### 3、安装nginx ### 在第1、2、3、4、5、6机器安装nginx 第一台 nginx隐藏server信息和版本信息 1.隐藏版本信息 在nginx.conf里面添加 server_tokens off; 2.隐藏server信息 需要重新编译ngnix 进入解压出来的nginx 源码目录 vi src/http/ngx_http_header_filter_module.c 将 static u_char ngx_http_server_string[] = "Server: nginx" CRLF; static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF; 改为 static u_char ngx_http_server_string[] = "Server: X-Web" CRLF; static u_char ngx_http_server_full_string[] = "Server: X-Web" CRLF; static u_char ngx_http_server_build_string[] = "Server: X-Web" CRLF; 重新编译nginx 再看header里面Server信息变成了自定义的名字 X-Web * 上传压缩包 * 解压`tar xzvf nginx-1.15.12.tar.gz` * 安装必须使用make、cmake和gcc编译器 yum install -y make cmake gcc gcc-c++ yum -y install openssl openssl-devel yum -y install pcre-devel * 安装 cd nginx-1.15.12 ./configure --with-http_ssl_module make make install ### 4、安装主从数据库 ### 在4机器上安装主数据库,在5机器上安装备份数据库 * 两台机器分别安装mysql 59.226.29.80 、59.226.29.81 根据需要下载相应版本,查看官网地址 https://dev.mysql.com/downloads/mysql/5.7.html\#downloads wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz tar -xzvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local/mysql #useradd -r参数表示mysql用户是系统用户,不可用于登录系统 cd /usr/local groupadd mysql useradd -r -g mysql mysql * 安装数据库 #创建data目录 cd /usr/local/mysql mkdir data * 将/usr/local/mysql的所有者及所属组改为mysql chown -R mysql.mysql /usr/local/mysql * 在/usr/local/mysql/support-files目录下创建my\_default.cnf [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 socket = /tmp/mysql.sock character-set-server=utf8 log-error = /usr/local/mysql/data/mysqld.log pid-file = /usr/local/mysql/data/mysqld.pid * 拷贝,如果提示是否覆盖,y cp /usr/local/mysql/support-files/my_default.cnf /etc/my.cnf * 初始化 mysqld cd /usr/local/mysql/ ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ * 初始化完成之后,查看日志 vi /usr/local/mysql/data/mysqld.log * 临时密码 a8?DQir=T+k+ 2019-04-08T06:14:29.790033Z 1 [Note] A temporary password is generated for root@localhost: a8?DQir=T+k+ * 把启动脚本放到开机初始化目录 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql * 启动mysql服务 service mysql start * 登录mysql,密码为初始密码 cd /usr/local/mysql ./bin/mysql -u root -p * 修改密码 mysql> set password=password('123@cnic'); mysql> grant all privileges on *.* to root@'%' identified by '123@cnic'; mysql> flush privileges; * 添加远程访问权限 mysql> use mysql; mysql> update user set host='%' where user = 'root'; mysql> flush privileges; * 重启mysql生效 service mysql stop service mysql start service mysql restart * 防火墙开放3306端口 mysql主从同步 * 编辑主服务器mysql 配置文件 vim /etc/my.conf server-id=1 #服务器id (主从必须不一样) log-bin=mysql-bin #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径作为主机的配置 binlog-do-db=zgkjy-v2 #要给从机同步的库 #binlog-do-db= binlog-ignore-db=mysql #不给从机同步的库(多个写多行) binlog-ignore-db=information_schema binlog-ignore-db=performance_schema binlog-ignore-db=sys expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改 * 设置成功 重启Mysql 服务 service mysqld restart * 创建备份账号与测试log\_bin是否成功开启 #登录主数据库 show variables like '%log_bin%'; #设置备份账户信息 grant replication slave on *.* to 'backup'@'%' identified by '123456'; #查看快照 show master status\G #关闭主数据库的读取锁定 unlock tables; * 设置从服务器 Mysql 配置 vim /etc/my.conf [mysqld] basedir=/usr/local/mysql #mysql路径 datadir=/data/mysqldata #mysql数据目录 socket=/tmp/mysql.sock user=mysql server_id=2 #MySQLid 后面2个从服务器需设置不同 port=3306 #加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。 read_only = 1 master_info_repository=TABLE relay_log_info_repository=TABLE #relay_log_recovery=1 #从机禁止写 #super_read_only=1 #从机禁止写 * 重启 从数据库 service mysqld restart * 登录slave数据库,并做如下设置 mysql> stop slave; mysql> change master to -> master_host='192.168.1.201', #master的ip -> master_user='backup', #备份用户名 -> master_password='123456', #密码 -> master_log_file='mysql-bin.000003', #上面截图,且要与master的参数一致 -> master_log_pos=431; #上面截图,且要与master的参数一致 ### 5、安装apollo配置中心 ### 在第6台机器上安装apollo配置中心 * [apollo官网][apollo]下载:apollo-configservice、apollo-adminservice、apollo-portal三个文件 * 上传到`/data/apollo`并解压 * 创建ApolloConfigDB, 导入[sql/apolloconfigdb.sql][sql_apolloconfigdb.sql] ,也可导入已有的配置sql * 创建ApolloPortalDB, 导入[sql/apolloportaldb.sql][sql_apolloportaldb.sql],也可导入已有的配置sql * 修改apollo-configservice数据库连接 cd /data/apollo/apollo-configservice/config vim application-github.properties #修改数据库连接并保存 spring.datasource.url = jdbc:mysql://59.226.29.80:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username = root spring.datasource.password = 123@cnic * 修改apollo-adminservice数据库连接 cd /data/apollo/apollo-adminservice/config vim application-github.properties #修改数据库连接并保存 spring.datasource.url = jdbc:mysql://59.226.29.80:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username = root spring.datasource.password = 123@cnic * 修改apollo-portal数据库连接 cd /data/apollo/apollo-portal/config vim application-github.properties #修改数据库连接并保存 spring.datasource.url = jdbc:mysql://59.226.29.80:3306/ApolloConfigDB?characterEncoding=utf8 spring.datasource.username = root spring.datasource.password = 123@cnic * 修改apollo-portal的环境配置 cd /data/apollo/apollo-portal/config vim apollo-env.properties #修改环境并保存 dev.meta=http://59.226.29.82:8080 * 启动 sh /data/apollo/apollo-portal/apollo-configservice/scripts/startup.sh sh /data/apollo/apollo-portal/apollo-adminservice/scripts/startup.sh sh /data/apollo/apollo-portal/scripts/startup.sh * 防火墙开放8080和8070端口 * 浏览器访问59.226.29.82:8070,用户名`apollo`,密码`admin` ### 6、安装FastDFS ### * FastDFS是C语言开发的应用。安装必须使用make、cmake和gcc编译器。 yum install -y make cmake gcc gcc-c++ * 安装FastDFS核心库 上传文件后解压缩 unzip libfastcommon-master.zip -d /data/fastdfs libfastmon没有提供make命令安装文件。使用的是shell脚本执行编译和安装。shell脚本为make.sh #编译 ./make.sh #安装 ./make.sh install 有固定的默认安装位置。在/usr/lib64和/usr/include/fastcommon两个目录中。 创建软连接: #因为 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 * FastDFS主程序安装 上传并解压缩 tar -zxf FastDFS_v5.08.tar.gz -C /data/fastdfs 编译安装 ./make.sh ./make.sh install 安装后,FastDFS主程序所在位置: /usr/bin - 可执行文件所在位置。 /etc/fdfs - 配置文件所在位置。 /usr/lib64 - 主程序代码所在位置 /usr/include/fastdfs - 包含的一些插件组所在位置 * Tracker 服务配置启动 复制一份模板配置文件 cd /etc/fdfs cp tracker.conf.sample tracker.conf 打开 tracker.conf,修改 base\_path 路径,base\_path FastDFSTracker启动后使用的根目录,用来存放Tracker data和logs。 base_path=/home/yuqing/fastdfs -> base_path=/data/fastdfs/data/fastdfs-tracker 配置中的路径需要先创建好才能启动服务 mkdir -p /data/fastdfs/data/fastdfs-tracker 启动 /etc/init.d/fdfs_trackerd start 启动成功后,配置文件中base\_path指向的目录中出现FastDFS服务相关数据目录(data目录、logs目录) 其它命令: #查看状态 ps -ef | grep fdfs #停止服务 /etc/init.d/fdfs_trackerd stop #重启服务 /etc/init.d/fdfs_trackerd restart * Storage配置与启动 修改配置 mkdir -p /data/fastdfs/data/fastdfs-storage/base mkdir -p /data/fastdfs/data/fastdfs-storage/store cd /etc/fdfs cp storage.conf.sample storage.conf #修改文件 base_path=/home/yuqing/fastdfs -> /data/fastdfs/data/fastdfs-storage/base store_path0=/home/yuqing/fastdfs -> /data/fastdfs/data/fastdfs-storage/store tracker_server=192.168.150.11:22122 -> tracker_server=59.226.29.82:22122 启动服务 /etc/init.d/fdfs_storaged start * fastdfs-nginx-module模块安装 上传并解压 tar -zxf fastdfs-nginx-module_v1.16.tar.gz -C /data/fastdfs 修改配置 vim /data/fastdfs/fastdfs-nginx-module/src/config CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" 编译安装Nginx ./configure --with-http_ssl_module --add-module=/data/fastdfs/fastdfs-nginx-module/src/ make && make install 拷贝配置文件 cp /data/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ 修改配置文件 mod\_fastdfs.conf tracker_server=59.226.29.82:22122 url_have_group_name = true store_path0=/data/fastdfs/data/fastdfs-storage/store 复制FastDFS安装包中的两个配置文件(http.conf和mime.types)到/etc/fdfs目录中 cp /data/fastdfs/FastDFS/conf/http.conf /etc/fdfs/ cp /data/fastdfs/FastDFS/conf/mime.types /etc/fdfs/ 创建网络访问存储服务的软连接 ln -s /data/fastdfs/data/fastdfs-storage/store /data/fastdfs/data/fastdfs-storage/store/data/M00 修改nginx配置文件 location ~ /group([0-9])/M00 { ngx_fastdfs_module; } * 防火墙开放端口:22122 ### 7、安装zookeeper、kafka ### * 下载镜像 docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka:2.11-0.11.0.3 * 启动镜像 #启动zookeeper docker run -d --name zookeeper --publish 2181:2181 --volume /etc/localtime:/etc/localtime wurstmeister/zookeeper #启动kafka docker run -d --name kafka --publish 9092:9092 \ --link zookeeper \ --env KAFKA_ZOOKEEPER_CONNECT=59.226.29.82:2181 \ --env KAFKA_ADVERTISED_HOST_NAME=59.226.29.82 \ --env KAFKA_ADVERTISED_PORT=9092 \ --volume /etc/localtime:/etc/localtime \ wurstmeister/kafka:2.11-0.11.0.3 * 防火墙开放端口:2181,9092 ### 8、安装elasticSearch ### docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:6.5.4 防火墙开放端口:9200,9300 ### 9、发布微服务 ### * 两台机器59.226.29.78 、59.226.29.79部署常用配置命令 FROM java:8 EXPOSE 8761 VOLUME /tmp ADD /target/renren-register.jar /app.jar RUN bash -c 'touch /app.jar' RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone ENTRYPOINT ["java","-Xmx500m","-jar","/app.jar"] * 两台机器分别配置自己ip、除register其他服务都要配置 --add-host eureka:59.226.29.39 --add-host eureka:59.226.29.78 --add-host eureka:59.226.29.79 * 所有服务都需要配置一下 -v /opt/settings:/opt/settings * pay付款服务需要多加配置 -v /opt/cfca:/opt/cfca * gateway网关多加配置 -p 8080:8080 ### 10、开放端口 ### firewall-cmd --zone=public --list-ports firewall-cmd --zone=public --add-port=443/tcp --permanent firewall-cmd --reload ### 11、安装redis ### docker run -d --name redis -p 6379:6379 -v redis:/data --requirepass "123@cnic" redis --appendonly yes [docker]: https://docs.docker.com/install/linux/docker-ce/centos/ [apollo]: https://github.com/ctripcorp/apollo/releases [sql_apolloconfigdb.sql]: https://github.com/nobodyiam/apollo-build-scripts/blob/master/sql/apolloconfigdb.sql [sql_apolloportaldb.sql]: https://github.com/nobodyiam/apollo-build-scripts/blob/master/sql/apolloportaldb.sql
还没有评论,来说两句吧...