jwj 发布的文章

最近有做一个项目,需要根据用户当前位置自动填写省市区,然后心里有选择:H5原生定位、百度地图、腾讯地图和高德地图。
既然是做公众号,还是比较偏向用腾讯自家的地图--腾讯地图。不是因为它好,主要就是怕用其它的不稳定。
为什么呢?主要怕腾讯那一天搞什么限制,限制使用其它地图,倒是定位功能无法正常使用。
觉得多虑的话,可以想想淘宝抖音为什么在微信打不开。好了,不说这么多废话了,回归正题~

一、申请key

申请网址:https://lbs.qq.com/dev/console/key/manage
调用地图服务需要用到KEY,所以需要申请。申请流程也很简单,不用怎么说了,直接打开上面的网址申请即可。

二、引入JS

<script charset="utf-8" src="https://apis.map.qq.com/tools/geolocation/min?key={你的KEY}&referer={你的网站名}"></script>

三、Javascript调用代码

官方有提供三种用法,几种用法经过测试,第三种相对比较稳定,所以这里写的是第三种用法。
官方文档:https://lbs.qq.com/tool/component-geolocation.html
第一次尝试根据GPS定位,如果失败(用户拒绝了获取精确位置),则尝试根据IP地址定位。
获取成功后,直接根据返回对象里数据拼接即可

let geolocation = new qq.maps.Geolocation();
geolocation.getLocation(
    // 获取成功回调
    function (position) {
        // {"module":"geolocation","type":"cache","adcode":"4402**","nation":"中国","province":"广东省","city":"韶关市","district":"**区","addr":"***","lat":24.***57,"lng":113.***708,"accuracy":3720}
        console.log(position);
    },
    // 获取失败回调
    function () {
        console.info('获取精确定位失败,尝试通过IP地址获取位置信息');

        geolocation.getIpLocation(
            // 获取成功回调
            function (position) {
                // {"module":"geolocation","adcode":440204,"type":"ip","nation":"中国","province":"广东省","city":"韶关市","district":"","addr":"","lat":24.80446,"lng":113.61095,"accuracy":10000}
                console.log(position);
            },
            // 获取失败回调
            function () {
                console.info('尝试通过IP地址获取位置信息失败');
                alert("您的当前位置获取失败,请手动填写安装地区");
            }
        )

    },
    {
        // 获取定位超时时间,超过这个时间则直接失败,单位:秒
        timeout: 30,
        failTipFlag: true
    }
);

最近,在阿里云的一台机子安装svn时,提示"Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"

# yum install -y subversion
Loaded plugins: fastestmirror
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
http://mirrors.cloud.aliyuncs.com/epel/7/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
http://mirrors.cloud.aliyuncs.com/centos/7/extras/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
http://mirrors.cloud.aliyuncs.com/centos/7/updates/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package subversion.x86_64 0:1.7.14-14.el7 will be installed
--> Processing Dependency: subversion-libs(x86-64) = 1.7.14-14.el7 for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_wc-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_subr-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_repos-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_ra_svn-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_ra_neon-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_ra_local-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_ra-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_fs_util-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_fs_fs-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_fs_base-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_fs-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_diff-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_delta-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_client-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libneon.so.27()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-3.el7_4.1 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package neon.x86_64 0:0.30.0-3.el7 will be installed
--> Processing Dependency: libgnutls.so.28(GNUTLS_2_12)(64bit) for package: neon-0.30.0-3.el7.x86_64
--> Processing Dependency: libgnutls.so.28(GNUTLS_1_4)(64bit) for package: neon-0.30.0-3.el7.x86_64
--> Processing Dependency: libproxy.so.1()(64bit) for package: neon-0.30.0-3.el7.x86_64
--> Processing Dependency: libpakchois.so.0()(64bit) for package: neon-0.30.0-3.el7.x86_64
--> Processing Dependency: libgnutls.so.28()(64bit) for package: neon-0.30.0-3.el7.x86_64
---> Package subversion-libs.x86_64 0:1.7.14-14.el7 will be installed
--> Running transaction check
---> Package gnutls.x86_64 0:3.3.26-9.el7 will be installed
--> Processing Dependency: trousers >= 0.3.11.2 for package: gnutls-3.3.26-9.el7.x86_64
--> Processing Dependency: libnettle.so.4()(64bit) for package: gnutls-3.3.26-9.el7.x86_64
--> Processing Dependency: libhogweed.so.2()(64bit) for package: gnutls-3.3.26-9.el7.x86_64
---> Package libproxy.x86_64 0:0.4.11-11.el7 will be installed
--> Processing Dependency: libmodman.so.1()(64bit) for package: libproxy-0.4.11-11.el7.x86_64
---> Package pakchois.x86_64 0:0.4-10.el7 will be installed
--> Running transaction check
---> Package libmodman.x86_64 0:2.0.1-8.el7 will be installed
---> Package nettle.x86_64 0:2.7.1-8.el7 will be installed
---> Package trousers.x86_64 0:0.3.14-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================
 Package                         Arch                   Version                          Repository            Size
