当前位置: 首页 > news >正文

专业柳州网站建设推荐巴中做网站的公司

专业柳州网站建设推荐,巴中做网站的公司,贵阳网站开发报价,铜陵网站建设哪家好目录 前言windows 部署若依-微服务版本浏览器验证docker部署若依-微服务版本浏览器验证k8s部署若依-微服务版本浏览器验证总结 前言 环境#xff1a;centos7、Win10 若依是一个合适新手部署练习的开源的微服务项目#xff0c;本篇讲解Windows部署若依微服务、docker部署若依… 目录 前言windows 部署若依-微服务版本浏览器验证docker部署若依-微服务版本浏览器验证k8s部署若依-微服务版本浏览器验证总结 前言 环境centos7、Win10 若依是一个合适新手部署练习的开源的微服务项目本篇讲解Windows部署若依微服务、docker部署若依微服务、k8s部署若依微服务等3种方式。 若依是一个基于SpringBoot2.0的权限管理系统同时使用到了mysql、redis、nacos等技术这里更好理解一下java程序是如何使用nacos的。 windows 部署若依-微服务版本 下载若依的源代码https://gitee.com/y_project/RuoYi-Cloud克隆/下载下载ZIP即可。下载后解压到D:\ruoyi-cloud文件夹即可。 按照官网我们部署若依微服务版本https://doc.ruoyi.vip/ruoyi-cloud/ #官网写的部署环境要求,所以选择的版本要满足要求 JDK 1.8 (推荐1.8版本) Mysql 5.7.0 (推荐5.7版本) Redis 3.0 Maven 3.0 Node 12 nacos 2.0.4 (ruoyi-cloud 3.0 需要下载nacos 1.4.x版本) sentinel 1.6.0#windows安装jdk1.8 下载地址https://javadl.oracle.com/webapps/download/GetFile/1.8.0_301-b09/d3c52aa6bfa54d3ca74e617f18309292/windows-i586/jdk-8u301-windows-x64.exe 1. 打开环境变量配置。计算机→属性→高级系统设置→高级→环境变量在系统变量中配置。 2. 配置JAVA_HOME。新建变量名JAVA_HOME变量值jdk路径我的路径是C:\Program Files\Java\jdk1.8.0_301 最后的路径不要写斜杠保存。 3. 配置CLASSPATH。新建变量名CLASSPATH变量值等于.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar第一个分号前面有一个点。 4. 配置Path。选中Path变量点编辑按钮在变量值最前加入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 5. 运行cmd输入java -version显示java版本则成功。#windows安装 apache-maven-3.8.8 下载Windows的zip包https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.zip 解压即可。 配置环境变量变量名和值对应如下 M2_HOME D:\apache-maven-3.8.8\bin MAVEN_HOME D:\apache-maven-3.8.8 PATH 前面追加 %MAVEN_HOME%\bin; #cmd验证是否正常 mvn -version#Windows安装安装node和npm命令 #npm命令用于生成前端制品即给前端生成dist目录 https://nodejs.org/dist/v14.4.0/node-v14.4.0-win-x64.zip 解压到 D:/node-v14.4.0-win-x64 #配置环境变量 NODE_HOME D:\node-v14.4.0-win-x64 PATH 前面追加 %NODE_HOME%; #cmd验证是否正常 npm -v node -v#这里为了方便使用Linux部署mysql当然使用Windows安装也是可以的Windows安装也很简单。 #linux部署mysql5.7 mkdir mysql cd mysql/ wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar tar xf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar rpm -qa | grep mariadb rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 ls /etc/my* rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm rpm -ivh mysql-community-devel-5.7.38-1.el7.x86_64.rpm rpm -ivh mysql-community-embedded-5.7.38-1.el7.x86_64.rpm rpm -ivh mysql-community-embedded-compat-5.7.38-1.el7.x86_64.rpm rpm -ivh mysql-community-embedded-devel-5.7.38-1.el7.x86_64.rpm which mysqld id mysql #开始初始化mysql mysqld --initialize --usermysql systemctl start mysqld systemctl status mysqld systemctl enable mysqld grep password /var/log/mysqld.log which mysql mysql -uroot -p#%b9oE67kaj4 ALTER USER rootlocalhost IDENTIFIED BY Aa123456; #修改mysql root账号密码记住这个密码 use mysql; update user set host% where userroot; FLUSH PRIVILEGES; exit; systemctl restart mysqld#mysql导入数据初始化库和表 先执行源码包里的RuoYi-Cloud-master\sql目录下的ry_config_20220929.sql文件该文件里面有创建ry_config库和表的语句 windows使用Navicat Premium链接mysql数据库选择运行SQL文件导入即可。 由于ry_20230706.sql文件没有创建库的语句根据官网得知是要创建一个名称叫做ry-cloud的库所以参照ry_config_20220929.sql文件里面的建 库语句复制粘贴并添加到ry_20230706.sql文件开头即可注意修改库名为ry-cloud DROP DATABASE IF EXISTS ry-cloud; CREATE DATABASE ry-cloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; USE ry-cloud;最后执行ry_20230706.sql文件即可。 这样两个必要的ry-cloud库和ry_config库都准备好了。 ry-cloud库是若依系统使用的库ry_config库是nacos的库。 quartz.sql也可以导入ry-cloud库可选。#这里为了方便使用Linux部署redis当然使用Windows安装也是可以的Windows安装也很简单。 #Linux安装redis3.2 yum install redis -y vim /etc/redis.conf bind 192.168.244.150 #设置监听IP为本机IP systemctl enable --now redis redis服务器启动成功之后在Windows使用Redis Desktop Manager 链接成功即可。这里默认redis没有配置密码。#这里为了方便使用Linux部署nacos当然使用Windows安装也是可以的Windows安装也很简单。 #Linux部署nacos nacos需要jdk环境,所以linux服务器也要安装jdk。 #linux安装jdk1.8 #去https://www.oracle.com/java/technologies/downloads/下载对应版本的tar.gz包 tar -zxvf jdk1.8.tar.gz -C /usr/local/ cd /usr/local/ mv jdk1.8.0_211 java cat /etc/profile EOF export JAVA_HOME/usr/local/java export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH$PATH:$JAVA_HOME/bin EOF source /etc/profile java -version#安装nacos-2.2.1 #官网显示nacos 2.0.4所以选择安装nacos-2.2.1 #nacos-2.2.2版本及之后的版本对登录验证有改变需要自己配置所以这里安装nacos-2.2.1版本 mkdir nacos-server wget -c https://github.com/alibaba/nacos/releases/download/2.2.1/nacos-server-2.2.1.tar.gz tar xvf nacos-server-2.2.1.tar.gz cd nacos vim conf/application.properties #添加下面的链接mysql的语句注意修改mysql的IP和root密码 # db mysql spring.datasource.platformmysql db.num1 db.url.0jdbc:mysql://192.168.244.150:3306/ry-config?characterEncodingutf8connectTimeout1000socketTimeout3000autoReconnecttrueuseUnicodetrueuseSSLfalseserverTimezoneUTC db.userroot db.passwordAa123456#发现启动报错显示登录鉴权相关的报错官网说2.2.2之后才需要自己配置登录信息不知道2.2.1为什么也要配置所以就配置 #修改下面这个几个参数的值 nacos.core.auth.enabledtrue nacos.core.auth.server.identity.keynacos nacos.core.auth.server.identity.valuenacos nacos.core.auth.plugin.nacos.token.secret.keyVkdocGMwbHpUWGxEZFhOMGIyMVRaV055WlhSTFpYa3dNVElocGMwbHpUWGxEZFhOMGIyMVRaV055WlhSTFpYa3dhZmR6TkRVMk56Zz0K#单机模式启动nacos cd bin/ ./startup.sh -m standalone tail -222f /root/nacos-server/nacos/logs/start.out #windows登录nacos http://192.168.244.150:8848/nacos/#/login 账号密码nacos/nacos 登录之后一定要编辑修改每一个yml文件里面的全部的redis和mysql的相关配置比如redis的IP端口密码这里我没有配置redis的密码 mysql的IP端口root账号密码等信息修改之后点击发布即可。#后端项目打包即后端项目打jar包 将若依项目导入到Eclipse打开Eclipse菜单 File - Import然后选择 Maven - Existing Maven Projects点击 Next 按钮选择工作目录然后点击 Finish 按钮即可成功导入。 Eclipse会自动加载Maven依赖包初次加载会比较慢根据自身网络情况而定 注意修改全部的bootstrap.yml文件的redis地址nacos地址等信息bootstrap.yml文件基本在下面这样的路径 ./ruoyi-auth/src/main/resources/bootstrap.yml ./ruoyi-gateway/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml ./ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml 同时bootstrap.yml文件还要添加nacos的账号密码,如下 .........profiles:# 环境配置active: dev #这里保持默认是dev环境cloud:nacos:discovery:# 服务注册地址server-addr: 192.168.244.150:8848username: nacos #添加nacos的登录账号密码password: nacos #添加nacos的登录账号密码 config:# 配置中心地址server-addr: 192.168.244.150:8848username: nacos #添加nacos的登录账号密码password: nacos #添加nacos的登录账号密码 #这里nacos没有配置命名空间默认是public命名空间 #修改完bootstrap.yml文件后注意保存在ruoyi项目的bin目录下执行package.bat打包Web工程默认是生成jar包可执行文件。 打包完成之后会在对应的子项目下target目录下生成jar包。 clean.bat可以清除jar包就是清除target目录下的文件。 jar包全都打包成功之后可以启动jar包了点击运行run-auth.bat文件运行启动auth即可启动没报错显示启动正常即可 由官网得知只需启动下面这3个必须启动的模块即可 启动没有先后顺序 RuoYiGatewayApplication 网关模块 必须 RuoYiAuthApplication 认证模块 必须 RuoYiSystemApplication 系统模块 必须 RuoYiMonitorApplication 监控中心 可选 RuoYiGenApplication 代码生成 可选 RuoYiJobApplication 定时任务 可选 RuoYFileApplication 文件服务 可选#最后auth、Gateway、System均启动正常。#前端项目打包即前端项目打制品包默认是dist目录 #先修改前端配置文件 展开Eclipse里的若依项目下的rouyi-ui工程打开vue.config.js文件修改网关IP地址proxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {target: http://localhost:8080, #这个配置为gateway网关的IP和端口changeOrigin: true,pathRewrite: {[^ process.env.VUE_APP_BASE_API]: }}#开始打包前端生成制品 # cmd窗口进入若依项目目录然后切换到ruoyi-ui目录 cd ruoyi-ui # 安装依赖 #npm install #执行下面这条吧 # 强烈建议不要用直接使用 cnpm 安装会有各种诡异的 bug可以通过重新指定 registry 来解决 npm 安装速度慢的问题。 npm install --registryhttps://registry.npmmirror.com# 本地开发 启动项目 npm run dev #此命令是本地开发环境下直接启动前端执行后会在cmd查看打印登录url复制粘贴到浏览器打开若依登录页面即可账号密码默认自动回显了 #ruoyi-ui下的README.md文件说明了如何启动构建前端制品。浏览器验证 cmd窗口执行启动npm run dev 登录若依 成功添加了用户 docker部署若依-微服务版本 上面windows演示的是dev开发环境这次我们使用docker部署prod生产环境。 #官网写的部署环境要求,所以选择的版本要满足要求 JDK 1.8 (推荐1.8版本) Mysql 5.7.0 (推荐5.7版本) Redis 3.0 Maven 3.0 Node 12 nacos 2.0.4 (ruoyi-cloud 3.0 需要下载nacos 1.4.x版本) sentinel 1.6.0#准备一台centos7服务器 #安装好docker,可参考https://blog.csdn.net/MssGuo/article/details/122694156同时要安装docker-compose mkdir RuoYi-Cloud cd RuoYi-Cloud 下载若依的源代码https://gitee.com/y_project/RuoYi-Cloud克隆/下载下载ZIP即可。下载后上传到RuoYi-Cloud目录即可。#安装jdk1.8 #去https://www.oracle.com/java/technologies/downloads/下载对应版本的tar.gz包 tar -zxvf jdk1.8.tar.gz -C /usr/local/ cd /usr/local/ mv jdk1.8.0_211 java cat /etc/profile EOF export JAVA_HOME/usr/local/java export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH$PATH:$JAVA_HOME/bin EOF source /etc/profile java -version#安装mavenmaven用于给java程序打jar包 wget https://dlcdn.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz tar xf apache-maven-3.9.5-bin.tar.gz mv apache-maven-3.9.5 /opt/maven cat /etc/profile EOF export M2_HOME/opt/maven export MAVEN_HOME/opt/maven export PATH${M2_HOME}/bin:${PATH} EOF source /etc/profile mvn -v#安装npm,npm用于生成前端制品即给前端生成dist目录 wget https://nodejs.org/dist/v14.4.0/node-v14.4.0-linux-x64.tar.xz tar -xvf node-v14.4.0-linux-x64.tar.xz mv node-v14.4.0-linux-x64 /usr/local/node cat /etc/profileEOF export NODE_HOME/usr/local/node export PATH$NODE_HOME/bin:$PATH EOF source /etc/profile npm -v node -v#解压源码包 unzip RuoYi-Cloud-master.zip cd RuoYi-Cloud-master/ [rootrancher RuoYi-Cloud-master]# ll docker/ #可以看到源码包里面已经有docker相关的脚本了 total 12 -rw-r--r--. 1 root root 1155 Oct 2 12:46 copy.sh #复制项目的jar文件到对应docker路径便于一键生成镜像 -rw-r--r--. 1 root root 1335 Oct 2 12:46 deploy.sh #部署脚本 -rw-r--r--. 1 root root 3416 Oct 2 12:46 docker-compose.yml #docker-compose文件可以看到每个容器暴露的宿主机端口 drwxr-xr-x. 3 root root 34 Oct 2 12:46 mysql #构建mysql镜像 drwxr-xr-x. 3 root root 36 Oct 2 12:46 nacos #构建nacos镜像 drwxr-xr-x. 4 root root 48 Oct 2 12:46 nginx #构建nginx镜像 drwxr-xr-x. 3 root root 36 Oct 2 12:46 redis #构建redis镜像 drwxr-xr-x. 6 root root 62 Oct 2 12:46 ruoyi #各个若依项目的Dockerfile构建镜像 [rootrancher RuoYi-Cloud-master]# #先修改后端各个子项目的bootstrap.yml配置文件 [rootrancher RuoYi-Cloud-master]# find ./ -name bootstrap.yml ./ruoyi-auth/src/main/resources/bootstrap.yml ./ruoyi-gateway/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml ./ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml [rootrancher RuoYi-Cloud-master]# #修改bootstrap.yml文件中的环境配置为prodnacos IP端口添加nacos账号密码命名空间等配置示例如下 vim ./ruoyi-auth/src/main/resources/bootstrap.yml ..............profiles:# 环境配置active: prod #修改为prod原来默认是devcloud:nacos:discovery:# 服务注册地址server-addr: 192.168.244.150:8848 #nacos的IP地址因为等下nacos使用容器启动暴露的就是宿主机8848端口username: nacos #添加nacos的账号密码password: nacos #添加nacos的账号密码config:# 配置中心地址server-addr: 192.168.244.150:8848 #nacos的IP地址因为等下nacos使用容器启动暴露的就是宿主机8848端口username: nacos #添加nacos的账号密码password: nacos #添加nacos的账号密码namespace: prod #指定nacos的命名空间是prod# 配置文件格式file-extension: yml# 共享配置shared-configs:- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}#再修改前端vue.config.js配置文件 vim ruoyi-ui/vue.config.js ....... devServer: {host: 0.0.0.0,port: port,open: true,proxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {target: http://192.168.244.150:8080, #修改为gateway的IP和端口等下docker启动的网关容器就是暴露8080端口changeOrigin: true,pathRewrite: {[^ process.env.VUE_APP_BASE_API]: }}},disableHostCheck: true},.......#后端项目打包即后端项目打jar包 [rootrancher RuoYi-Cloud-master]# ls bin docker LICENSE pom.xml README.md ruoyi-api ruoyi-auth ruoyi-common ruoyi-gateway ruoyi-modules ruoyi-ui ruoyi-visual sql [rootrancher RuoYi-Cloud-master]# mvn clean package -Dmaven.test.skiptrue #在项目的根路径执行打包 #以上打包命令执行完成会在每个子项目里面生成target命令该target命令就存放有jar包#前端项目打包 cd ruoyi-ui/ #进入前端项目目录 npm install --registryhttps://registry.npmmirror.com # 打包正式环境 npm run build:prod #执行这个因为我们就是要模拟prod环境 构建打包成功之后会在根目录生成 dist 文件夹里面就是构建打包好的文件通常是 ***.js 、***.css、index.html 等静态文件。#下面两个了解即可 npm run dev # 本地开发 启动项目 npm run build:stage # 打包预发布环境 #到底都有哪些环境在前端目录下的package.json文件中定义了好几种配置环境如下 vim ruoyi-ui/package.jsonscripts: {dev: vue-cli-service serve,build:prod: vue-cli-service build,build:stage: vue-cli-service build --mode staging,preview: node build/index.js --preview,lint: eslint --ext .js,.vue src}#拷贝文件 #先修改mysql的建库建表语句不然mysql容器没有创建若依的数据库 [rootrancher ]# cd RuoYi-Cloud-master [rootrancher RuoYi-Cloud-master]# ls sql/ quartz.sql ry_20230706.sql ry_config_20220929.sql ry_seata_20210128.sql #ry_20230706.sql是若依系统表ry_config_20220929.sql是nacos的库和表 #因为ry_20230706.sql文件里没有写创建库的语句所以这里手动添加创建ry-cloud库的语句库名是官网规定的。 #如下在ry_20230706.sql文件开头添加即可 DROP DATABASE IF EXISTS ry-cloud; CREATE DATABASE ry-cloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; USE ry-cloud;#nacos配置的数据库源在application.properties文件 #检查确认即可一般不用修改 [rootrancher docker]# ls nacos/conf/application.properties [rootrancher ]# cd docker/ #进入docker目录 [rootrancher docker]# sh copy.sh #执行脚本脚本作用是拷贝前端、后端SQL文件到当前docker目录对应的目录下#启动、创建mysql、nacos、redis容器 cd RuoYi-Cloud-master/docker cat deploy.sh #查看脚本内容 [rootrancher docker]# sh deploy.sh -h Usage: sh 执行脚本.sh [port|base|modules|stop|rm] [rootrancher docker]# sh deploy.sh base #构建mysql、redis、nacos镜像并启动容器 [rootrancher docker]# docker ps -a #查看启动的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e2a889d611e2 nacos/nacos-server bin/docker-startup.… About a minute ago Up About a minute 0.0.0.0:8848-8848/tcp, :::8848-8848/tcp, 0.0.0.0:9848-9849-9848-9849/tcp, :::9848-9849-9848-9849/tcp ruoyi-nacos 7bb841dc0b2e mysql:5.7 docker-entrypoint.s… About a minute ago Up About a minute 0.0.0.0:3306-3306/tcp, :::3306-3306/tcp, 33060/tcp ruoyi-mysql 220a10a7cae2 redis docker-entrypoint.s… About a minute ago Up About a minute 0.0.0.0:6379-6379/tcp, :::6379-6379/tcp ruoyi-redis #检查redis容器的日志输出正常在windows使用Redis Desktop Manager 正常链接redis #检查mysql容器的日志显示异常 2023-10-09T15:26:31.877145Z 2 [Note] Unknown database ry-config 2023-10-09T15:26:34.922364Z 3 [Note] Unknown database ry-config 2023-10-09T15:26:34.923423Z 4 [Note] Unknown database ry-config 2023-10-09T15:26:36.925682Z 5 [Note] Unknown database ry-config #登录mysql 容器检查 [rootrancher docker]# docker exec -it ruoyi-mysql bash root43f59febb6b2:/# mysql -ppassword #默认的root密码在docker-compose.yml中写有 mysql show databases; #发现没有创建ry-config库 -------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema | | ry-cloud | | sys | -------------------- mysql use ry-cloud; mysql show tables; #ry-cloud也没有创建表 Empty set (0.00 sec) mysql exit root43f59febb6b2:/# ls /docker-entrypoint-initdb.d/ #发现这里面没有我们的建库建表文件 root43f59febb6b2:/# exit [rootrancher mysql]# pwd /root/RuoYi-Cloud/RuoYi-Cloud-master/docker/mysql [rootrancher mysql]# ls conf data db dockerfile logs [rootrancher mysql]# cat dockerfile #查看dockerfile文件是怎么构建mysql镜像的 # 基础镜像 FROM mysql:5.7 # author MAINTAINER ruoyi # 执行sql脚本 ADD ./db/*.sql /docker-entrypoint-initdb.d/ [rootrancher mysql]# #这说明构建后的镜像里面根本没有建库建表的文件而ry-cloud库是docker-compose.yml文件指定的创建库名而已 #所以说根本没有执行建库建表初始化操作 #手动执行初始化 docker cp mysql/db/ry_20230706.sql ruoyi-mysql:/docker-entrypoint-initdb.d/ docker cp mysql/db/ry_config_20220929.sql ruoyi-mysql:/docker-entrypoint-initdb.d/ docker exec -it ruoyi-mysql bash mysql -ppassword mysql source /docker-entrypoint-initdb.d/ry_20230706.sql; mysql source /docker-entrypoint-initdb.d/ry_config_20220929.sql; mysql use mysql; #授权让mysql可以在windows链接 mysql update user set host% where userroot; mysql FLUSH PRIVILEGES; mysql exit; docker restart ruoyi-mysql docker logs -f ruoyi-mysql #windows使用Navicat Premium链接mysql数据库正常。#重启nacos因为mysql仓库刚刚创建好所需要重启nacos容器 #nacos容器正常浏览器登录nacos http://192.168.244.150:8848/nacos/index.html 登录账号密码nacos/nacos #由于前面我们java项目的bootstrap.yml配置文件定义的nacos命名空间是prod所以在nacos上需要创建一个名称叫做prod的命名空间 权限控制--命名空间--新建命名空间 -- 命名空间名称填写prod --描述写生产环境即可--确定 #克隆public命名空间的yml文件到prod 命名空间 配置管理-- 配置列表 -- 选择public命名空间 --勾选全部的yml文件 --底部点击克隆按钮 --目标空间选择prod --把每一个文件名中的dev改成prod如ruoyi-gateway-prod.yml-- 点击克隆按钮完成克隆即可前面后端项目中的bootstrap.yml配置文件中的环境配置是prod所以nacos中要存在应用名称-环境配置.配置文件格式拼接起来的文件如ruoyi-gateway-prod.yml所以上面克隆的时候我们修改了文件的名称。 最后修改prod命名空间下的每个yml文件中的redismysql相关的配置最后发布即可。#启动、创建前端和后端容器 #从该文件可以看到前端使用nginx配置nginx配置文件中配置了代理的网关IP地址默认不用修改该文件 [rootrancher docker]# cat nginx/conf/nginx.conf [rootrancher docker]# grep -B 2 deploy.sh #查看启动服务 modules(){docker-compose up -d ruoyi-nginx ruoyi-gateway ruoyi-auth ruoyi-modules-system }[rootrancher docker]# sh deploy.sh modules #部署前端后端容器 [rootrancher docker]# docker logs -f ruoyi-modules-system #日志正常 [rootrancher docker]# docker logs -f ruoyi-gateway #日志正常 [rootrancher docker]# docker logs -f ruoyi-auth #日志正常 [rootrancher docker]# docker logs -f ruoyi-nginx #日志正常 [rootrancher docker]# docker port ruoyi-nginx #前端暴露的80端口 80/tcp - 0.0.0.0:80 80/tcp - :::80浏览器验证 浏览器验证宿主机IP:80 添加用户正常 k8s部署若依-微服务版本 1、首先需要一个k8s集群默认你已经安装好了k8s集群并且有动态存储供给。 2、下载若依的源码包并上传到服务器master节点上也可以放到一台单独的服务。 #创建mysql pod cat mysql.yamlEOF apiVersion: apps/v1 kind: StatefulSet metadata:labels:app: mysqlname: mysqlnamespace: default spec:replicas: 1selector:matchLabels:app: mysqlserviceName: mysql-svctemplate:metadata:annotations:labels:app: mysqlspec:containers:- env:- name: MYSQL_ROOT_PASSWORDvalue: Aa123456image: mysql:5.7.35imagePullPolicy: IfNotPresentname: mysqlports:- containerPort: 3306name: tcp-3306protocol: TCP- containerPort: 33060name: tcp-33060protocol: TCPsecurityContext:privileged: truevolumeMounts:- mountPath: /etc/localtimename: host-time- mountPath: /var/lib/mysqlname: mysqlrestartPolicy: Alwaysvolumes:- hostPath:path: /etc/localtimetype: name: host-timeupdateStrategy:rollingUpdate:partition: 0type: RollingUpdatevolumeClaimTemplates:- apiVersion: v1kind: PersistentVolumeClaimmetadata:name: mysqlspec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: nfs-storageclassvolumeMode: Filesystem --- apiVersion: v1 kind: Service metadata:labels:app: mysql-svcname: mysql-svcnamespace: default spec:clusterIP: Noneports:- name: tcp-3306port: 3306protocol: TCPtargetPort: 3306- name: tcp-33060port: 33060protocol: TCPtargetPort: 33060selector:app: mysqlsessionAffinity: Nonetype: ClusterIP EOF kubectl apply -f mysql.yml #mysql导入数据 [rootmaster01 ~]# cd RuoYi-Cloud-master/sql/ [rootmaster01 sql]# ls quartz.sql ry_20230706.sql ry_config_20220929.sql ry_seata_20210128.sql #ry_20230706.sql是若依系统表ry_config_20220929.sql是nacos的库和表 #因为ry_20230706.sql文件里没有写创建库的语句所以这里手动添加创建ry-cloud库的语句库名是官网规定的。 #如下在ry_20230706.sql文件开头添加即可 DROP DATABASE IF EXISTS ry-cloud; CREATE DATABASE ry-cloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0; USE ry-cloud;[rootmaster01 sql]# kubectl cp ry_20230706.sql mysql-0:/ [rootmaster01 sql]# kubectl cp ry_config_20220929.sql mysql-0:/ [rootmaster01 sql]# kubectl exec -it mysql-0 -- bash rootmysql-0:/# mysql -uroot -pAa123456 mysql source /ry_20230706.sql; mysql source /ry_config_20220929.sql; mysql exit;#创建redis cat redis.yaml EOF apiVersion: apps/v1 kind: StatefulSet metadata:labels:app: redisname: redisnamespace: default spec:replicas: 1selector:matchLabels:app: redisserviceName: redis-svctemplate:metadata:labels:app: redisspec:containers:- args:- /etc/redis/redis.confcommand:- redis-serverimage: redis:7.0.7imagePullPolicy: IfNotPresentname: redisports:- containerPort: 6379name: tcp-6379protocol: TCPvolumeMounts:- mountPath: /etc/localtimename: host-time- mountPath: /dataname: reids-pvc- mountPath: /etc/redisname: redis-confreadOnly: truerestartPolicy: Alwaysvolumes:- hostPath:path: /etc/localtimetype: name: host-time- configMap:defaultMode: 420name: redis-configname: redis-confvolumeClaimTemplates:- apiVersion: v1kind: PersistentVolumeClaimmetadata:name: reids-pvcspec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: nfs-storageclassvolumeMode: Filesystem --- apiVersion: v1 kind: Service metadata:labels:app: redis-svcname: redis-svcnamespace: default spec:clusterIP: Noneports:- name: tcp-6379port: 6379protocol: TCPtargetPort: 6379selector:app: redissessionAffinity: Nonetype: ClusterIP --- apiVersion: v1 data:redis.conf: |-appendonly yesport 6379bind 0.0.0.0requirepass Aa123456 #redis 设置了密码 kind: ConfigMap metadata:name: redis-confignamespace: default EOF kubectl apply -f redis.yml#部署nacos cat nacos.yml EOF --- apiVersion: v1 kind: Service metadata:name: nacos-svcnamespace: defaultlabels:app: nacos spec:ports:- port: 8848name: servertargetPort: 8848nodePort: 30848type: NodePortselector:app: nacos --- apiVersion: v1 kind: Service metadata:name: nacos-headlessnamespace: defaultlabels:app: nacos spec:publishNotReadyAddresses: true ports:- port: 8848name: servertargetPort: 8848clusterIP: Noneselector:app: nacos --- apiVersion: v1 kind: ConfigMap metadata:name: nacos-cmnamespace: default data:mysql.host: mysql-svc.defaultmysql.db.name: ry-config #nacos要连接ry-config数据库mysql.port: 3306mysql.user: rootmysql.password: Aa123456 --- apiVersion: apps/v1 kind: StatefulSet metadata:name: nacosnamespace: default spec:serviceName: nacos-headlessreplicas: 1 template:metadata:labels:app: nacosannotations:pod.alpha.kubernetes.io/initialized: truespec:affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- key: appoperator: Invalues:- nacostopologyKey: kubernetes.io/hostnamecontainers:- name: nacosimagePullPolicy: Alwaysimage: nacos/nacos-server:latestresources:requests:memory: 1Gicpu: 800mports:- containerPort: 8848name: client-portenv: - name: NACOS_AUTH_TOKEN value: Ym1GamIzTWdhWE1nZG1WeWVTQm5iMjlrSUhOdlpuUjNZWEpsQ2c9PQo- name: NACOS_AUTH_IDENTITY_KEYvalue: nacos- name: NACOS_AUTH_IDENTITY_VALUEvalue: nacos - name: MODE value: standalone - name: NACOS_REPLICASvalue: 1- name: SERVICE_NAMEvalue: nacos-headless- name: DOMAIN_NAMEvalue: cluster.local- name: POD_NAMESPACEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.namespace- name: MYSQL_SERVICE_HOSTvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.host- name: MYSQL_SERVICE_DB_NAMEvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.db.name- name: MYSQL_SERVICE_PORTvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.port- name: MYSQL_SERVICE_USERvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.user- name: MYSQL_SERVICE_PASSWORDvalueFrom:configMapKeyRef:name: nacos-cmkey: mysql.password- name: SPRING_DATASOURCE_PLATFORMvalue: mysql- name: NACOS_SERVER_PORTvalue: 8848- name: NACOS_APPLICATION_PORTvalue: 8848volumeMounts:- name: datamountPath: /home/nacos/datasubPath: data- name: datamountPath: /home/nacos/logssubPath: logsvolumeClaimTemplates:- metadata:name: dataannotations:volume.beta.kubernetes.io/storage-class: nfs-storageclassspec:accessModes: [ ReadWriteMany ]resources:requests:storage: 1Giselector: matchLabels:app: nacos EOF kubectl apply -f nacos.yml #浏览器登录nacos: http://192.168.244.151:30848/nacos 账号密码nacos/nacos#在若依源码包服务器上配置服务器环境这里是master01节点 #安装jdk1.8 #去https://www.oracle.com/java/technologies/downloads/下载对应版本的tar.gz包 tar -zxvf jdk1.8.tar.gz -C /usr/local/ cd /usr/local/ mv jdk1.8.0_211 java cat /etc/profile EOF export JAVA_HOME/usr/local/java export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH$PATH:$JAVA_HOME/bin EOF source /etc/profile java -version#安装mavenmaven用于给java程序打jar包 wget https://dlcdn.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz tar xf apache-maven-3.9.5-bin.tar.gz mv apache-maven-3.9.5 /opt/maven cat /etc/profile EOF export M2_HOME/opt/maven export MAVEN_HOME/opt/maven export PATH${M2_HOME}/bin:${PATH} EOF source /etc/profile mvn -v#安装npm,npm用于生成前端制品即给前端生成dist目录 wget https://nodejs.org/dist/v14.4.0/node-v14.4.0-linux-x64.tar.xz tar -xvf node-v14.4.0-linux-x64.tar.xz mv node-v14.4.0-linux-x64 /usr/local/node cat /etc/profileEOF export NODE_HOME/usr/local/node export PATH$NODE_HOME/bin:$PATH EOF source /etc/profile npm -v node -v#先修改后端各个子项目的bootstrap.yml配置文件 [rootrancher RuoYi-Cloud-master]# find ./ -name bootstrap.yml ./ruoyi-auth/src/main/resources/bootstrap.yml ./ruoyi-gateway/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml ./ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml ./ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml [rootrancher RuoYi-Cloud-master]# #修改bootstrap.yml文件中的环境配置为prodnacos IP端口添加nacos账号密码命名空间等配置示例如下 vim ./ruoyi-auth/src/main/resources/bootstrap.yml ..............profiles:# 环境配置active: prod #修改为prod原来默认是devcloud:nacos:discovery:# 服务注册地址server-addr: nacos-headless.default:8848 #nacos的svc地址username: nacos #添加nacos的账号密码password: nacos #添加nacos的账号密码config:# 配置中心地址server-addr: nacos-headless.default:8848 #nacos的svc地址username: nacos #添加nacos的账号密码password: nacos #添加nacos的账号密码namespace: prod #指定nacos的命名空间是prod# 配置文件格式file-extension: yml# 共享配置shared-configs:- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}#再修改前端vue.config.js配置文件 vim ruoyi-ui/vue.config.js .......proxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {target: http://gateway-svc.default:8080, #修改为gateway的svc地址和端口后面会创建gateway-svc这个servicechangeOrigin: true, .......#后端项目打包即后端项目打jar包 [rootrancher RuoYi-Cloud-master]# mvn clean package -Dmaven.test.skiptrue #在项目的根路径执行打包 #以上打包命令执行完成会在每个子项目里面生成target命令该target命令就存放有jar包#前端项目打包 cd ruoyi-ui/ #进入ruoyi-ui前端项目目录 npm install --registryhttps://registry.npmmirror.com # 打包正式环境 npm run build:prod #执行这个因为我们就是要上限prod环境bootstrap.yml配置的环境也是prod 构建打包成功之后会在根目录生成 dist 文件夹里面就是构建打包好的前端文件通常是 ***.js 、***.css、index.html 等静态文件。#浏览器登录nacos,创建prod命名空间 浏览器登录nacos: http://192.168.244.151:30848/nacos 账号密码nacos/nacos #由于前面我们java项目的bootstrap.yml配置文件定义的nacos命名空间是prod所以在nacos上需要创建一个名称叫做prod的命名空间 权限控制--命名空间--新建命名空间 -- 命名空间名称填写prod --描述写生产环境即可--确定 #克隆public命名空间的yml文件到prod 命名空间 配置管理-- 配置列表 -- 选择public命名空间 --勾选全部的yml文件 --底部点击克隆按钮 --目标空间选择prod --把每一个文件名中的dev改成prod如ruoyi-gateway-prod.yml-- 点击克隆按钮完成克隆即可前面后端项目中的bootstrap.yml配置文件中的环境配置是prod所以nacos中要存在应用名称-环境配置.配置文件格式拼接起来的文件如ruoyi-gateway-prod.yml所以上面克隆的时候我们修改了文件的名称。 最后修改prod命名空间下的每个yml文件中的redismysql相关的配置相关的IP需要配置为svc域名如redis:host: redis-svc.default #redis的域名port: 6379 password: Aa123456 #redis的密码 datasource: #mysql的域名nacos-headless.defaultdriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://mysql-svc.default:3306/ry-cloud?useUnicodetruecharacterEncodingutf8zeroDateTimeBehaviorconvertToNulluseSSLtrueserverTimezoneGMT%2B8username: rootpassword: Aa123456 #mysql的密码 最后点击发布即可。#制作后端镜像 [rootmaster01 RuoYi-Cloud-master]# cd docker/ [rootmaster01 docker]# sh copy.sh #执行脚本复制子项目的jar到当前docker目录下的对应目录 #构建auth镜像 [rootmaster01 docker]# cd ruoyi/auth [rootmaster01 auth]# docker build -t docker-ruoyi-auth:latest . #构建gateway镜像 [rootmaster01 docker]# cd ruoyi/gateway/ [rootmaster01 gateway]# docker build -t docker-ruoyi-gateway:latest . #构建model-system镜像 [rootmaster01 docker]# cd ruoyi/modules/system/ [rootmaster01 system]# docker build -t docker-ruoyi-system:latest . #制作前端镜像 [rootmaster01 docker]# cd nginx/ [rootmaster01 nginx]# vim conf/nginx.conf #编辑配置文件location /prod-api/{.......proxy_pass http://gateway-svc.default:8080/; #修改proxy_pass参数的gateway域名} [rootmaster01 nginx]# docker build -t nginx:v1 . #注意前端镜像tag不要写latest,否则构建出来的镜像会有问题因为dockerfile中FROM就是nginx#创建auth的k8s资源 cat ruoyi-auth.yaml EOF apiVersion: apps/v1 kind: Deployment metadata:name: ruoyi-authnamespace: default spec:replicas: 1selector:matchLabels:app: authtemplate:metadata:labels:app: authspec:nodeName: master01containers:- image: docker-ruoyi-authimagePullPolicy: IfNotPresentname: ruoyi-authports:- containerPort: 9200name: auth-9200protocol: TCPrestartPolicy: Always --- apiVersion: v1 kind: Service metadata:labels:app: auth-svcname: auth-svcnamespace: default spec:ports:- name: auth-svcport: 9200protocol: TCPtargetPort: 9200selector:app: auth sessionAffinity: Nonetype: ClusterIP EOF kubectl apply -f ruoyi-auth.yaml kubectl logs -f ruoyi-auth-7f9f89c4cb-c6wm5 #创建gateway相关的k8s资源 cat ruoyi-gateway.yaml EOF apiVersion: apps/v1 kind: Deployment metadata:name: ruoyi-gatewaynamespace: default spec:replicas: 1selector:matchLabels:app: gateway template:metadata:labels:app: gatewayspec:nodeName: master01containers:- image: docker-ruoyi-gatewayimagePullPolicy: IfNotPresentname: ruoyi-gatewayports:- containerPort: 8080name: gateway-8080protocol: TCPrestartPolicy: Always --- apiVersion: v1 kind: Service metadata:labels:app: gateway-svcname: gateway-svcnamespace: default spec:ports:- name: gateway-svc #这个svc在前端的配置文件中引用了port: 8080protocol: TCPtargetPort: 8080selector:app: gateway sessionAffinity: Nonetype: ClusterIP EOF kubectl apply -f ruoyi-gateway.yaml kubectl logs -f ruoyi-gateway-6f6497d6fb-5bl7h #创建gateway相关的k8s资源 cat ruoyi-system.yamlEOF apiVersion: apps/v1 kind: Deployment metadata:name: ruoyi-systemnamespace: default spec:replicas: 1selector:matchLabels:app: systemtemplate:metadata:labels:app: systemspec:nodeName: master01containers:- image: docker-ruoyi-systemimagePullPolicy: IfNotPresentname: ruoyi-systemports:- containerPort: 9201name: system-9201protocol: TCPrestartPolicy: Always --- apiVersion: v1 kind: Service metadata:labels:app: system-svcname: system-svcnamespace: default spec:ports:- name: system-svcport: 9201protocol: TCPtargetPort: 9201selector:app: systemsessionAffinity: Nonetype: ClusterIP EOF kubectl apply -f ruoyi-system.yaml kubectl logs -f ruoyi-system-7d5858d47d-fr7wc #创建前端nginx的k8s资源 cat ruoyi-nginx.yaml EOF apiVersion: apps/v1 kind: Deployment metadata:labels:app: ruoyi-nginxname: ruoyi-nginxnamespace: default spec:replicas: 1selector:matchLabels:app: ruoyi-nginxtemplate:metadata:labels:app: ruoyi-nginxspec:nodeName: master01containers:- image: nginx:v1imagePullPolicy: IfNotPresentname: ruoyi-nginxports:- containerPort: 80name: tcp-80protocol: TCPrestartPolicy: Always --- apiVersion: v1 kind: Service metadata:labels:app: ruoyi-nginx-svcname: ruoyi-nginx-svc namespace: default spec:ports:- nodePort: 30888port: 80protocol: TCPtargetPort: 80selector:app: ruoyi-nginxtype: NodePort EOF kubectl appl -f ruoyi-nginx.yaml [rootmaster01 docker]# kubectl get -f ruoyi-nginx.yaml NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/ruoyi-nginx 1/1 1 1 3h28mNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/ruoyi-nginx-svc NodePort 10.106.135.173 none 80:30888/TCP 3h28m #nginx 访问端口就是30888浏览器验证 登录 url为master节点IPruoyi-nginx-svc的外部端口30888。 创建用户正常 总结 1、关于nacos的配置 以上我们熟悉了在java程序中nacos是如何配置的即在每一个子项目中都会有一个bootstrap.yml文件我们来仔细解读一下该文件 cat ./ruoyi-auth/src/main/resources/bootstrap.yml # Tomcat server: port: 9200 #程序的端口 # Spring spring: application:# 应用名称name: ruoyi-auth #应用名称nacos中配置文件一般也与应用名称对应profiles:# 环境配置active: prod #指定环境配置程序启动时会激活对应的环境nacos会根据这个环境来读取对应的文件 #现在环境配置是prod那么nacos中会存在应用名称-环境配置.配置文件格式拼接起来的文件如ruoyi-auth-prod.yml程序启动时就会读该文件cloud:nacos:discovery:# 服务注册地址server-addr: 192.168.244.150:8848 #nacos的IP地址username: nacos #nacos的账号密码password: nacos #nacos的账号密码config:# 配置中心地址server-addr: 192.168.244.150:8848 #nacos的IP地址因为等下nacos使用容器启动暴露的就是宿主机8848端口username: nacos #nacos的账号密码password: nacos #nacos的账号密码namespace: prod #指定nacos的命名空间默不写该参数默认是public命名空间# 配置文件格式file-extension: yml #一般与nacos的配置文件对应# 共享配置shared-configs: #可以看到这个参数拼接起来就是application-prod.yml文件而这个文件是nacos上面有的- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} #下面是一段ruoyi-auth启动日志 #可以看的出来激活的是prod环境读取的配置文件是ruoyi-auth.yml 16:28:03.574 [main] WARN c.a.c.n.c.NacosPropertySourceBuilder - [loadNacosData,87] - Ignore the empty nacos configuration and get it based on dataId[ruoyi-auth] group[DEFAULT_GROUP] 16:28:03.581 [main] WARN c.a.c.n.c.NacosPropertySourceBuilder - [loadNacosData,87] - Ignore the empty nacos configuration and get it based on dataId[ruoyi-auth.yml] group[DEFAULT_GROUP] 16:28:03.607 [main] INFO c.r.a.RuoYiAuthApplication - [logStartupProfileInfo,637] - The following 1 profile is active: prod 16:28:05.975 [main] INFO o.a.c.h.Http11NioProtocol - [log,173] - Initializing ProtocolHandler [http-nio-9200] 16:28:05.988 [main] INFO o.a.c.c.StandardService - [log,173] - Starting service [Tomcat]#前端链接后端是如何配置的答案是在前端的配置文件里面配置了网关的IP和端口 #前端vue.config.js配置文件 vim ruoyi-ui/vue.config.js ....... devServer: {host: 0.0.0.0,port: port,open: true,proxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {target: http://192.168.244.150:8080, #gateway网关的IP和端口表示前端的请求要转发给这个网关changeOrigin: true,pathRewrite: {[^ process.env.VUE_APP_BASE_API]: }}},disableHostCheck: true}, #前端打包时到底都有哪些环境在前端目录下的package.json文件中定义了好几种配置环境如下 vim ruoyi-ui/package.jsonscripts: {dev: vue-cli-service serve,build:prod: vue-cli-service build,build:stage: vue-cli-service build --mode staging,preview: node build/index.js --preview,lint: eslint --ext .js,.vue src} 所以进入前端项目目录 cd ruoyi-ui/ npm install --registryhttps://registry.npmmirror.com npm run build:prod # 打包正式环境 npm run dev # 本地开发 启动项目 npm run build:stage # 打包预发布环境 构建打包成功之后会在根目录生成dist目录里面就是构建打包好的文件通常是 ***.js 、***.css、index.html 等静态文件。 然后将dist目录的静态文件发布nginx服务器即可启动前端。这个dist目录也是可以配置的在ruoyi-ui/vue.config.js配置文件中的outputDir参数配置。 #settings.js配置文件 vim ruoyi-ui/src/settings.js #settings.js配置文件可以定义前端显示的布局2、前端使用nginx启动 前端使用nginx启动在nginx.conf文件配置了反向代理到网关地址。 3、下面是auth程序启动日志 可以看到程序启动时区注册nacos并且激活的是prod环境链接的配置文件是ruoyi-auth.yml文件。 jar包中bootstrap.yml文件 vim ruoyi-auth.jar
http://www.hkea.cn/news/14311640/

