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

需要锦州网站建设seo营销外包公司

需要锦州网站建设,seo营销外包公司,大都会app用不了,公司建设内容是什么一.各软件的安装文档 1.达梦数据库在统信系统上的安装 官方手册:https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html 1.1下载安装包 官网:https://www.dameng.com/list_103.html 点击”服务与合作”-- “下载中心” 这里选择对应的cpu和操作…一.各软件的安装文档 1.达梦数据库在统信系统上的安装 官方手册:https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html 1.1下载安装包 官网:https://www.dameng.com/list_103.html 点击”服务与合作”-- “下载中心” 这里选择对应的cpu和操作系统(举个例子:windows版本的就用这个) 这里有用于统信系统的达梦安装包 链接https://pan.baidu.com/s/18czOorWAi8-C22c6Hi8TZw 提取码txxt 1.2安装 在安装前,我们需要先创建一个新的达梦用户以及一些准备工作 新建 dmdba 用户 注意 安装前必须创建 dmdba 用户禁止使用 root 用户安装数据库。 1.创建用户所在的组命令如下 groupadd dinstall 2.创建用户命令如下 useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba 修改用户密码命令如下 passwd dmdba 修改文件打开最大数 重启服务器后永久生效 使用 vi 编辑器打开 /etc/security/limits.conf 文件命令如下 vi /etc/security/limits.conf 在最后添加四条语句需添加的语句如下 dmdba hard nofile 65536 dmdba soft nofile 65536 dmdba hard stack 32768 dmdba soft stack 16384 切换到 dmdba 用户查看是否生效命令如下 su - dmdba ulimit -a 设置参数临时生效 可使用 dmdba 用户执行如下命令使设置临时生效 ulimit -n 65536 安装DM 用户应登录或切换到安装系统用户进行以下安装步骤的操作(注不建议使用 root 系统用户进行安装)。 在/home目录下创建 /dmdba文件夹用来安装 DM 数据库。命令如下 mkdir /home/dmdba 将 DM 安装光盘放入光驱然后加载(mount)光驱。一般可以通过执行下面的命令来 加载光驱 mount /dev/cdrom /home/dmdba 这里假定光驱对应的文件为/dev/cdrom 且目标路径/home/dmdba 已存在。 加载(mount)光驱后在/home/dmdba 目录下存在 DMInstall.bin 文件 将新建的安装路径目录权限的用户修改为 dmdba用户组修改为 dinstall。命令如下 chown dmdba:dinstall -R /home/dmdba/ 给安装路径下的文件设置 755 权限。命令如下 Copychmod -R 755 /home/dmdba 切换至 dmdba 用户下在 /home 目录下使用命令行安装数据库程序依次执行以下命令安装 DM 数据库。 su - dmdba cd /home/ ./DMInstall.bin -i 按需求选择安装语言默认为中文。本地安装选择【不输入 Key 文件】选择【默认时区 21】。 选择【1-典型安装】按已规划的安装目录 /home/dmdba 完成数据库软件安装不建议使用默认安装目录。 数据库安装大概 1~2 分钟数据库安装完成后显示如下界面。 数据库安装完成后需要切换至 root 用户执行上图中的命令/dm8/script/root/root_installer.sh 创建 DmAPService否则会影响数据库备份。 1.3配置环境变量 切换到 root 用户进入 dmdba 用户的根目录下配置对应的环境变量。DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入。命令如下 export PATH$PATH:$DM_HOME/bin:$DM_HOME/tool 编辑 .bash_profile使其最终效果如下图所示 cd /home/dmdba/ vim .bash_profile 切换至 dmdba 用户下执行以下命令使环境变量生效。 su - dmdba source .bash_profile 1.4配置实例 使用 dmdba 用户配置实例进入到 DM 数据库安装目录下的 bin 目录中使用 dminit 命令初始化实例。 dminit 命令可设置多种参数可执行如下命令查看可配置参数。 ./dminit help 需要注意的是页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (charset) 这四个参数一旦确定无法修改需谨慎设置。 extent_size 指数据文件使用的簇大小即每次分配新的段空间时连续的页数。只能是 16 页或 32 页或 64 页之一缺省使用 16 页。page_size 数据文件使用的页大小可以为 4 KB、8 KB、16 KB 或 32 KB 之一选择的页大小越大则 DM 支持的元组长度也越大但同时空间利用率可能下降缺省使用 8 KB。case_sensitive 标识符大小写敏感默认值为 Y 。当大小写敏感时小写的标识符应用双引号括起否则被转换为大写当大小写不敏感时系统不自动转换标识符的大小写在标识符比较时也不区分大小写只能是 Y、y、N、n、1、0 之一。charset 字符集选项。0 代表 GB180301 代表 UTF-82 代表韩文字符集 EUC-KR取值 0、1 或 2 之一。默认值为 0。 可以使用默认参数初始化实例需要附加实例存放路径。此处以初始化实例到 /dm/data 目录下为例执行初始化命令前需要使用 root 用户授予 /dm/data 目录相应权限可以参考修改目录权限初始化命令如下 ./dminit path/dm/data 也可以自定义初始化实例的参数参考如下示例 以下命令设置页大小为 32 KB簇大小为 32 KB大小写不敏感字符集为 utf_8数据库名为 DMDB实例名为 DBSERVER端口为 5237。 ./dminit path/dm/data PAGE_SIZE32 EXTENT_SIZE32 CASE_SENSITIVEy CHARSET1 DB_NAMEDMDB INSTANCE_NAMEDBSERVER PORT_NUM5237 这里重点提一下这个”大小写敏感 ” 大小写敏感是用于数据库初始化后,数据库的表,字段是否”大小写敏感 ” 这关乎到sql语句运行时的语句样式 例如: 如果设置了大小写敏感,数据库是允许TEST表和test表共同存在的 然后你在进行DDL语句时,比如我现在要查询TEST库 select * from test 这是不行的,必须是 select * from “TEST” 设置了”大小写敏感 ”后,要求sql语句在设计到表或者字段时,要加上双引号 Insert语句和update语句也不例外 达梦数据库设置成大小写敏感时小写的标识符需要用双引号括起否则会被转换为大写当大小写不敏感时系统不自动转换标识符的大小写在标识符比较时也不区分大小写。 所以,这里我们选择”大小写不敏感 ” 注意:如果后期要更改,只能将实例删除后重新创建新的实例才可以,意味着:一旦确定好实例参数,那么这个库你就没办法更改这些重要的基础配置了 1.5注册服务 注册服务需使用 root 用户进行注册。使用 root 用户进入数据库安装目录的 /script/root 下如下所示 cd /home/dmdba/script/root 注册服务如下所示 ./dm_service_installer.sh -t dmserver -dm_ini /dm/data/DAMENG/dm.ini -p DMSERVER 1.6启动、停止数据库 服务注册成功后启动数据库如下所示 systemctl start DmServiceDMSERVER.service 停止数据库如下所示 systemctl stop DmServiceDMSERVER.service 重启数据库如下所示 systemctl restart DmServiceDMSERVER.service 查看数据库服务状态如下所示 systemctl status DmServiceDMSERVER.service 可前台启动进入 DM 安装目录下的 bin 目录下命令如下 ./dmserver /dm/data/DAMENG/dm.ini 该启动方式为前台启动若想关闭数据库则输入 exit 即可。 也可进入 DM 安装目录下的 bin 目录下启动/停止/重启数据库如下所示 ./DmServiceDMSERVER start/stop/restart 查看数据库状态如下所示 ./DmServiceDMSERVER status 1.7开启远程连接 达梦默认端口是5236 如果服务器是开启防火墙状态的请注意 将数据库的端口开放否则链接会报错 命令firewall-cmd --add-servicedmdba --permanent # 5236为dmdba端口 命令firewall-cmd --zonepublic --add-port5236/tcp --permanent 命令firewall-cmd --reload # 查看防火墙开放端口 firewall-cmd --zonepublic --list-ports 1.8数据库安装目录 下图展示为 DM8 数据库目录。 cd /home/dmdba/dm8 /dm8/bin 目录存放 DM 数据库的可执行文件例如 disql 命令、dminit 命令、dmrman 工具等。 /dm8/desktop 存放 DM 数据库各个工具的桌面图标。 /dm8/doc 存放 DM 数据库用户手册。 /dm8/drivers 存放连接 DM 数据库的驱动文件。 /dm8/log 存放 DM 数据库日志包括工具的日志、数据库日志、服务日志等。 /dm8/samples 存放 DM 数据库各类配置文件的示例文件。 /dm8/script 存放注册、注销 DM 数据库服务的工具例如 dm_service_installer.sh 等。 /dm8/tool 存放 DM 数据库的各个工具例如 manager 管理工具、dbca 数据库配置助手等。 /dm8/uninstall 目录存放卸载 DM 数据库的脚本。 /dm8/web 目录存放 DM 数据库 dem 工具的 web 环境。 数据库实例目录 /dm8/data 为数据库实例目录该目录存放各个实例的文件。 以实例 DAMENG 为例该目录下存放 DAMENG 实例的配置文件 *.ini、控制文件 dm.ctl、数据文件 *.DBF、日志文件 *.log 等。 1.9windows上安装管理工具 为了方便管理数据库,我们可以在windows上安装一个达梦数据库,可以选择只安装管理工具,但是建议还是全部安装 进入官网,选择对应版本下载 根据安装提示,一步一步安装即可 安装好后,进入安装目录,找到tool目录 找到manager.exe 双击打开 数据库实例连接 新建连接 创建连接数据库的对象导航不进行保存下次开启后需重新连接。 注册连接 创建连接数据库的对象导航进行保存下次开启后对象导航存在可直接进行连接。 注册连接 输入主机名IP 地址、端口默认 5236、用户名默认 SYSDBA、密码默认 SYSDBA点击【测试】测试是否连通点击【确定】连接数据库如下图所示 对象导航栏自动生成对应的数据库链接信息点击鼠标【右键】点击【连接】即可如下图所示 新建连接 点击【新建连接】输入主机名IP 地址、端口默认 5236、用户名默认 SYSDBA、密码默认 SYSDBA点击【确认】即可直接进行数据库连接如下图所示 信息说明和常用配置 窗口基本功能说明 连接数据库后左侧显示对象导航右侧为新建查询窗口通过窗口可编写 SQL 语句进行执行顶部为工具栏底部为消息和结果集。如下图所示 查看数据库实例信息 通过 DM 管理工具可查看数据库实例的信息包含系统概览表使用空间系统管理日志文件归档配置等几个方面。 选择对应实例右键点击【管理服务器】即可进行查看实例相关信息如下图所示 更加详细文档可参考官方文档 官方手册:https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html 2.达梦数据库集合SpringBoot丶Mybatis丶Mybatis-plus 2.1.driver驱动包 在安装目录下的drivers下的jdbc找到驱动包 这里我们选择18这个最新版本,只要这一个驱动就够了 2.2.pom环境 新建项目,选择SpringBoot - 2.7.9  ;  Mybatis-3.0.0 IDEA中,打开右侧maven管理页面,选择执行maven命令,打开命令界面 编辑命令,导入上面的达梦驱动包 命令模板 mvn install:install-file -Dfile/project/mysdk.jar -DgroupIdcom.aspose -DartifactIdaspose-cells -Dversion8.5.2 -Dpackagingjar -Dfile : 表示jar包所在位置(绝对路径)-DgroupId : 表示项目ID-DartfactId : 表示组织ID-Dversion : 表示版本-Dpackaging : 表示以什么形式 这里命令为: mvn install:install-file -DfileD:\tools\dmdb\drivers\jdbc\DmJdbcDriver18.jar -DgroupIdcom.dm -DartifactIdDmJdbcDriver -Dversion1.8 -Dpackagingjar !--达梦-- dependency     groupIdcom.dm/groupId     artifactIdDmJdbcDriver/artifactId     version1.8/version /dependency 2.3.resources配置文件 driver 之前com.mysql.cj.jdbc.Driver 现在dm.jdbc.driver.DmDriver url 之前jdbc:mysql://127.0.0.1:3306/test? 现在jdbc:dm://127.0.0.1:5236/TEST? username 之前root 现在SYSDBA password 之前123456 现在SYSDBA Properties #DM spring.datasource.driver-class-namedm.jdbc.driver.DmDriver spring.datasource.url jdbc:dm://192.168.163.236:5236 spring.datasource.usernameSYSDBA spring.datasource.passwordSYSDBA mybatis.mapper-locationsclasspath*:mapper/**/*Mapper.xml yml spring:   datasource:     url: jdbc:dm://192.168.163.236:5236     username: JP     password: 123456789     driver-class-name: dm.jdbc.driver.DmDriver     type: com.alibaba.druid.pool.DruidDataSource     initialSize: 1     minIdle: 3     maxActive: 20     maxWait: 60000     timeBetweenEvictionRunsMillis: 60000     minEvictableIdleTimeMillis: 30000     filters: stat,wall     druid:       test-while-idle: false   jpa:     show-sql: true     generate-ddl: false     hibernate:       ddl-auto:     properties:       hibernate:         enable_lazy_load_no_trans: true         default_schema: JP         temp:           use_jdbc_metadata_defaults: false     database-platform: org.hibernate.dialect.DmDialect 2.4.测试 1.SpringBoot集成Mybatis 1.实体类 package com.cds.dmdb.domain; import lombok.Data; Data public class Table {     private Integer id;     private String name;     private String age; } 2.Mapper package com.cds.dmdb.mapper; import com.cds.dmdb.domain.Table; import java.util.List; public interface TestMapper {     public ListTable selectAll();     public int insert(Table table);     public int update(Table table);     public int delete(int id); } 3.mapper.xml ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.cds.dmdb.mapper.TestMapper     resultMap idTableResult typecom.cds.dmdb.domain.Table         result columnid propertyid jdbcTypeINTEGER/     /resultMap     select idselectAll resultMapTableResult         select * from TEST.TABLE_1;     /select     insert idinsert parameterTypecom.cds.dmdb.domain.Table keyPropertyid useGeneratedKeystrue         insert into TEST.TABLE_1         trim prefix( suffix) suffixOverrides,             if testname ! null and name ! name,/if             if testage ! null and age ! age,/if         /trim         trim prefixvalues ( suffix) suffixOverrides,             if testname ! null and name ! #{name},/if             if testage ! null and age ! #{age},/if         /trim     /insert     update idupdate parameterTypecom.cds.dmdb.domain.Table         update TEST.TABLE_1         trim prefixSET suffixOverrides,             if testname ! null and name ! name #{name},/if             if testage ! null and age ! age #{age},/if         /trim         where id #{id}     /update     delete iddelete parameterTypeint         delete from TEST.TABLE_1 where id #{id}     /delete /mapper 4.测试类 package com.cds.dmdb; import com.cds.dmdb.domain.Table; import com.cds.dmdb.mapper.TestMapper; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; SpringBootTest class DmdbApplicationTests {     Autowired     private TestMapper testMapper;     Test     void selectAll() {         System.out.println(testMapper.selectAll());     }     Test     void insert() {         Table table new Table();         table.setName(张三);         table.setAge(25);         testMapper.insert(table);         System.out.println(testMapper.selectAll());     }     Test     void update() {         Table table new Table();         table.setId(1);         table.setName(麻子);         table.setAge(15);         testMapper.update(table);         System.out.println(testMapper.selectAll());     }     Test     void delete() {         testMapper.delete(4);         System.out.println(testMapper.selectAll());     } } 查询成功 2.SpringBoot集成Mybatis-Plus 1.增加依赖 !--Mybatis-Plus-- dependency     groupIdcom.baomidou/groupId     artifactIdmybatis-plus-boot-starter/artifactId     version3.4.2/version /dependency 2.实体类增加识别注解 实体类增加注解 在自增长ID上添加注解让plus识别到 TableId(type IdType.AUTO) 注意:针对达梦数据库,需要在前面加上模式--模式.表名 TableName(test.table_1) 不然会报错无效 org.springframework.dao.DataIntegrityViolationException: ### Error querying database.  Cause: dm.jdbc.driver.DMException: 第1 行附近出现错误: 无效的表或视图名[table_1] 3.Mapper继承BaseMapper 新增Mapper.并继承BaseMapperT 还要增加Mapper注解 4.Service继承IServiceT 新增Service接口.并继承IServiceT 5.ServiceImpl继承ServiceImplM extends BaseMapper, T M为接口UserMapper, T为实体类User需要加上Service注解 6.resources配置文件 配置文件不用更改,如有特殊想配置的可查询官网 7.测试 查询 新增 修改 删除 3.达梦数据库的迁移 3.1.打开迁移工具 在安装目录下,找到tool目录,找到dts.exe双击打开 这是达梦的迁移工具 也可以随意打开一个工具,然后点击界面上的”首页” 所有工具都能在这看到,当然你必须当初有安装,如果你只安装了管理工具,那么其他的工具你就使用不了,所以才建议最初安装最好所有都安装 3.2.新建工程 点击新建工程 随意输入 工程建好后,在左边栏显示 右键”迁移”,”新建迁移” 3.3.填写数据源以及目的源 填写数据源来源 这里例子为MySQL, 其他数据库也是一样 这里我们选择”指定驱动” 然后驱动路径一定要填写,在maven仓库中找到MySQL的驱动路径 例: D:\java\maven\maven_repository\mysql\mysql-connector-java\8.0.13\mysql-connector-java-8.0.13.jar URL如下参考,替换库名就可以了 jdbc:mysql://localhost:3306/database_name?characterEncodingutf8useSSLfalseserverTimezoneUTCrewriteBatchedStatementstrue 接着点击下一步,继续填写目的源 在 mysql 数据库中对象名默认是小写达梦对象名默认是大写在用达梦 DTS 工具迁移的时候去掉“保持对象名大小写”的勾选使对象名自动转换成大写在 mybatis 查询的时候即不需要加双引号强调小写。 点击”查看默认类型映射关系”可以将两个不同数据库之间的类型的对应关系 3.4.指定模式 指定模式 双击显示下拉框,选择目的模式 指定表 将需要迁移的表选中即可 双击目的模式,进入编辑页面 3.5.迁移 确定好迁移模式之后,点击下一步 在该页面可选择”以文本方式显示执行任务”或”以表格方式显示执行任务” 点击”完成”进行迁移 迁移过程中如若出现错误会显示 3.6.迁移中出现的错误以及解决方案 默认情况下,迁移”表定义”,”主键”,”约束”,”索引”,”表及字段注释”,”数据” 如果说数据量不大,就直接可以全部选中,然后确定后直接迁移 如果数据量比较庞大,建议先进行迁移表结构,以防迁移过程中因数据类型的不同造成迁移失败,等迁移之后确认无误之后再迁移数据 迁移中,如果发生字节长度不够引起报错 列[NAMES]长度超出定义 经排查该表的 NAMES 字段存放的是中文UTF8 编码。 报错原因MySQL 中 varchar(1) 可以存一个汉字DM 数据库是以字节为单位。若是 gb18030 字符集varchar(2) 才可以存一个汉字若是 UTF-8 字符集varchar(3) 才可以存一个汉字。该 NAMES 在 MYSQL 的长度为 10在迁移过程中达梦数据库建表的 NAMES 字段长度也是 10那么就会导致当该字段中文字符超过 4 个的时候就会出现无法存下的问题。 解决方法在此种情况下为了保证汉字可以完整的被存储可通过如下两种方法解决 方法一扩大字段长度。如 MySQL 表中的 NAMES 字段长度为 10那么建议在达梦建表的时候该 NAMES 字段长度为 30。 方法二重新初始化达梦数据库实例并设置参数 length_in_char1即 VARCHAR 类型对象的长度以字符为单位。 因为MySQL中是以字符为单位,而DM类似oracle 是以字节为单位,所以会出现长度不够 可以在”列映射选项”中修改精度,将其长度扩大 更多错误解决方案可参考官方文档 https://eco.dameng.com/document/dm/zh-cn/faq/faq-mysql-dm8-migrate.html 4.PostgreSQL数据库在统信系统上的安装 4.1.下载安装包 官网地址:PostgreSQL: File Browser 选择gz安装包 4.2.上传到linux服务器,然后解压缩 tar -zxvf postgresql-13.0.tar.gz 4.3.进入到解压后的postgresql-13.0目录下执行./configure --prefix/usr/local/postgresql ./configure --prefix/usr/local/postgresql (后面这个路径可以自定义) 报错:configure: error: readline library not found 原因是没有找到readline 解决方法yum install -y readline-devel 报错configure: error: zlib library not found 解决方法yum install zlib-devel 没解决还可以更换yum源,可以在网上搜索下相对应文档 但我当时linux服务器是统信系统,上述两个方法都不行,使用yum命令下载提示说下载元数据失败,更换源也没找到统信系统对应的更换yum源的文档 并且我查看是有readline的 发现有readline,但依然报错说找不到 后面发现解决configure: error: readline library not found错误 还有另一个解决方法: 在执行命令 ./configure 加上 --without-readline 选项不编译 readline 但是不建议这样做readline 的作用是能够在 pg 控制台读取历史命令就像在 linux shell 中按上下键读取历史命令不需要再手动输入重复的命令 ./configure --prefix/usr/local/postgresql --without-readline 接着执行make和make install进行安装编译 过程有点儿长,显示PostgreSQL installation complate 代表完成  执行完毕在/usr/local目录下就会有postgresql这个目录 4.3.1yum命令用不了,报错:下载元数据失败 解决办法: 更换统信系统数据源 更换的源文件 链接https://pan.baidu.com/s/18czOorWAi8-C22c6Hi8TZw 提取码txxt 将文件UnionTechOS-a-ufu.repo  上传至服务器中的/etc/yum.repos.d 然后再次执行yum命令 如若还是不行,将文件打开, 把所有的gpgcheck 改为0  gpgcheck 0 把skip_if_unavailable 1 把gpgkey 注释掉 4.4.创建data目录和log目录 mkdir /usr/local/postgresql/data mkdir /usr/local/postgresql/log 4.5.加入系统环境变量 view /etc/profile 小写o进入编辑 增加以下三行export PGHOME/usr/local/postgresqlexport PGDATA/usr/local/postgresql/dataexport PATHP A T H : PATH:PATH:JAVA_HOME/bin:$PGHOME/bin Esc 退出编辑 :wq 保存或 :wq! 强行保存并退出 最后使配置文件生效source /etc/profile 4.6.增加用户postgres并赋权 useradd postgres chown -R postgres:root /usr/local/postgresql 4.7.初始化数据库 su postgres (切换到postgres用户) /usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data/ 注意 不能在 root 用户下初始数据库否则会报错 4.8.编辑配置文件 vim /usr/local/postgresql/data/postgresql.conf 把60行的listen_addresses localhost改为listen_addresses *,并放开注释 把对应的port5432放开注释 vim /usr/local/postgresql/data/pg_hba.conf 添加一行 host all all 0.0.0.0/0 md5 说明TYPEpg的连接方式local本地unix套接字hosttcp/ip连接DATABASE指定数据库USER指定数据库用户ADDRESSip地址可以定义某台主机或某个网段32代表检查整个ip地址相当于固定的ip24代表只检查前三位最后一 位是0~255之间的任何一个METHOD认证方式常用的有identmd5passwordtrustreject。 md5是常用的密码认证方式。 password是以明文密码传送给数据库建议不要在生产环境中使用。 trust是只要知道数据库用户名就能登录建议不要在生产环境中使用。 reject是拒绝认证。 4.9.启动服务 pg_ctl start -l /usr/local/postgresql/log/pg_server.log 进入数据库 psql -U postgres -d postgres 看到postgres#  代表成功 当我们在postgresql的命令行敲命令的时候我们会发现命令行会发生变化在postgres#和postgres-#之间切换 postgres-#的意思是:你当前的命令输入还不完整。postgres#的意思是:当前没有输入新的命令 使用\password进行设置密码,默认用户名是:postgres,这里我们就不去修改用户名了,只修改密码 使用\l 进行查看 4.10.添加postgresql至服务 命令cd /usr/local/pgsql/postgresql-13.0/contrib/start-scripts 命令chmod ax linux 命令cp linux /etc/init.d/postgresql 此时就可以使用 /etc/init.d/postgresql stop 来停止postgresql 也可以使用service postgresql start 来启动postgresql 修改postgresql脚本中prefix和PGDATA的内容 附带命令pg_ctl start 启动服务           pg_ctl restart 重启服务 设置开机自启动 chkconfig --add postgresql 查看版本 psql -V 4.11.navicat远程连接 如果服务器是开启防火墙状态的请注意 将数据库的端口开放否则链接会报错 命令firewall-cmd --add-servicepostgresql --permanent # 5432为postgresql端口 命令firewall-cmd --zonepublic --add-port5432/tcp --permanent 命令firewall-cmd --reload # 查看防火墙开放端口 firewall-cmd --zonepublic --list-ports 5.MySQL数据库在统信系统上的安装 5.1.查看是否已经安装 Mysql rpm -qa | grep mysql 我之前装过一次! 如果你查看出来有东西可以使用下面命令将其删除 rpm -e 文件名 或者 yum remove 文件名 5.2.下载官方 Mysql 包 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 如果安装有提示Cannot write to ‘mysql57-community-release-el7-10.noarch.rpm’ (No such file or directory)那就是权限不够 可以输入 su root 来解决然后重新下载。 5.3.安装MySQL包 yum -y install mysql57-community-release-el7-10.noarch.rpm 5.4.安装MySQL yum -y install mysql-community-server 如果执行命令过程中提示Unable to find a match: mysql-community-server 则可以通过命令解决 yum module disable mysql 如果报错: 源 MySQL 5.7 Community Server 的 GPG 密钥已安装但是不适用于此软件包。请检查源的公钥 URL 是否配置正确。 失败的软件包是mysql-community-libs-compat-5.7.37-1.el7.x86_64 GPG  密钥配置为file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 可以将这两个文件下载并上传到服务器的/etc/yum.repos.d mysql-community.repo mysql-community-source.repo 两个文件可以在百度网盘中获取 链接https://pan.baidu.com/s/18czOorWAi8-C22c6Hi8TZw 提取码txxt 然后再去执行命令 yum -y install mysql-community-server 5.5.启动 Mysql 服务 systemctl start mysqld.service 如果没有报错进入第六步 如果执行报错多半是没有权限执行下面语句赋予权限然后重试 chown mysql:mysql -R /var/lib/mysql 5.6.查看 Mysql 运行状态 service mysqld status 看见这个绿色就表示启动成功了. ​ 5.7.查看初始密码红色部分为初始密码) grep ‘password’ /var/log/mysqld.log ​ 如果能正常查看到则OK如果查看不到则表示没有密码。 5.8.进入数据库 mysql -u root -p 输入命令后点击回车会让你输入密码然后输入刚刚的初始密码输密码的时候不可见当然支持粘贴你可以复制初始密码后然后粘贴。如果没有密码直接回车即可。 ​ 注: 如果显示数据库无法访问 ​ 修改MySql配置文件my.cnf新增skip-grant-tables find / -name my.cnf ​ 修改文件之前记得先关闭mysql服务 service mysqld stop 通过 vi 指令进入文件 vi /etc/my.cnf ​ 新增skip-grant-tables ,添加skip-grant-tables这样mysql可以免密登录。 ​ 重启服务 service mysqld start 再次连接MySql重置密码 任意密码就可以进入了 mysql -u root -p ​ ​ 通过 show databases; 查询数据库,注意带 ; 号 show databases; ​ 切换到mysql数据库 ​ 重置密码为 root update user set authentication_stringpassword(‘root’) where user‘root’; 修改配置文件my.cnf删除skip-grant-tables重启再登录 vi /etc/my.cnf 删除skip-grant-tables ​ 重启服务 service mysqld start 根据指令进入MySQL数据库 mysql -uroot -p 输入新密码登录 ​ 5.9.远程连接 登录服务器mysql数据库 执行 use mysql; 执行 update user set host % where user root; 执行 FLUSH PRIVILEGES; 查看防火墙是否已开放3306端口 firewall-cmd --query-port3306/tcp   设置3306端口为永久开放 firewall-cmd --add-port3306/tcp --permanent   查看firewalld状态发现当前是dead状态即防火墙未开启 systemctl status firewalld   关闭防火墙 systemctl stop firewalld   重启防火墙设置了新的端口记得先关闭再重启 systemctl status firewalld 二.配置UOS yum源 源文件 链接https://pan.baidu.com/s/18czOorWAi8-C22c6Hi8TZw 提取码txxt 将文件UnionTechOS-a-ufu.repo  上传至服务器中的/etc/yum.repos.d 注意: 文件和版本要对应上,我这里的UOS版本是1050a, 因此对应的文件是UnionTechOS-a-ufu.repo 查询版本命令: cat /etc/issue ​ 然后再次执行yum命令 如若还是不行,将文件打开, 把所有的gpgcheck 改为0 gpgcheck 0 把skip_if_unavailable 1 把gpgkey 注释掉 三.安装PostGis 安装postGis必须先安装PostgreSQL 虚拟机环境统信1050aPostgreSQL 13.0 1 Postgis安装的必要条件 PostgreSQL: 必须安装postgis的基础 GNU C 编译器gcc:  gcc是一个Linux中最标准的C语言编译器需要安装gcc来编译PostGIS和其他软件或函数库的源码。 GNU Makegmake或make这个也是用于编译源码。对于许多系统GNU make是make的默认版本。通过调用来检查版本make -v Proj4Proj4 重投影库用于在PostGIS中提供坐标重投影支持。 GEOSGEOS几何图形库用于支持PostGIS中的几何信息处理、分析等功能也可以直接认为GEOS是一个几何算法库。 LibXML2当前用于某些导入功能ST_GeomFromGML和ST_GeomFromKML。 JSON-C 当前用于通过功能ST_GeomFromGeoJson导入GeoJSON。 GDAL用于PostGIS对栅格数据的支持。 2 Postgis安装的可选条件 GDAL仅在不需要栅格时才可以将其忽略 GTK 编译shp2pgsql-gui形状文件加载器 SFCGAL用于为PostGIS提供附加的2D和3D高级分析功能。并且还允许将SFCGAL而不是GEOS用于两个后端提供的某些2D函数例如例如ST_Intersection或ST_AreaSFCGAL需要CGAL和Boost两个库的支持。 CUnit回归测试所必需的 DocBook构建文档必须的 3 必要库和软件的下载路径 项目 下载链接 Postgis Index of /postgis/source/ Proj4 Index of /proj/ GEOS Index of /geos/ LibXML2 ftp://xmlsoft.org/libxml2/ Index of /sources JSON-C Releases · json-c/json-c · GitHub GDAL Index of /gdal/ SFCGAL可选 Releases · Oslandia/SFCGAL · GitHub protobuf-c可选 Releases · protobuf-c/protobuf-c · GitHub 4本次安装的软件和库 PostGIS/PostgreSQL和其他依赖关系矩阵 :UsersWikiPostgreSQLPostGIS – PostGIS 本次准备软件与依赖包 gdal-3.1.2.tar.gzgeos-3.8.1.tar.bz2json-c-json-c-0.13.1-20180305.tar.gzlibxml2-2.9.9.tar.gz python-rpm-macros-3-32.el7.noarch.rpm python2-rpm-macros-3-32.el7.noarch.rpm python-devel-2.7.5-88.el7.x86_64.rpm proj-6.2.1.tar.gz sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm sqlite-3.7.17-8.el7_7.1.x86_64.rpm postgis-3.0.2.tar.gzSFCGAL-1.3.8.tar.gz可选 cmake-3.18.3-Linux-x86_64.tar.gz boost-devel-1.53.0-28.el7.x86_64.rpm boost-jam-1.53.0-28.el7.x86_64.rpm boost-build-1.53.0-28.el7.noarch.rpm boost-atomic-1.53.0-28.el7.x86_64.rpm boost-chrono-1.53.0-28.el7.x86_64.rpm boost-context-1.53.0-28.el7.x86_64.rpm boost-filesystem-1.53.0-28.el7.x86_64.rpm boost-regex-1.53.0-28.el7.x86_64.rpm boost-graph-1.53.0-28.el7.x86_64.rpm boost-locale-1.53.0-28.el7.x86_64.rpm boost-math-1.53.0-28.el7.x86_64.rpm boost-program-options-1.53.0-28.el7.x86_64.rpm boost-python-1.53.0-28.el7.x86_64.rpm boost-serialization-1.53.0-28.el7.x86_64.rpm boost-signals-1.53.0-28.el7.x86_64.rpm boost-test-1.53.0-28.el7.x86_64.rpm boost-timer-1.53.0-28.el7.x86_64.rpm boost-wave-1.53.0-28.el7.x86_64.rpm boost-1.53.0-28.el7.x86_64.rpm gmp-devel-6.0.0-15.el7.x86_64.rpm mpfr-devel-3.1.1-4.el7.x86_64.rpm cgal-4.14.3.tar.gz 拷贝至服务器使用root开始安装。 所有软件和依赖包可以在第三步提供的链接和 阿里镜像站 去下载另外也将自己所用到的所有软件和依赖包分享至 链接https://pan.baidu.com/s/1-B8Xu694W-5sQ7iukdc_ww 提取码pgis 5 安装postgis所依赖的软件和库 安装顺序尽量按照安装条件准备中的官网介绍来可能会有存在依赖关系如gdal安装时就要指定proj4的安装路径。 5.1 Prj4 解压proj-6.2.1.tar.gz [rootskycloud postgis]# tar -zxvf proj-6.2.1.tar.gz    进入到proj-6.2.1运行configure并设置安装的位置为/usr/local/proj-6.2.1 [rootskycloud postgis]# cd proj-6.2.1/   [rootskycloud proj-6.2.1]# ./configure --prefix/usr/local/proj-6.2.1   ​ 提示缺少sqlite3且版本3.7手动下载sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm、sqlite-3.7.17-8.el7_7.1.x86_64.rpm [rootskycloud postgis]# rpm -ivh sqlite-devel-3.7.17-8.el7_7.1.x86_64.rpm   [rootskycloud postgis]# rpm -ivh sqlite-3.7.17-8.el7_7.1.x86_64.rpm 重新运行检测通过 [rootskycloud proj-6.2.1]# ./configure --prefix/usr/local/proj-6.2.1   安装proj报错 报错: configure: error: *** A compiler with support for C11 language features is required. 原因: gcc版本太低了 解决问题 1查看当前的gcc版本 gcc -v 结果gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) 2下载高版本的gcc wget ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz 3解压 tar -zxvf gcc-8.3.0.tar.gz 4进入目录 cd gcc-8.3.0 5配置 ./configure --prefix/usr/local/gcc-8.3.0 --enable-checkingrelease --enable-languagesc,c --disable-multilib 注意如果出现错误以下错误 ...省略 configure: error: Building GCC requires GMP 4.2, MPFR 2.4.0 and MPC 0.8.0. Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify their locations. Source code for these libraries can be found at their respective hosting sites as well as atftp://gcc.gnu.org/pub/gcc/infrastructure/. See also http://gcc.gnu.org/install/prerequisites.html for additional info. If you obtained GMP, MPFR and/or MPC from a vendor distribution package,make sure that you have installed both the libraries and the header files. They may be located in separate packages. 错误说明安装gcc需要这三个依赖GMP 4.2, MPFR 2.4.0 and MPC 0.8.0。 错误中还指出了下载页面的地址ftp://gcc.gnu.org/pub/gcc/infrastructure/。 1、 打开链接ftp://gcc.gnu.org/pub/gcc/infrastructure/。 2、 找到需要的三个包地址下载下来 wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz 3、安装GMP       tar -jxvf gmp-6.1.0.tar.bz2 cd gmp-6.1.0 ./configuremake make install 安装MPFR tar -jxvf mpfr-3.1.4.tar.bz2 cd mpfr-3.1.4 ./configuremake make install 安装MPC tar -zxvf mpc-1.0.3.tar.gz cd mpc-1.0.3 ./configuremake make install 继续安装: ./configure --prefix/usr/local/gcc-8.3.0 --enable-checkingrelease --enable-languagesc,c --disable-multilib 有可能报错: configure: error: in /root/gcc-6.4.0/host-x86_64-pc-linux-gnu/gcc: configure: error: C preprocessor /lib/cpp fails sanity check ​ 解决办法: yum install glibc-headers gcc-c -y 6编译 make 7安装 make install 8查看版本 gcc -v 如果发现版本没有变化 可以删除旧版本的gcc如果旧版的是用yum安装的可以使用yum remove gcc。 然后把新安装的gcc的bin目录添加到环境变量中/etc/profile文件中。 再查看版本是否已变成最新安装的版本。 ​​ 9更新标准库 这一步应该是需要的gcc升级后标准库还是旧的可能影响一些编译操作。 1、进入到刚才安装新的GCC的目录中cd /usr/local/gcc-8.3.0 2、进入到库目录cd lib64 注意系统如果是64位的就进入到lib64目录否则进入到lib目录 3、查看当前库的最搭版本ls结果看到libstdc.so.6.0.25 4、复制到系统默认的库目录下 cp libstdc.so.6.0.25 /usr/lib64/   注意系统如果是32cp libstdc.so.6.0.25 /usr/lib/ 5、进入到/usr/lib64下查看相关的版本信息ls -l | grep libstdc 结果 ...   libstdc.so.6 - libstdc.so.6.0.13 ...  libstdc.so.6.0.13                       ...   libstdc.so.6.0.25 6、删除旧的软连接rm -f libstdc.so.6 7、建立新的软连接ln -s libstdc.so.6.0.25 libstdc.so.6 8、查看标准库最新的版本 strings /usr/lib64/libstdc.so.6 | grep GLIBCXX 再次重新运行检测 [rootskycloud proj-6.2.1]# ./configure --prefix/usr/local/proj-6.2.1   编译与安装 [rootskycloud proj-6.2.1]# make clean;make   [rootskycloud proj-6.2.1]# make check  --可选编译结果测试 [rootskycloud proj-6.2.1]# make install 在/usr/local查看文件列表 [rootskycloud proj-6.2.1]# ll /usr/local/ ​ 5.2 GEOS 解压geos-3.8.1.tar.bz2 [rootskycloud postgis]# tar -jxvf geos-3.8.1.tar.bz2   进入到geos-3.8.1运行configure并设置安装的位置为/usr/local/geos-3.8.1此处无error [rootskycloud postgis]# cd geos-3.8.1/   [rootskycloud geos-3.8.1]# ./configure --prefix/usr/local/geos-3.8.1  ​ 编译与安装 [rootskycloud geos-3.8.1]# make clean;make   [rootskycloud geos-3.8.1]# make install   在/usr/local查看文件列表 [rootskycloud geos-3.8.1]# ll /usr/local ​ 5.3 LibXML2 解压libxml2-2.9.9.tar.gz [rootskycloud postgis]# tar -zxvf libxml2-2.9.9.tar.gz    进入到libxml2-2.9.9运行configure并设置安装的位置为/usr/local/ libxml2-2.9.9 [rootskycloud postgis]# cd libxml2-2.9.9/   [rootskycloud libxml2-2.9.9]# ./configure --prefix/usr/local/libxml2-2.9.9   编译 [rootskycloud libxml2-2.9.9]# make clean;make   ​ 编译出现问题需要安装python-devel下载 python-rpm-macros-3-32.el7.noarch.rpm、python2-rpm-macros-3-32.el7.noarch.rpm、python-devel-2.7.5-88.el7.x86_64.rpm 上传并安装。 [rootskycloud postgis]# rpm -ivh python-rpm-macros-3-32.el7.noarch.rpm    [rootskycloud postgis]# rpm -ivh python2-rpm-macros-3-32.el7.noarch.rpm    [rootskycloud postgis]# rpm -ivh python-devel-2.7.5-88.el7.x86_64.rpm 重新编译安装 [rootskycloud libxml2-2.9.9]# make clean;make   [rootskycloud libxml2-2.9.9]# make install   [rootskycloud libxml2-2.9.9]# ll /usr/local 在/usr/local查看文件列表 ​ 5.4 json-c 解压json-c-json-c-0.13.1-20180305.tar.gz [rootskycloud postgis]# tar -zxvf json-c-json-c-0.13.1-20180305.tar.gz 进入到json-c-json-c-0.13.1-20180305运行configure并设置安装的位置为/usr/local/json-c-0.13 [rootskycloud postgis]# cd json-c-json-c-0.13.1-20180305/   [rootskycloud json-c-json-c-0.13.1-20180305]# ./configure --prefix/usr/local/json-c-0.13  编译与安装 [rootskycloud json-c-json-c-0.13.1-20180305]# make clean;make   [rootskycloud json-c-json-c-0.13.1-20180305]# make install   [rotskycloud json-c-json-c-0.13.1-20180305]# make install   在/usr/local查看文件列表 [rootskycloud json-c-json-c-0.13.1-20180305]# ll /usr/local ​ 5.5 gdal 解压gdal-3.1.2.tar.gz [rootskycloud postgis]# tar -zxvf gdal-3.1.2.tar.gz   进入到gdal-3.1.2运行configure并设置安装的位置为/usr/local/gdal-3.1.2 [rootskycloud postgis]# cd gdal-3.1.2/     # 需指定proj的安装路径否则   # ./configure会报错error: PROJ 6 symbols not found   [rootskycloud gdal-3.1.2]# ./configure --prefix/usr/local/gdal-3.1.2 --with-proj/usr/local/proj-6.2.1                                                            ​ 编译与安装  [rootskycloud gdal-3.1.2]# make clean;make   [rootskycloud gdal-3.1.2]# make install   在/usr/local查看文件列表 [rootskycloud gdal-3.1.2]# ll /usr/local ​ 5.6 SFCGAL可选 这部分内容参考博客: Linux之postgis离线安装_linux postgrsql 离线安装postgis-CSDN博客 这里我们并没有安装SFCGAL 6 安装postgis 1.动态库路径添加 添加动态库路径/etc/ld.so.conf此文件记录了编译时使用的动态函数库的路径即加载so库的路径。 默认情况下编译器只会使用/lib和/usr/lib这两个目录下的库文件而通常通过源码包进行安装时如果不指定—prefix会将库安装在/usr/local目录下而又没有在文件/etc/ld.so.conf中添加/usr/local/lib这个目录。这样虽然安装了源码包但是使用时仍然找不到相关的.so库就会报错。也就是说系统不知道安装了源码包。 对于此种情况有两种解决办法 1在用源码安装时用--prefix指定安装路径为/usr/lib。这样的话也就不用配置PKG_CONFIG_PATH 2直接将路径/usr/local/lib路径加入到文件/etc/ld.so.conf文件的中。在文件/etc/ld.so.conf中末尾直接添加/usr/local/lib 现在就使用第二种方法来为刚才安装的动态库添加路径编辑/etc/ld.so.conf配置文件为其添加如下内容 [rootskycloud skycity]# vim /etc/ld.so.conf   /usr/local/pgsql/lib   /usr/local/geos-3.8.1/lib   /usr/local/proj-6.2.1/lib   /usr/local/json-c-0.13/lib   /usr/local/libxml2-2.9.9/lib   /usr/local/gdal-3.1.2/lib ​ 使用ldconfig命令将指定的动态函数库加载到内存中 [rootskycloud skycity]# ldconfig   2 编译安装postgis 解压postgis-3.0.2.tar.gz [rootskycloud postgis]# tar -zxvf postgis-3.0.2.tar.gz   进入到postgis-3.0.2运行configure需要指定相关参数说明如下 --prefixPREFIX PostGIS的安装位置。 注该参数当前已被破坏因为该软件包将仅安装到PostgreSQL安装目录中 --with-pgconfigFILE PostgreSQL提供了一个名为pg_config的实用程序 以使诸如PostGIS之类的扩展程序能够找到PostgreSQL安装目录 --with-gdalconfigFILE GDAL提供了一个gdal-config文件使PostGIS能定位到GDAL安装的目录 --with-geosconfigFILE GEOS是必需的几何图形库提供了一个名为geos-config的实用程序以使软件安装能够找到GEOS安装目录 --with-xml2configFILE LibXML是执行GeomFromKML / GML流程所需的库。将PostGIS指向特定的 xml2-configconfi文件以使软件安装可以找到LibXML安装目录 --with-projdirDIR 指定Proj4安装目录 --with-libiconvDIR 安装iconv的目录 --with-jsondirDIR JSON-C是PostGIS ST_GeomFromJSON支持所需的MIT许可的JSON库指定PostGIS将针对其构建的特定JSON-C安装目录 --with-pcredirDIR PCRE是address_standardizer扩展所需的BSD许可的Perl兼容正则表达式库指定PostGIS将针对其建立的特定PCRE安装目录 --with-gui 编译数据导入GUI需要GTK 2.0。为shp2pgsql创建shp2pgsql-gui图形界面 --without-raster 无需栅格支持即可编译 --without-topology 禁用拓扑支持 --with-gettextno 默认情况下PostGIS会尝试检测gettext支持并对其进行编译但是如果遇到导致加载程序损坏的不兼容问题则可以使用此命令完全禁用它 --with-sfcgalPATH 默认情况下没有此开关PostGIS将不会安装sfcgal支持。 PATH是一个可选参数它允许为sfcgal-config指定备用PATH。 --without-wagyu 可以禁用该库将改用GEOS 指定参数运行configure [rootskycloud postgis]# cd postgis-3.0.2/   [rootskycloud postgis-3.0.2]# ./configure --prefix/usr/local/postgis-3.0.2 --with-gdalconfig/usr/local/gdal-3.1.2/bin/gdal-config --with-pgconfig/usr/local/pgsql/bin/pg_config --with-geosconfig/usr/local/geos-3.8.1/bin/geos-config --with-projdir/usr/local/proj-6.2.1 --with-xml2config/usr/local/libxml2-2.9.9/bin/xml2-config --with-jsondir/usr/local/json-c-0.13 --with-sfcgal/usr/local/SFCGAL-1.3.8/bin/sfcgal-config 有警告但没有错 ​ 编译与安装 [rootskycloud postgis-3.0.2]# make clean;make   [rootskycloud postgis-3.0.2]# make install   在/usr/local查看文件列表并没有找到postgis相关的安装路径只是存在 /usr/local/pgsql/share/contrib/postgis-3 ​ 安装完成! 进入数据库 su - postgres Psql 输入: create extension postgis; 装postgis扩展 ​
http://www.zqtcl.cn/news/469894/