====================================================================================================================
Installing:
 subversion                      x86_64                 1.7.14-14.el7                    base                 1.0 M
Installing for dependencies:
 apr                             x86_64                 1.4.8-3.el7_4.1                  base                 103 k
 apr-util                        x86_64                 1.5.2-6.el7                      base                  92 k
 gnutls                          x86_64                 3.3.26-9.el7                     base                 677 k
 libmodman                       x86_64                 2.0.1-8.el7                      base                  28 k
 libproxy                        x86_64                 0.4.11-11.el7                    base                  64 k
 neon                            x86_64                 0.30.0-3.el7                     base                 165 k
 nettle                          x86_64                 2.7.1-8.el7                      base                 327 k
 pakchois                        x86_64                 0.4-10.el7                       base                  14 k
 subversion-libs                 x86_64                 1.7.14-14.el7                    base                 922 k
 trousers                        x86_64                 0.3.14-2.el7                     base                 289 k

Transaction Summary
====================================================================================================================
Install  1 Package (+10 Dependent packages)

Total download size: 3.6 M
Installed size: 12 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
apr-1.4.8-3.el7_4.1.x86_64.rpm FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/apr-1.4.8-3.el7_4.1.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
apr-util-1.5.2-6.el7.x86_64.rp FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/apr-util-1.5.2-6.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
gnutls-3.3.26-9.el7.x86_64.rpm FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/gnutls-3.3.26-9.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
libmodman-2.0.1-8.el7.x86_64.r FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/libmodman-2.0.1-8.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
libproxy-0.4.11-11.el7.x86_64. FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/libproxy-0.4.11-11.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
neon-0.30.0-3.el7.x86_64.rpm   FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/neon-0.30.0-3.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
nettle-2.7.1-8.el7.x86_64.rpm  FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/nettle-2.7.1-8.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
pakchois-0.4-10.el7.x86_64.rpm FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/pakchois-0.4-10.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
subversion-1.7.14-14.el7.x86_6 FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/subversion-1.7.14-14.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
subversion-libs-1.7.14-14.el7. FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/subversion-libs-1.7.14-14.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
trousers-0.3.14-2.el7.x86_64.r FAILED
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/Packages/trousers-0.3.14-2.el7.x86_64.rpm: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.


Error downloading packages:
  neon-0.30.0-3.el7.x86_64: [Errno 256] No more mirrors to try.
  trousers-0.3.14-2.el7.x86_64: [Errno 256] No more mirrors to try.
  libmodman-2.0.1-8.el7.x86_64: [Errno 256] No more mirrors to try.
  subversion-1.7.14-14.el7.x86_64: [Errno 256] No more mirrors to try.
  libproxy-0.4.11-11.el7.x86_64: [Errno 256] No more mirrors to try.
  pakchois-0.4-10.el7.x86_64: [Errno 256] No more mirrors to try.
  apr-1.4.8-3.el7_4.1.x86_64: [Errno 256] No more mirrors to try.
  nettle-2.7.1-8.el7.x86_64: [Errno 256] No more mirrors to try.
  gnutls-3.3.26-9.el7.x86_64: [Errno 256] No more mirrors to try.
  apr-util-1.5.2-6.el7.x86_64: [Errno 256] No more mirrors to try.
  subversion-libs-1.7.14-14.el7.x86_64: [Errno 256] No more mirrors to try.