相关文章:

  • 企业网站有哪几个类型WordPress怎么编制手机页面
  • 织梦网站首页错位如何做自己的视频网站
  • 深圳建设网站上市广东炒股配资网站开发
  • 古典家具公司网站模板wordpress用户注册邮件验证
  • 联谊会总结网站建设对外宣传外包网站制作
  • 南昌网站开发建设山东大型网站建设
  • 茶山网站仿做怎么制作网站商城
  • 太原本地网站WordPress使用CDN无法登录
  • 昆明网站建设开发手机微信官方网站首页
  • 建筑师网站镇江门户网
  • 网站设计成功案例网红营销的定义
  • 自己公司怎么做网站百度电脑版
  • 民宿网站建设简述搜索引擎优化的方法
  • 广告公司的网站建设价格手机网站制作代码
  • 织梦网站源码好吗创建网站制作仪表企业
  • 东莞免费网站建站模板网页界面分析及设计布局
  • 网站建设公司华网天下买赠两年建设公司代替做网站推广
  • 怎样做网站营销网站免费维护建立网站
  • 金寨建设工程质量监督站网站seo短视频网页入口引流
  • 网站构建的开发费用电商平台开发方案
  • 济宁城乡建设局网站青岛logo设计公司排名
  • 盐城网站建设推广企业所得税优惠政策2019
  • 如何做企业招聘网站广州官网建设
  • 广东省建设注册执业资格中心网站任何网络项目开始的第一步
  • 给网站做外链要注意哪些图文广告设计
  • 设计导航网站 左侧菜单栏发布网站iis上报404错误
  • 自助开通网站建站网站公司调查
  • 沧州住房和城乡建设部网站江西网站设计欣赏
  • 为网站做一则广告语适合美工的网站
  • 叙述网站的建设意义所在绍兴市柯桥区建设局网站