相关文章:

  • 网站做字工具WordPress搜索功能增强
  • 慢慢来做网站多少钱wordpress优化搜索引擎
  • 网页 网站 区别现在装宽带要多少钱
  • 黄金网站下载免费建设个人网站需要什么条件
  • 网站开发人员岗位职责网站维护报价单
  • 免费正能量不良网站推荐自建网站视频教程
  • 厦门物流网站建设南京宜电的网站谁做的
  • vps 网站备案手机界面设计素材
  • seo排名影响因素主要有灯塔seo
  • 济南哪家做网站小勇cms网站管理系统
  • sns社交网站注册做网站 提交源码 论坛
  • wordpress网站编辑semir是什么牌子
  • 做区块链的网站教育培训机构平台
  • 系统网站怎么做的seo竞争对手分析
  • 菏泽网站建设菏泽众皓网页开发工资
  • 网站建设需求分析酒类群晖wordpress 映射
  • 呼和浩特网站建设宣传wordpress淘宝客插件开发
  • 如何建网站赚钱做淘宝网店需要多少钱
  • 做个企业网站 优帮云移动商城个人中心手机卡进度查询
  • 深圳建设网站哪家最好国外互联网裁员
  • 网站重新建设的请示wordpress get_terms 排序
  • 建站模板免费下载wordpress 管理地址
  • 静安企业网站制作wordpress文章列表显示缩略图
  • html前端网站开发先做网站还是先解析
  • 怎么通过域名访问网站elision wordpress
  • 做邮轮的网站做游戏的软件app
  • 做网站用php还是python家装十大品牌排行榜
  • 湛江网站建设招聘创作者服务平台
  • 衡阳建网站高中制作网站怎么做
  • 上海网站排名团队推广链接跳转