经过查询资料得知,mirrors.cloud.aliyuncs.com是阿里云ECS VPC 用户专用的镜像源域名。
那不能说停就停吧?如果停了对阿里云上所有的ECS应该都会有很大影响。
然后换了另外一台阿里云的机器测试,发现另一台服务也是用的这个镜像源域名,但是却使用正常。

再排查机器配置,发现DNS不一样
问题机器的DNS是223.5.5.5223.6.6.6
正常机器的DNS是100.100.2.136100.100.2.138

最后修改DNS为正常机器的

# cat /etc/resolv.conf
nameserver 100.100.2.136
nameserver 100.100.2.138

再重新执行安装,就正常安装了

# yum install -y subversion
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package subversion.x86_64 0:1.7.14-14.el7 will be installed
--> Processing Dependency: subversion-libs(x86-64) = 1.7.14-14.el7 for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_wc-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_subr-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_repos-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_ra_svn-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_ra_neon-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_ra_local-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_ra-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_fs_util-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_fs_fs-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_fs_base-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_fs-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_diff-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_delta-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libsvn_client-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libneon.so.27()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: subversion-1.7.14-14.el7.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-3.el7_4.1 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package neon.x86_64 0:0.30.0-3.el7 will be installed
--> Processing Dependency: libgnutls.so.28(GNUTLS_2_12)(64bit) for package: neon-0.30.0-3.el7.x86_64
--> Processing Dependency: libgnutls.so.28(GNUTLS_1_4)(64bit) for package: neon-0.30.0-3.el7.x86_64
--> Processing Dependency: libproxy.so.1()(64bit) for package: neon-0.30.0-3.el7.x86_64
--> Processing Dependency: libpakchois.so.0()(64bit) for package: neon-0.30.0-3.el7.x86_64
--> Processing Dependency: libgnutls.so.28()(64bit) for package: neon-0.30.0-3.el7.x86_64
---> Package subversion-libs.x86_64 0:1.7.14-14.el7 will be installed
--> Running transaction check
---> Package gnutls.x86_64 0:3.3.29-9.el7_6 will be installed
--> Processing Dependency: trousers >= 0.3.11.2 for package: gnutls-3.3.29-9.el7_6.x86_64
--> Processing Dependency: libnettle.so.4()(64bit) for package: gnutls-3.3.29-9.el7_6.x86_64
--> Processing Dependency: libhogweed.so.2()(64bit) for package: gnutls-3.3.29-9.el7_6.x86_64
---> Package libproxy.x86_64 0:0.4.11-11.el7 will be installed
--> Processing Dependency: libmodman.so.1()(64bit) for package: libproxy-0.4.11-11.el7.x86_64
---> Package pakchois.x86_64 0:0.4-10.el7 will be installed
--> Running transaction check
---> Package libmodman.x86_64 0:2.0.1-8.el7 will be installed
---> Package nettle.x86_64 0:2.7.1-8.el7 will be installed
---> Package trousers.x86_64 0:0.3.14-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================================================================
 Package                                   Arch                             Version                                    Repository                         Size
===============================================================================================================================================================
Installing:
 subversion                                x86_64                           1.7.14-14.el7                              base                              1.0 M
Installing for dependencies:
 apr                                       x86_64                           1.4.8-3.el7_4.1                            base                              103 k
 apr-util                                  x86_64                           1.5.2-6.el7                                base                               92 k
 gnutls                                    x86_64                           3.3.29-9.el7_6                             updates                           680 k
 libmodman                                 x86_64                           2.0.1-8.el7                                base                               28 k
 libproxy                                  x86_64                           0.4.11-11.el7                              base                               64 k
 neon                                      x86_64                           0.30.0-3.el7                               base                              165 k
 nettle                                    x86_64                           2.7.1-8.el7                                base                              327 k
 pakchois                                  x86_64                           0.4-10.el7                                 base                               14 k
 subversion-libs                           x86_64                           1.7.14-14.el7                              base                              922 k
 trousers                                  x86_64                           0.3.14-2.el7                               base                              289 k

Transaction Summary
===============================================================================================================================================================
Install  1 Package (+10 Dependent packages)

Total download size: 3.6 M
Installed size: 12 M
Downloading packages:
(1/11): apr-1.4.8-3.el7_4.1.x86_64.rpm                                                                                                  | 103 kB  00:00:00
(2/11): libmodman-2.0.1-8.el7.x86_64.rpm                                                                                                |  28 kB  00:00:00
(3/11): libproxy-0.4.11-11.el7.x86_64.rpm                                                                                               |  64 kB  00:00:00
(4/11): apr-util-1.5.2-6.el7.x86_64.rpm                                                                                                 |  92 kB  00:00:00
(5/11): neon-0.30.0-3.el7.x86_64.rpm                                                                                                    | 165 kB  00:00:00
(6/11): nettle-2.7.1-8.el7.x86_64.rpm                                                                                                   | 327 kB  00:00:00
(7/11): pakchois-0.4-10.el7.x86_64.rpm                                                                                                  |  14 kB  00:00:00
(8/11): gnutls-3.3.29-9.el7_6.x86_64.rpm                                                                                                | 680 kB  00:00:00
(9/11): subversion-1.7.14-14.el7.x86_64.rpm                                                                                             | 1.0 MB  00:00:00
(10/11): trousers-0.3.14-2.el7.x86_64.rpm                                                                                               | 289 kB  00:00:00
(11/11): subversion-libs-1.7.14-14.el7.x86_64.rpm                                                                                       | 922 kB  00:00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                           12 MB/s | 3.6 MB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : apr-1.4.8-3.el7_4.1.x86_64                                                                                                                 1/11
  Installing : apr-util-1.5.2-6.el7.x86_64                                                                                                                2/11
  Installing : pakchois-0.4-10.el7.x86_64                                                                                                                 3/11
  Installing : nettle-2.7.1-8.el7.x86_64                                                                                                                  4/11
  Installing : libmodman-2.0.1-8.el7.x86_64                                                                                                               5/11
  Installing : libproxy-0.4.11-11.el7.x86_64                                                                                                              6/11
  Installing : trousers-0.3.14-2.el7.x86_64                                                                                                               7/11
  Installing : gnutls-3.3.29-9.el7_6.x86_64                                                                                                               8/11
  Installing : neon-0.30.0-3.el7.x86_64                                                                                                                   9/11
  Installing : subversion-libs-1.7.14-14.el7.x86_64                                                                                                      10/11
  Installing : subversion-1.7.14-14.el7.x86_64                                                                                                           11/11
  Verifying  : trousers-0.3.14-2.el7.x86_64                                                                                                               1/11
  Verifying  : libmodman-2.0.1-8.el7.x86_64                                                                                                               2/11
  Verifying  : neon-0.30.0-3.el7.x86_64                                                                                                                   3/11
  Verifying  : subversion-1.7.14-14.el7.x86_64                                                                                                            4/11
  Verifying  : subversion-libs-1.7.14-14.el7.x86_64                                                                                                       5/11
  Verifying  : apr-util-1.5.2-6.el7.x86_64                                                                                                                6/11
  Verifying  : nettle-2.7.1-8.el7.x86_64                                                                                                                  7/11
  Verifying  : pakchois-0.4-10.el7.x86_64                                                                                                                 8/11
  Verifying  : gnutls-3.3.29-9.el7_6.x86_64                                                                                                               9/11
  Verifying  : apr-1.4.8-3.el7_4.1.x86_64                                                                                                                10/11
  Verifying  : libproxy-0.4.11-11.el7.x86_64                                                                                                             11/11

Installed:
  subversion.x86_64 0:1.7.14-14.el7

Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7_4.1                 apr-util.x86_64 0:1.5.2-6.el7        gnutls.x86_64 0:3.3.29-9.el7_6       libmodman.x86_64 0:2.0.1-8.el7
  libproxy.x86_64 0:0.4.11-11.el7              neon.x86_64 0:0.30.0-3.el7           nettle.x86_64 0:2.7.1-8.el7          pakchois.x86_64 0:0.4-10.el7
  subversion-libs.x86_64 0:1.7.14-14.el7       trousers.x86_64 0:0.3.14-2.el7

Complete!

一、检查是否已安装

# svnserve --version

如果出现下列提示,则代表没有安装

-bash: svnserve: command not found

如果出现下列提示,则代表已经安装了,直接跳到四步

svnserve, version 1.7.14 (r1542130)
   compiled Apr 11 2018, 02:40:28

Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository back-end (FS) modules are available:

* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

二、安装

# yum install -y subversion

三、再次检查是否已安装

# svnserve --version

四、创建并进入到储存版本库的目录

# mkdir /data/svn-repository
# cd /data/svn-repository

五、创建一个版本库(项目)
test为版本库的名称

# svnadmin create test

六、显示版本库目录的文件列表

# ls test
名称类型说明
conf目录配置文件目录
conf/authz文件负责账号权限的管理,控制账号是否读写权限
conf/passwd文件负责账号和密码的用户名单管理
conf/svnserve.conf文件版本库配置文件
db目录版本数据存储目录
hooks目录版本库钩子脚本文件目录
locks目录db锁文件和db_logs锁文件的目录,用来追踪存取文件库的客户端
format文件存储一个整数的文件,此整数代表库层次结构版本
README.txt文件说明文件

七、设置全局配置
默认情况下,都是使用版本库目录下conf目录的配置,一两个项目还没问他,但是项目一多,管理就很麻烦了。
先把配置目录复制出来,作为全局配置

# cp -R test/conf conf

八、新增该版本库的用户
打开passwd文件

# vi conf/passwd

在文件末新增一行,输入用户名jwj和密码123456

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
# harry = harryssecret
# sally = sallyssecret
jwj = qq2254

九、设置版本库用户的权限
打开authz文件

# vi conf/authz

jwj用户赋予test版本库根目录的读写权限

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
###  - a single user,
###  - a group of users defined in a special [groups] section,
###  - an alias defined in a special [aliases] section,
###  - all authenticated users, using the '$authenticated' token,
###  - only anonymous users, using the '$anonymous' token,
###  - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

[test:/]
jwj = rw

当然,还有更多权限的写法,下面列出部分,想详细了解的话,请查阅其他资料

十、设置svn服务开机自启

#vi /etc/init.d/svn

然后输入以下内容

#!/bin/sh
# chkconfig: 2345 85 85
# processname: svn

svn_bin=/bin
svn_port=3690
svn_home=/mnt/svn-repository
svn_config=/mnt/svn-repository/conf/svnserve.conf

if [ ! -f "$svn_bin/svnserve" ]
then
    echo "svnserver startup: cannot start"
exit
fi

case "$1" in
    start)
        echo "Starting svnserve..."
        $svn_bin/svnserve -d -r $svn_home --config-file $svn_config --listen-port $svn_port
        echo "Successfully!"
    ;;
    stop)
        echo "Stoping svnserve..."
        killall svnserve
        echo "Successfully!"
    ;;
    restart)
        $0 stop
        $0 start
    ;;
    *)
        echo "Usage: svn { start | stop | restart } "
        exit 1
    ;;
esac

给文件添加可执行权限

# chmod +x /etc/init.d/svn

开启开机自启动

# chkconfig svn on

十一、启动svn

# service svn start

ThinkPHP6.0的前身是ThinkPHP5.2,因为6.0版本改动比较大,所以直接将原定的5.2改成6.0
目前ThinkPHP6还没正式发布,还是Rc阶段,更新也比较频繁。
根据官方消息,计划在今年的5月1日之前发布第二个RC版本,届时还将迎来新版的手册,并且大部分扩展也会基本升级完成。

安装

从ThinkPHP5.1起,需要通过composer安装,不再提供安装包。
目前ThinkPHP6还没正式发布,还是Rc阶段,所以需要加上-dev选项。
以下命令大概意思是,在tp目录创建topthink/think项目,版本是6.0开发版

composer create-project topthink/think tp 6.0.*-dev

相比之前版本,6.0版本将框架放到了vendor目录,挺好的。

目录介绍

│  build.php                自动生成定义文件(参考)
│  composer.json composer   定义文件
│  composer.lock
│  LICENSE.txt              授权说明文件
│  README.md                README 文件
│  think                    命令行入口文件
├─app                       应用目录
│  │  .htaccess
│  │  common.php            公共函数文件
│  │  event.php             事件监听配置文件
│  │  middleware.php        中间件配置文件
│  └─controller             控制器目录
│          Index.php        控制器文件
├─config                    配置文件目录
│      app.php              应用配置
│      cache.php            缓存配置
│      console.php          控制台配置
│      cookie.php           Cookie配置
│      database.php         数据库配置
│      log.php              日志配置
│      route.php            应用路由设置
│      session.php          Session配置
│      template.php         模板引擎配置
│      trace.php            Trace配置
├─extend                    扩展类库目录
├─public                    WEB目录(对外访问目录)
│  │  index.php             入口文件
│  └─router.php             快速测试文件
├─route                     路由配置目录
├─runtime                   应用的运行时目录
└─vendor                    第三方类库目录(Composer)
    └─topthink
        ├─framework         ThinkPHP框架系统
        ├─think-installer   ThinkPHP安装器
        ├─think-template    模板引擎扩展
        └─think-view        视图扩展

配置

配置方便总体来说,改变不是很大。主要改变就是不支持动态配置了,并且获取配置的方法名变动了一下。
官方介绍得知,说是不能动态配置,但又可以通过以下方法写入配置,有些许矛盾。

Config::set([
    'name'  => 'jwj',
    'email' => 'jwjbjg@gmail.com',
    'blog'  => 'blog.ll00.cn'
], 'route');

没深入研究,但看代码得知,应该是将参数里的数组覆盖配置文件里配置的。总之肯定是没之前那么随心所欲了。
然后还有一点,不能跨模块读取配置了。

应用/控制器/方法/视图模板

应用

6.0版本已经没有模块了,取之而代的是应用,并且框架默认也关闭了多应用模式。
因为默认就是单应用,所以app目录下,直接就是控制器/视图/模型的目录了。
如果需要开启多应用,需要在入口文件里增加multi()方法,并且创建应用目录,将控制器/视图/模型等目录移动到应用目录下。
其实就是跟之前的模块差不多,只是换了个名称,但也预示着这块将会有大的改动。

入口文件代码:

<?php
namespace think;

// 引入Composer的autoload.php
require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new App())->http;

// 开启多应用模式
$http->multi(true);

// 执行应用程序
$response = $http->run();

// 发送数据到客户端
$response->send();

// HTTP应用
$http->end($response);

控制器

控制器对于我来说,是没有什么变化和影响的,唯一的影响就是继承的控制器类变了。
6.0版本的think\Controller不再封装视图方法,就是原来的fetchassign等视图方法不再包含在think\Controller里。
如果需要继续使用这些视图方法,需要改为继承think\ViewController类,或者使用助手函数或自己封装。

方法

方法对于我来说,也是没有什么变化和影响的,唯一的影响就是视图和模板的变动了。

视图和模板

视图和模板这个变动比较大,现在直接从框架核心移出去了,变成了扩展。
但5.1版本的时候就开始慢慢分离了,所以也不会很意外。
然后从用法方面来说是跟之前差不多,就是控制器那块的变化。