• 在Debian 10 Buster上设置OpenStreetMap(OSM)平铺服务器

    OpenStreetMap(OSM)是一个用户贡献的、可自由编辑的世界地图。你可以把它看作是谷歌地图的开源和自托管替代品。本教程将向您展示如何在Debian 10上构建自己的OpenStreetMap tile服务器,这样您就不必使用专有的地图服务。 OpenStreetMap功能 OpenStreetMap的数据覆盖了全世界,因此可以方便地支持任何国家或每个国家的用户。 OpenStreetMap每天每小时每分钟都会更新,您可以实时获得这些更新。 OpenStreetMap数据是免费和开放的,不收取订阅费和页面浏览费。 OpenStreetMap数据丰富而详细,包含大量与地面人员相关的数据——收集数据的人员。 先决条件/硬件要求 所需的RAM和磁盘空间取决于要使用哪个国家的地图。例如 英国地图至少需要12G内存和100GB磁盘空间。 整个行星地图至少需要32G RAM和1TB SSD(固态驱动器)。用旋转硬盘来绘制整个地球地图是不可行的。 如果要在web浏览器中预渲染分幅以加快地图加载速度,则需要更多磁盘空间,这是强烈建议的。查看此磁贴磁盘使用情况页面,查看预渲染磁贴需要多少磁盘空间。例如,如果要为行星地图预渲染从缩放级别0到缩放级别15的平铺,则需要额外的460 GB磁盘空间。 另外需要注意的是,将大型地图数据(如整个地球)导入PostgreSQL数据库需要很长时间。考虑添加更多的RAM,特别是使用SSD,而不是旋转硬盘来加速导入过程。 如果你打算主持整个世界地图,我建议你从康塔博购买超大VPS,康塔博以 10核CPU 60 GB内存 1.6 TB英特尔Optane SSD 每月只需26.99欧元。 第一步:升级软件 在服务器上进行任何主要工作之前,更新服务器软件始终是一种好的做法。通过SSH登录服务器并运行以下命令。 sudo-apt更新;sudo-apt升级 如果遇到以下错误, perl:警告:退回到备用语言环境(“en_US.UTF-8”)。perl:警告:设置区域设置失败。perl:警告:请检查您的区域设置:LANGUAGE=(unset)、LC_ALL=(unset)、LC_MONETARY=“zh_CN.UTF-8”、LC_ADDRESS=“zh_CN.UTF-8”、LC_TELEPHONE=“zh_CN.UTF-8”、LC_NAME=“zh_CN.UTF-8”、LC_IDENTIFICATION=“zh_CN.UTF-8”、LC_NUMERIC=“zh_CN.UTF-8”、LC_PAPER=“zh_CN.UTF-8”,LANG=“en_US.UTF-8”支持并安装在您的系统上。perl:警告:退回到备用语言环境(“en_US.UTF-8”)。 这意味着您的本地计算机正在尝试将locale环境变量发送到debian VPS,但debian没有安装locale。要解决此问题,请编辑SSH守护程序配置文件。 sudo nano/etc/ssh/sshd_config 向下滚动到最后,您将看到下面一行,它告诉SSH守护进程从SSH客户端接受环境变量。 接受朗信用证_* 将其更改为以下内容,使SSH守护进程不接受环境变量。 接受号 保存并关闭文件。然后重启SSH守护进程。 sudo systemctl重启ssh 注销并重新登录。您将不再看到区域设置错误。 第2步:安装PostgreSQL数据库服务器和PostGIS扩展 我们将使用PostgreSQL存储地图数据。PostGIS是PostgreSQL的地理空间扩展。运行以下命令来安装它们。 sudo apt安装postgresql postgresql contrib postgis postgresql-11-postgis-2.5 PostgreSQL数据库服务器将自动启动并侦听127.0.0.1:5432。安装过程中将在操作系统上创建postgres用户。它是PostgreSQL数据库服务器的超级用户。默认情况下,该用户没有密码,也不需要设置密码,因为您可以使用sudo切换到postgres用户并登录到PostgreSQL server。 sudo-u postgres-i 现在可以创建PostgreSQL数据库用户osm。 createuser osm 然后创建一个名为gis的数据库,同时让osm成为数据库的所有者-UTF8指定数据库中使用的字符编码方案为UTF8。 createdb-E UTF8-O osm gis 接下来,为gis数据库创建postgis和hstore扩展。 psql-c“创建扩展postgis-d gis psql-c“创建扩展存储-三维地理信息系统 将osm设置为表所有者。 psql-c“将表空间参考系统所有者更改为osm-三维地理信息系统 退出postgres用户。 出口 在操作系统上创建osm用户,以便平铺服务器可以作为osm用户运行。以下命令将创建一个没有密码的系统用户。 sudo adduser——系统osm 第3步:下载地图样式表和地图数据 切换到osm的主目录。 cd/home/osm/ 使用git将最新的CartoCSS地图样式表下载到osm用户的主目录。 sudo apt安装git git克隆https://github.com/gravitystorm/openstreetmap-carto.git 如果在运行上述命令时看到“权限被拒绝”错误,则可以使用以下命令授予权限。用真实用户名替换用户名。 sudo apt install acl sudo setfacl-R-mu:username:rwx/home/osm/ 接下来,运行以下命令以PBF(ProtoBufBinary)格式下载整个行星(50G)的地图数据。 wget-chttp://planet.openstreetmap.org/pbf/planet-latest.osm.pbf 请注意openstreetmap的下载速度。org当前限制为2048kb/s。您可以从另一个镜像下载植物地图,如 wget-chttps://download.bbbike.org/osm/planet/planet-latest.osm.pbf 如果你想要一张各个国家/州/省/市的地图,请访问http://download.geofabrik.de.还有,自行车。org以不同的格式提供了全球200多个城市和地区的摘录。例如,使用以下命令下载英国地图数据(1.1G)。 wget-chttp://download.geofabrik.de/europe/great-britain-latest.osm.pbf 第4步:优化PostgreSQL Server性能 导入过程可能需要一些时间。为了加快这个过程,我们可以调整一些PostgreSQL server设置以提高性能。编辑PostgreSQL主配置文件。 sudo nano/etc/postgresql/11/main/postgresql。形态 首先,我们应该更改共享缓冲区的值。默认设置为: 共享缓冲区=128MB 这个太小了。经验法则是将其设置为总RAM的25%(不包括交换空间)。例如,我的VPS有60G RAM,所以我将其设置为: 共享缓冲区=15GB 找到下面这行。 #工作_内存=4MB#维护_工作_内存=64MB 同样,该值太小。我使用以下设置。 工作记忆=1GB维护记忆=8GB工作记忆=8GB 然后找到下面一行。 #有效缓存大小=4GB 如果你像我一样有很多RAM,你可以为有效的缓存大小设置一个更高的值,比如20G。 有效缓存大小=20GB 保存并关闭文件。重新启动PostgreSQL以使更改生效。 sudo systemctl重启postgresql 默认情况下,PostgreSQL会尝试在RAM中使用巨大的页面。然而,Linux默认情况下不会分配巨大的页面。检查PostgreSQL的进程ID。 sudo head-1/var/lib/postgresql/11/main/postmaster。pid 样本输出: 7031 然后检查该进程ID的峰值。 grep^VmPeak/proc/7031/status 样本输出: 峰值:16282784 kB 这是PostgreSQL将使用的峰值内存大小。现在检查Linux中巨大页面的大小。 cat/proc/meminfo | grep-i巨大 样本输出: AnonHugePages:0 kB ShmemHugePages:0 kB HugePages_总计:0 HugePages_免费:0 HugePages_Rsvd:0 HugePages_剩余:0 HugePages大小:2048 kB Hugetlb:0 kB 我们可以计算出我们需要多少巨大的页面。将VmPeak值除以巨大页面的大小:16282784KB/2048KB=7950。编辑/etc/sysctl。conf文件。 sudo nano/etc/sysctl。形态 添加以下行以分配7950个大页面。 虚拟机。nr_hugepages=7950 保存并关闭文件。然后应用更改。 sudo sysctl-p 如果你再次查看meminfo, cat/proc/meminfo | grep-i巨大 我们可以看到有7950个巨大的页面可用。 AnonHugePages:0 kB ShmemHugePages:0 kB HugePages_总计:7950 HugePages_免费:7950 HugePages_Rsvd:0 HugePages_剩余:0 HugePages大小:2048 kB Hugetlb:16281600 kB 重新启动PostgreSQL以使用大型页面。 sudo systemctl重启postgresql 在远程服务器上使用屏幕 由于导入过程可能需要很长时间,并且您的计算机可能已断开与Internet的连接,因此建议使用screen实用程序使会话保持活动状态。Debian 10服务器上的安装屏幕: sudo apt安装屏幕 然后启动屏幕: 屏幕 第一次启动时,您将看到一个介绍文本,只需按Enter键即可结束。然后你就可以像往常一样运行命令了。 步骤5:将地图数据导入PostgreSQL 要导入地图数据,我们需要安装osm2pgsql,将OpenStreetMap数据转换为支持postGIS的PostgreSQL数据库。 sudo apt安装osm2pgsql 向postgres用户授予权限。 sudo setfacl-R-mu:postgres:rwx/home/osm/ 切换到postgres用户。 sudo-u postgres-i 运行以下命令将地图样式表和地图数据加载到gis数据库中。最新取代英国。奥斯曼。pbf与您自己的地图数据文件。 osm2pgsql--slim-dGIS--hstore--multi-geometry--number processs 10--tag transform script/home/osm/openstreetmap carto/openstreetmap carto。lua——style/home/osm/openstreetmap carto/openstreetmap carto。款式-C 32000/家居/osm/英国最新款。奥斯曼。pbf 哪里 --苗条模式:在苗条模式下运行,而不是在正常模式下运行。如果希望将来使用OSM更改文件(OSC)更新地图数据,则需要此选项。 -d gis:选择数据库。 --hstore:将不带列的标记添加到PostgreSQL表的另一个hstore(key/value)列中 --多重几何图形:在postgresql表中生成多重几何图形特征。 --样式:指定样式文件的位置 --进程数:服务器上的CPU核心数。我有10个。 -C标志以兆字节为单位指定缓存大小。它应该是你机器上可用内存的70%左右。缓存大小越大,导入速度越快。例如,我的服务器有60GB的空闲RAM,所以我可以指定-C 32000。请注意,PostgreSQL将需要用于共享缓冲区的RAM。使用此公式计算缓存大小应该有多大:(总RAM-PostgreSQL共享_缓冲区)*70% 最后,需要指定地图数据文件的位置。 命令输出: 如果要导入完整的行星地图数据,请使用--drop选项和--flat nodes选项来提高导入速度。请注意--flat nodes选项不适用于小贴图。 osm2pgsql--slim-dGIS--drop--flat nodes/home/osm/nodes。cache--hstore--multi-geometry--number processs 10--tag transform script/home/osm/openstreetmap carto/openstreetmap carto。lua——style/home/osm/openstreetmap carto/openstreetmap carto。款式-C 32000/家居/osm/planet最新款式。奥斯曼。pbf 在导入过程中,RAM的使用将逐渐增加。 现在,您可能不需要在服务器上执行其他操作。由于您使用的是Screen,所以可以按Ctrl+A,释放这些键,然后按D键从当前屏幕会话中分离。您将看到如下消息。 [与32113.pts-1.buster分离] 这告诉我之前的屏幕会话ID是32113。您可以从SSH会话中注销,甚至可以关闭计算机。别担心,OSM导入过程仍在运行。当需要返回并检查导入进度时,请将SSH连接到服务器并运行以下命令以获取上一个屏幕会话ID。 屏幕-ls 样本输出: 屏幕显示:32113。pts-1。buster(2020年5月19日03:45:29下午)(已分离)1个插座插入/运行/屏幕/S-linuxbabe。 然后可以重新连接到上一个屏幕会话。 屏幕-r 32113 这样你就能继续工作了。导入完成后,将gis数据库的所有权限授予osm用户。 psql-c“将模式公共中所有表的所有权限授予osm-三维地理信息系统 退出postgres用户。 出口 注意:如果osm2pgsql导入尚未完成,请不要继续执行步骤6。 第6步:安装mod_tile和Renderd mod_tile是一个Apache模块,需要为tiles提供服务,renderd是渲染OpenStreetMap tiles的渲染守护进程。默认的Debian Buster存储库不包括mod_tile和renderd,因此我们需要编译源代码。 首先,安装构建依赖项。 sudo apt安装git autoconf libtool libmapnik dev apache2 dev 然后从Github克隆存储库。 git克隆https://github.com/openstreetmap/mod_tile.gitcd mod_瓷砖/ 编辑一个文件。 纳米debian/compat 默认情况下,兼容性级别设置为7。但是,您应该使用兼容性级别9,所以将数字7更改为9。保存并关闭文件。 然后编辑另一个文件。 nano debian/changelog 找到第一行。 libapache2 mod tile(0.4-12~精度2)精确;紧急程度=低 将其更改为以下内容。0.4-12应改为0.4.12,精度2应改为buster。 libapache2 mod tile(0.4.12~buster)精确;紧急程度=低 保存并关闭文件。然后编译源代码包。 /自动发电。sh sudo dpkg建筑包-加州大学-美国 现在将有两个。deb包在上层目录中。用apt安装它们。 光盘sudo-apt-install/libapache2-mod-tile_0.4.12~buster_amd64。黛布/renderd_0.4.12~buster_amd64。黛布 在安装过程中,它将安装Apache web服务器,并询问您是否希望在Apache配置中启用mod_tile。选择Yes并按Enter键。这将为mod_tile(/etc/apache2/sites available/tileserver_site.conf)创建一个Apache配置文件。 渲染守护进程将自动启动,如下所示: systemctl状态呈现 第7步:生成Mapnik样式表 安装所需的软件包。 sudo apt install curl解压gdal bin mapnik utils libmapnik dev python3 pip python3-psycopg2 我们还需要使用以下命令从上游存储库安装nodejs和npm。 curl-sLhttps://deb.nodesource.com/setup_12.x| sudo-E bash-sudo apt get install-y nodejs 然后用npm安装carto软件包。 sudo npm安装-g carto 安装yaml Python模块。 sudo-H pip3安装pyyaml 切换到postgres用户。 sudo-u postgres-i 将Cd放入carto style目录。 cd/home/osm/openstreetmap carto/ 获取形状文件。 脚本/获取外部数据。py 如果在运行上述命令时遇到以下错误消息,则说明您存在DNS问题。只需等待几分钟,然后再次运行Python脚本。 未能建立新连接:[Errno-3]名称解析暂时失败 现在使用carto map样式表编译器构建Mapnik XML样式表。 carto项目。mml>风格xml 将gis数据库的所有权限授予osm用户。 psql-c“将模式公共中所有表的所有权限授予osm-三维地理信息系统 退出postgres用户。 出口 第8步:安装字体 您需要安装ttf dejavu软件包。 sudo apt安装ttf dejavu 要显示非拉丁字符,请安装以下软件包。 sudo apt安装字体noto cjk字体noto cjk额外字体noto提示字体noto未连接ttf unifont 步骤9:配置renderd 编辑渲染配置文件。 sudo nano/etc/renderd。形态 在[renderd]部分,根据服务器上的CPU内核数更改线程数。 线程数=10 在[default]部分,将XML和HOST的值更改为以下值。请注意,以分号(;)开头的行这些都是评论。 XML=/home/osm/openstreetmap carto/style。xml HOST=tile。你的领域。通用域名格式 在[mapnik]部分,将plugins_dir的值更改为以下值。 plugins_dir=/usr/lib/mapnik/3.0/input/ 您可以使用以下命令打印默认的输入插件目录。 mapnik config——输入插件 如果要显示非拉丁字符,最好将字体设置更改为以下内容。 font_dir=/usr/share/fonts/truetype font_dir_recurse=true 保存并关闭文件。然后编辑init脚本文件 sudo nano/etc/init。d/renderd 找到下面这行。 RUNASUSER=www数据 将用户更改为osm。这是从PostgreSQL数据库加载地图数据所必需的。 RUNASUSER=osm 还要设置renderd配置文件的路径。 DAEMON_ARGS=“-c etc/renderd.conf” 保存并关闭文件。将osm设置为/var/lib/mod_tile/目录的所有者,该目录将保存渲染的tile文件。 sudo chown osm/var/lib/mod_tile/-R 然后重新启动renderd服务。 sudo systemctl守护进程重新加载sudo systemctl restart renderd 你需要查看renderd的日志。 sudo journalctl-欧盟趋势 确保renderd在重启后不会在日志中产生任何错误,否则地图将不会显示。 第10步:配置Apache 编辑OSM虚拟主机文件。 sudo nano/etc/apache2/sites available/tileserver_site。形态 将服务器名更改为您自己的域名,如tile。你的领域。通用域名格式。您还需要为此子域创建DNS记录。 服务器名互动程序。你的领域。通用域名格式 保存并关闭文件。重启Apache。 sudo systemctl重启apache2 然后在web浏览器地址栏中键入 瓦片你的领域。com/osm/0/0/0。巴布亚新几内亚 你应该看到世界地图的瓷砖。恭喜!您刚刚成功构建了自己的OSM磁贴服务器。 如果已启用UFW防火墙,请确保使用以下命令打开端口80和443。 sudo ufw允许80443/tcp 如果您看到404 not found错误,只需等待几分钟,在浏览器中刷新页面,它应该能够加载世界地图的平铺。如果仍然无法加载,则重新启动renderd服务(sudo systemctl restart renderd)。 第11步:显示平铺的网络地图 平铺网络地图在OpenStreetMap术语中也称为slippy地图。有两个免费的开源JavaScript地图库可用于tile服务器:OpenLayer和传单。传单的优点是使用简单,而且地图便于移动。 露天层 要使用OpenLayer显示你的slippy地图,请从OpenLayer下载JavaScript和CSS。组织并将其解压缩到webroot文件夹。 cd/var/www/sudo wgethttps://github.com/openlayers/openlayers/releases/download/v5.3.0/v5.3.0.zipsudo解压v5。3.0.拉链 接下来,创建索引。html文件。 sudo nano/var/www/index。html 在文件中粘贴以下HTML代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。 <!DOCTYPE html&gt&书信电报;html&gt&书信电报;头&gt&书信电报;meta charset=“UTF-8”大于&书信电报;标题>无障碍地图&lt/标题&gt&书信电报;link rel=“stylesheet”href=”http://tile.your-domain.com/v5.3.0/css/ol.css“type=“text/css”><script src=”http://tile.your-domain.com/v5.3.0/build/ol.js“></script><style>a.skipling{位置:绝对;剪辑:rect(1px,1px,1px,1px);填充:0;边框:0;高度:1px;宽度:1px;溢出:隐藏;}”a、 skiplink:focus{clip:auto;height:auto;width:auto;background color:#fff;padding:0.3em;}#地图:焦点{轮廓:#4A74A8固体0.15em;}&lt/风格&gt&lt/头&gt&书信电报;车身&gt&书信电报;a class=“skipling”href=“#map”>转到地图&lt/a&gt&书信电报;div id=“map”class=“map”tabindex=“0”&gt&lt/部门&gt&书信电报;按钮id=“缩小”>缩小&lt/按钮&gt&书信电报;按钮id=“放大”>放大&lt/按钮&gt&书信电报;脚本>var map=新ol。Map({layers:[new ol.layer.Tile({source:new ol.source.OSM({url:'http://tile.your-domain.com/osm/{z} /{x}/{y}。png'})}),目标:'map',控件:ol。控制默认值({attributeoptions:/**@type{olx.control.attributeoptions}*/({collapsable:false})),视图:new ol。视图({center:[244780.245088823557386452.183179816],zoom:5});文件getElementById(“缩小”)。onclick=function(){var view=map.getView();var zoom=view.getZoom();view.setZoom(zoom-1);};文件getElementById(“放大”)。onclick=function(){var view=map.getView();var zoom=view.getZoom();view.setZoom(zoom+1);}&lt/脚本&gt&lt/车身&gt&lt/html> 保存并关闭文件。现在你可以通过在浏览器地址栏中输入你的子域来查看你的拖拉地图。 瓦片你的领域。通用域名格式 或 瓦片你的领域。com/index。html 传单 要使用Leftlet显示slippy地图,请从leftletjs下载JavaScript和CSS。com并将其解压缩到webroot文件夹。 cd/var/www/sudo wgethttp://cdn.leafletjs.com/leaflet/v1.7.1/leaflet.zipsudo解压传单。拉链 接下来,创建索引。html文件。 sudo nano/var/www/index。html 在文件中粘贴以下HTML代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。 <html&gt&书信电报;头&gt&书信电报;meta charset=“UTF-8”大于&书信电报;标题>我的第一个osm&lt/标题&gt&书信电报;link rel=“stylesheet”type=“text/css”href=“传单.css”/&gt&书信电报;script type=“text/javascript”src=“ployate.js”&gt&lt/脚本&gt&书信电报;风格&gt#地图{宽度:100%;高度:100%}&lt/风格&gt&lt/头&gt&书信电报;车身&gt&书信电报;div id=“map”&gt&lt/部门&gt&书信电报;脚本>var map=L.map('map')。setView([55,8],5);蒂莱莱耶http://tile.your-domain.com/osm/{z} /{x}/{y}。png',{maxZoom:18})。addTo(地图)&lt/脚本&gt&lt/车身&gt&lt/html> 保存并关闭文件。现在,您可以通过在浏览器中键入服务器IP地址来查看拖沓的地图。 瓦片你的领域。通用域名格式 或 瓦片你的领域。com/index。html 步骤12:预渲染瓷砖 动态渲染平铺将增加在web浏览器中加载地图的时间。要预渲染平铺而不是动态渲染,请使用以下render_list命令。使用-z和-z标志指定缩放级别,并根据服务器上的CPU内核数替换线程数。Render_list通过向渲染守护进程发送请求来渲染贴图分幅列表。预渲染的磁贴将缓存在/var/lib/mod_tile目录中。 render_list-m default-a-z 0-z 19--num threads=10 如果以后更新了贴图数据,可以使用--force选项再次预渲染所有分片。 render_list-m default-a-z 0-z 19--num threads=10--force 要在背景中渲染贴图分幅,请添加&结尾的符号。 render_list-m default-a-z 0-z 19--num threads=10& 现在你可以关闭终端窗口了。要检查呈现进度,请打开另一个SSH会话,然后运行以下命令。 sudo journalctl-欧盟趋势 上面的命令将显示renderd服务的最新日志。以下几行显示我的OSM服务器现在正在以缩放级别12渲染地图分幅。 renderd[20838]:调试:开始平铺默认值12 1008-1015 4056-4063,新metatile renderd[20838]:渲染投影坐标12 1008 4056-&gt-10175297.205328 |-19724422.274944-10097025.688364 |-19646150.757980到一个8 x 8平铺渲染[20838]:调试:在0.799秒内完成平铺默认12 1008-1015 3984-3991渲染[20838]:调试:将协议版本2的渲染命令(3默认12/1008/3984)发送到fd 18渲染[20838]:调试:使用协议版本2 renderd[20838]获得传入请求:调试:获得命令RenderBulk fd(18)xml(默认),z(12),x(1008),y(4064),mime(图像/png),选项()渲染[20838]:调试:开始平铺默认值12 1008-1015 4064-4071,新metatile渲染[20838]:渲染投影坐标12 1008 4064-&gt-10175297.205328 |-19802693.791908-10097025.688364 |-19724422.274944至8 x 8瓷砖 步骤13:启用HTTPS 为了加密HTTP流量,我们可以从Let's encrypt获得并安装免费的TLS证书。首先,在Debian 10上安装Let's Encrypt客户端(certbot)。 sudo apt安装certbot 因为我们使用的是ApacheWeb服务器,所以我们还需要安装Apache插件。 sudo apt安装python3 certbot apache 然后运行以下命令获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--stalke ocsp--must stalke--email[email ;protected]-d tile。你的领域。通用域名格式 安装证书后,刷新网页,您将在地址栏中看到一个锁。 如果你在Firefox地址栏中看到一个黄色的三角形,这意味着tile URL仍在使用HTTP。你需要编辑索引。html文件,并使用以下命令将所有HTTP协议替换为HTTPS。 sudo sed-i's/http/https/g'/var/www/index。html 步骤14:启用HTTP2 为了进一步提高映射加载性能,可以启用HTTP2协议。首先,需要启用HTTP2模块。 sudo a2enmod http2 然后打开SSL虚拟主机文件。 sudo nano/etc/apache2/sites enabled/tileserver_site-le-ssl。形态 在打开后放置以下指令<VirtualHost*:443>标签 协议h2 http/1.1 保存并关闭文件。然后重启Apache,使更改生效。 sudo systemctl重启apache2 使用HTTP Referrer标头限制对OSM磁贴服务器的访问 默认情况下,任何人都可以使用OpenLayer或传单创建一个带有tile服务器URL的滑动地图。要限制对tile服务器的访问,请编辑Apache虚拟主机文件。 sudo nano/etc/apache2/sites enabled/tileserver_site-le-ssl。形态 在<VirtualHost>标签。 <位置/osm>SetEnvIf Referer example/。com trusted_referer Order deny,allow deny from all allow from env=trusted_referer&lt/地点> 上面的代码检查HTTP referer头是否包含您自己的域。否则,将拒绝访问/osm目录。反斜杠用于转义点字符。要将多个主机名添加为受信任的引用程序,请使用以下语法。 SetEnvIf Referer(example/.com | www/.example/.com | map/.example/.com)可信的_Referer 保存并关闭文件。然后测试语法。 sudo apache2ctl-t 如果语法正确,请重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 自动更新TLS证书 您可以创建Cron作业来自动续订TLS证书。只需打开root用户的crontab文件。 sudo crontab-e 在文件底部添加以下行。 @每日certbot更新——安静与&systemctl重新加载apache2 不同主机上的PostgreSQL数据库和Web服务器 如果PostgreSQL和Apache web服务器位于不同的主机上,则需要编辑该项目。Apache主机上的mml文件。 nano/home/osm/openstreetmap-carto-4.20.0/project。嗯 找到以下几行: osm2pgsql:&osm2pgsql类型:“postgis”dbname:“gis”键字段:“几何体”字段:“方式”范围:“-20037508,-200375082003750820037508” 指定PostgreSQL数据库服务器的IP地址。 osm2pgsql:&osm2pgsql类型:“postgis”主机:“10.0.0.2”数据库名:“gis”键字段:“几何体”字段:“方式”范围:“-20037508,-200375082003750820037508” 保存并关闭文件。然后使用carto map样式表编译器构建Mapnik XML样式表。 carto项目。mml>风格xml 在PostgreSQL数据库服务器上,编辑主配置文件。 sudo nano/etc/postgresql/11/main/postgresql。形态 添加以下行,将PostgreSQL设置为在所有接口上侦听。 听_addresses='*' 保存并关闭文件。然后编辑PostgreSQL客户端身份验证配置文件。 sudo nano/etc/postgresql/11/main/pg_hba。形态 在文件末尾添加以下行,以允许osm用户从Apache主机登录。将10.0.0.1替换为Apache主机的IP地址。 主机gis osm 10.0.0.1/32信任 保存并关闭文件。然后重新启动PostgreSQL。 sudo systemctl重启postgresql 在Apache主机上重新启动渲染守护程序。 sudo systemctl重新启动renderd 你需要查看renderd的日志。确保renderd不会在日志中产生任何错误,否则地图将不会显示。 sudo journalctl-欧盟趋势 还应限制对PostgreSQL数据库服务器端口5432的访问。例如,您可以使用以下UFW命令只允许Apache主机的IP地址。 sudo ufw允许从10.0.0.1进入任何端口5432 下一步 我希望本教程能帮助您在Debian 10上设置OpenStreetMap tile服务器。您可能还需要设置Namingm地理编码服务器以提供搜索功能。 在Debian 10上设置OSM Namingm地理编码服务器 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.22 浏览:84
  • 如何在Debian 10上设置OSM地理编码服务器

    在上一个教程中,我解释了在Debian 10上构建自己的OSM tile服务器的过程。本教程将向您展示如何在Debian 10上设置Namingm地理编码服务器。Nagnitm为OpenStreetMap提供搜索功能,因此如果访客在搜索框中输入地址,将返回该地址的纬度/经度位置。 第一步:从源代码构建提名 安装依赖项包以构建Nagnitm。 sudo apt update sudo apt install build essential cmake g++libboost dev libboost system dev libboost filesystem dev libexpat1 dev zlib1g dev libbz2 dev libpq dev libproj dev apache2 php php php pgsql libapache2 mod php intl python3 setuptools python3 dev python3 pip python3-psycopg2 python3 tidylib git gram postgresql-server-dev-11 创建提名用户。(无需为此用户创建密码。) sudo useradd-d/srv/namitm-s/bin/bash-m namitm 更改为/srv/m/目录。 cd/srv/M/ 向您自己的用户帐户授予权限。 sudo apt install acl sudo setfacl-R-mu:username:rwx/srv/m/ 从官方网站下载提名。 wgethttps://nominatim.org/release/Nominatim-3.5.1.tar.bz2 取出柏油球。 tar xvf M-3.5.1。焦油bz2 创建构建目录。 mkdir构建 更改到此目录并配置生成环境。 cd build cmake/srv/Namingm/Namingm-3.5.1 编译源代码。 制作 第2步:配置提名 Nagnitm的默认配置文件是/srv/Nagnitm/build/settings/settings。php。我们可以创建一个本地。php文件,并在那里添加我们的修改。 sudo nano/srv/m/build/settings/local。php 在文件中添加以下行。 <?php@define('CONST_Website_BaseURL','/namignm/')@定义('CONST_Default_Lat',55.0)@定义('CONST_Default_Lon',1.0)@定义('CONST_Default_Zoom',6)@定义('CONST_Map_Tile_URL','https://tile.linuxbabe.com/osm/{z} /{x}/{y}。巴布亚新几内亚); 上述配置定义了 相对于磁贴服务器的Namingm实例的路径。 默认纬度、经度和缩放级别。 OSM磁贴服务器的URL。默认情况下,Nagnitm使用公共openstreetmap。组织平铺服务器。在这里,我使用自己的磁贴服务器。 您还可以查看/srv/namitm/build/settings/settings。php文件,并在需要时添加自己的自定义项。例如,如果要导入大型数据集(欧洲、北美、planet等),最好启用节点位置的平面节点存储,这样节点坐标将存储在一个简单的文件中,而不是数据库中,从而节省导入时间和磁盘存储。 @定义('CONST_Osm2pgsql_Flatnode_File','/srv/namignm/Flatnode.File'); 保存并关闭文件。 第3步:导入OSM数据库 下载维基百科重要性转储文件,这将提高Nomatim搜索结果的质量。 cd/srv/NAMMATIONM/NAMMATIONM-3.5.1/data wgethttps://www.nominatim.org/data/wikimedia-importance.sql.gz 下载美国和英国邮政编码数据。 wgethttps://www.nominatim.org/data/us_postcode_data.sql.gzwgethttps://www.nominatim.org/data/gb_postcode_data.sql.gz 下载国家代码数据文件。 wget——国家电网。sql。广州https://www.nominatim.org/data/country_grid.sql.gz 然后需要下载一个OSM文件并将其导入PostgreSQL。你可以去http://download.geofabrik.de下载你需要的摘录。也可以在磁贴服务器设置过程中使用PBF文件。 在PostgreSQL中创建www数据用户,这样web服务器将对数据库具有只读访问权限。 sudo-u postgres createuser www数据 向postgres用户授予权限。 sudo setfacl-R-mu:postgres:rwx/srv/m/ 切换到postgres用户。 sudo-u postgres-i 并运行以下命令将OSM提取导入PostgreSQL。 cd/srv/Namingm/build//srv/Namingm/build/utils/setup。php——osm文件/home/osm/great british-latest。奥斯曼。pbf——全部2个&gt&1 |三通设置。日志 导入数据库后,索引过程将开始。 完成后,运行以下命令进行验证。 /srv/namignm/build/utils/check_import_finished。php 退出postgres用户。 出口 第4步:设置Apache 编辑磁贴服务器配置文件。 sudo nano/etc/apache2/sites enabled/tileserver_site-le-ssl。形态 在VirtualHost标记之间添加以下行。 <目录“/srv/namitm/build/website”>选项如下SymLinks MultiViews AddType application/json。php目录索引搜索。php需要所有授权&lt/目录>别名/namitm/srv/namitm/build/website 保存并关闭文件。然后重新加载Apache。 sudo systemctl重新加载apache2 现在参观https://tile.yourdomain.com/nominatim.您将看到您的Nomatim实例。 CSS文件位于/srv/namitm/build/website/CSS/search。css,如果你想定制外观。 更新提名数据库 为了使Namingm数据库保持最新,我们需要安装Pyosmium。它可以从默认的软件存储库中获得,但建议使用pip3安装最新版本。 sudo pip3安装锇 这将安装一个二进制文件/usr/local/bin/pyosmium获取更改。编辑配置文件。 sudo nano/srv/m/build/settings/local。php 添加以下行以指定pyosmium get changes的位置。 @定义('CONST_Pyosmium_Binary','/usr/local/bin/Pyosmium get changes'); 接下来,我们需要告诉Namingm在哪里下载更新。默认情况下,它被配置为从https://planet.openstreetmap.org/replication/minute.如果您从geofabrik下载了OSM PBF文件。de,那么最好也从那里下载更新。 要查找自己地图的更新URL,请转到https://download.geofabrik.de/找到你所在的地区。然后找到该文件的URL。osc。gz文件。 此URL是更新URL。 在/srv/namignm/build/settings/local中添加以下行。php文件。您需要使用自己的更新URL。 //复制服务@define的基本URL('CONST_replication_URL','http://download.geofabrik.de/europe/great-britain-updates'); // 上游发布diff@define的频率('CONST_Replication_Update_Interval','86400');//如果还没有找到更新@define('CONST_Replication_Recheck_Interval','900'),需要多长时间睡眠; 保存并关闭文件。向postgres用户授予权限。 sudo setfacl-R-m“u:postgres:rwx”/srv/m/build/ 然后切换到postgres用户。 sudo-u postgres-i 初始化更新过程。 /srv/namignm/build/utils/update。php——初始化更新 更新我的数据库。 /srv/namignm/build/utils/update。php——全部导入 设置Cron作业以进行自动更新 编辑root用户的Crontab文件。 sudo crontab-e 在此文件中添加以下行。 @每日sudo-u postgres/srv/namitm/build/utils/update。php——全部导入 保存并关闭文件。 如何在拖沓的地图上添加搜索功能 我假设你的slippy地图是使用传单JavaScript库显示的。要将搜索功能添加到地图中,需要使用传单地理编码插件。我将向您展示如何使用传单控制地理编码器。其实很简单。 假设您使用以下HTML代码来显示拖拉地图。 <html&gt&书信电报;头&gt&书信电报;meta charset=“UTF-8”大于&书信电报;标题>我的第一个osm&lt/标题&gt&书信电报;link rel=“stylesheet”type=“text/css”href=“传单.css”/&gt&书信电报;script type=“text/javascript”src=“ployate.js”&gt&lt/脚本&gt&书信电报;风格&gt#地图{宽度:100%;高度:100%}&lt/风格&gt&lt/头&gt&书信电报;车身&gt&书信电报;div id=“map”&gt&lt/部门&gt&书信电报;脚本>var map=L.map('map')。setView([54,1],6);蒂莱莱耶https://tile.yourdomain.com/osm/{z} /{x}/{y}。png',{maxZoom:19})。addTo(地图)&lt/脚本&gt&lt/车身&gt&lt/html> 现在,您需要在HTML标题中添加以下两行,以使用传单控制地理编码器插件。 <link rel=“stylesheet”href=”https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.css“/><脚本src=”https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js“></script> 然后将以下函数添加到<脚本&gt&lt/脚本>将搜索功能添加到地图中。 控制。地理编码器()。addTo(地图); 最终的HTML代码如下所示: <html&gt&书信电报;头&gt&书信电报;meta charset=“UTF-8”大于&书信电报;标题>我的第一个osm&lt/标题&gt&书信电报;link rel=“stylesheet”type=“text/css”href=“传单.css”/&gt&书信电报;link rel=“stylesheet”href=”https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.css“/><script type=“text/javascript”src=“传单。js“></script><script src=”https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js“></script><style>#map{宽度:100%;高度:100%}</style></head><body><div id=“map”></div><script>var map=L.map('map')。setView([54,1],6);L.tileLayer('map')”https://tile.yourdomain.com/osm/{z} /{x}/{y}。png',{maxZoom:19})。addTo(地图);控制。地理编码器()。addTo(地图)&lt/脚本&gt&lt/车身&gt&lt/html> 保存并关闭文件。然后在web浏览器中重新加载地图,您应该会在右上角看到一个搜索按钮。 默认情况下,传单控制地理编码器使用公共https://nominatim.openstreetmap.org地理编码服务。要使用您自己的地理编码服务,请删除以下行。 控制。地理编码器()。addTo(地图); 改为添加以下行。将该URL替换为您的提名地理编码服务的URL。请注意,不应省略尾随的斜杠。 var geocoder=L.控制。地理编码器。提名({serviceUrl:'https://tile.yourdomain.com/nominatim/'}); if(URLSearchParams&location.search){//parse/?geocoder=namitm from URL var params=new URLSearchParams(location.search);var geocoderString=params.get('geocoder');if(geocoderString&L.Control.geocoder[geocoderString]){console.log('Using geocoder',geocoderString);geocoder=L.Control geocoder[geocoderString](); } else if(geocoderString){console.warn('Unsupported geocoder',geocoderString);}var control=L.control。地理编码器({query:'Moon',占位符:'Search here…',geocoder:geocoder})。addTo(地图);var标记;setTimeout(function(){control.setQuery('Earth');},12000); 您还可以为反向地理编码添加以下代码。当访客点击地图上的某个点时,该地址的名称就会出现。 地图在('click',函数(e){geocoder.reverse(e.latlng,map.options.crs.scale(map.getZoom()),函数(results){var r=results[0];if(r){if(marker){marker.setLatLng(r.center.).setPopupContent(r.html | | r.name).openPopup()}else{marker=L.marker(r.center).bindpoppup(r.name).addTo(map.openPopup();}}});}); 保存并关闭文件。然后在web浏览器中重新加载地图。 提高反向搜索的准确性 提名中有两种类型的搜索: 前向搜索,又名地理编码,返回地址的纬度和经度 反向搜索,又名反向地理编码,返回纬度和经度的地址,即当访问者点击地图上的某个点时。 如果进行反向搜索,则标记针和弹出窗口与您单击的地图上的位置不在同一位置,则需要增加缩放级别。地图。getZoom()函数将获取当前的地图视图,该视图由setView()函数设置,如下所示 var map=L.map('map')。setView([54,1],6); 缩放级别设置为6,这将导致反向搜索的精度较低。我们可以对反向搜索的缩放级别进行硬编码,如下所示: 地理编码器。反转(如拉特林、地图选项、crs比例(21)、功能(结果) i、 换张地图。getZoom()到21。反向搜索的最大缩放级别为21。您可以选择另一个缩放级别以满足您的需要。 故障排除 如果地图上的搜索功能不起作用,您可以检查web浏览器的控制台,找出哪里出了问题。有些人可能会认为406不可接受或CORS不允许出现错误。确保为设置了正确的MIME类型。Apache配置文件中的php。有些人可能有下面这句话,这可能会导致上述错误。 AddType text/html。php 应该是的 AddType应用程序/json。php 更改MIME类型后。重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 收尾 我希望本教程能帮助您在Debian 10上安装Namingm地理编码服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:283
  • 如何在Ubuntu 20.04上安装OSRM——开源路由机器

    OSRM(开源路由机器)是OpenStreetMap(OSM)道路网络的超快速路由引擎。在之前的教程中,我们解释了设置自托管OpenStreetMap互动程序服务器的过程,以及如何使用Namingm向地图添加地址查找功能。本教程将向您展示如何使用OSRM向OpenStreetMap添加导航功能,OSRM提供了汽车路线、自行车路线和步行路线。 本教程也适用于Ubuntu 18.04。 先决条件 要学习本教程,您应该安装并运行OSM tile服务器。如果没有,请按照下面的教程设置您自己的OSM tile服务器。 如何在Ubuntu 20.04上设置OpenStreetMap Tile服务器 您还应该可以访问地理编码服务,如用于地址查找的Namingm。 在Ubuntu20.04上设置OSM地理编码服务器 满足要求后,按照以下说明设置OSRM服务器。 步骤1:从源代码构建OSRM 安装依赖软件包。 sudo apt更新sudo apt install build sential git cmake pkg config doxygen libboost all dev libtbb dev lua5。2 liblua5。2-dev libluabind dev libstxxl dev libstxxl1v5 libxml2 libxml2 dev libosmpbf dev libbz2 dev libzip dev libprotobuf dev 创建osrm用户。(无需为此用户创建密码。) sudo useradd-d/srv/osrm-s/bin/bash-m osrm 向您自己的用户帐户授予权限。 sudo apt install acl sudo setfacl-R-mu:username:rwx/srv/osrm/ 更改为/srv/osrm/目录。 cd/srv/osrm/ 从其Github存储库下载OSRM源代码。 git克隆https://github.com/Project-OSRM/osrm-backend.git 创建构建目录。 mkdir构建 更改到此目录并配置生成环境。 cd构建cmake/srv/osrm/osrm后端/ 编译源代码。 制作 安装二进制文件。 sudo make安装 将安装以下二进制文件。 /usr/local/bin/osrm摘录: /usr/local/bin/osrm分区: /usr/local/bin/osrm定制: /usr/local/bin/osrm合同: /usr/local/bin/osrm数据存储: /usr/local/bin/osrm路由: 第2步:安装GNU屏幕 下一步,我们需要从OpenStreetMap中提取道路网络,这可能需要很长时间。您的计算机可能已与Internet断开连接,因此建议使用GNU Screen实用程序使会话保持活动状态。在Ubuntu 20.04服务器上安装屏幕: sudo apt安装屏幕 然后启动屏幕: 屏幕 在第一次启动时,您将看到介绍文本,只需按Enter键即可结束。然后你就可以像往常一样运行命令了。 步骤3:生成OSRM路由数据 现在我们需要下载OpenStreetMap数据,并使其可用于路由。运行以下命令以PBF(ProtoBufBinary)格式下载整个行星(56G)的地图数据。 wget-chttp://planet.openstreetmap.org/pbf/planet-latest.osm.pbf-P/srv/osrm/osrm后端 如果你想要一张单个国家/州/省/市的地图,请访问http://download.geofabrik.de.例如,使用以下命令下载英国地图数据(1.2G)。 wget-chttp://download.geofabrik.de/europe/great-britain-latest.osm.pbf-P/srv/osrm/osrm后端 自行车。org还以不同的格式提供了全球200多个城市和地区的摘录。 确保您位于/srv/osrm/osrm backend/目录中。 cd/srv/osrm/osrm后端/ 从OpenStreetMap数据中提取图形。 osrm最新摘录英国和爱尔兰。奥斯曼。pbf——线程数=10 默认情况下,它将使用汽车。lua简介。 现在,您可能不需要在服务器上执行其他操作。由于您使用的是Screen,所以可以按Ctrl+A,释放这些键,然后按D键从当前屏幕会话中分离。您将看到如下消息。 [与32113.pts-1.focal分离] 这告诉我之前的屏幕会话ID是32113。您可以从SSH会话中注销,甚至可以关闭计算机。别担心,osrm提取过程仍在运行。当需要返回并检查进度时,请将SSH连接到服务器并运行以下命令以获取上一个屏幕会话ID。 屏幕-ls 样本输出: 屏幕显示:32113。pts-1。focal(2020年5月19日03:45:29下午)(已分离)1个插座插入/运行/屏幕/S-linuxbabe。 然后可以重新连接到上一个屏幕会话。 屏幕-r 32113 这个过程是内存密集型的。(它在我的服务器上使用7GB内存。)完成后,将有一个文件名相同但具有相同名称的文件。osrm扩展。运行以下命令以递归方式将该图划分为单元格 osrm最新划分英国和爱尔兰。osrm 通过计算所有单元的布线权重来自定义单元。 osrm最新定制英国和爱尔兰。osrm 现在可以启动路由引擎了。 osrm路由——算法=MLD英国和爱尔兰最新版本。osrm 如您所见,它监听TCP端口5000。 第4步:创建systemd服务 我们可以使用OSRM routed--algorithm=MLD britain and ireland latest手动运行OSRM路由引擎。osrm,但在后台将osrm作为systemd服务运行更方便。按Ctrl+C停止当前osrm路由进程,并使用以下命令为osrm路由创建systemd服务单元文件。 sudo nano/etc/systemd/system/osrm路由。服务 将以下行放入文件中。 [Unit]Description=开源路由机器需求=网络在线。目标后=网络。目标网络在线。target[Service]ExecStart=/usr/local/bin/osrm routed--algorithm=MLD/srv/osrm/osrm backend/britain and ireland latest。osrm User=osrm Group=osrm Restart=always RestartSec=5s[Install]WantedBy=multi-User。目标 保存并关闭文件。更改/srv/osrm/osrm backend/目录的所有权。 sudo chown osrm:osrm/srv/osrm/osrm backend/-R 现在我们可以启动并启用osrm路由systemd服务。 sudo systemctl启动osrm路由sudo systemctl启用osrm路由 检查状态。 systemctl状态osrm路由 如果osrm路由服务未处于活动状态(正在运行),则可以运行以下命令查看问题所在。 sudo journalctl-欧盟osrm路由 第5步:配置Apache web服务器 我们可以将ApacheWeb服务器配置为osrm路由服务的反向代理,因此我们可以使用域名访问路由服务,还可以启用HTTPS加密。 安装Apache web服务器。 sudo apt安装apache2 要使用Apache作为反向代理,我们需要启用代理、代理和重写模块。 sudo a2enmod代理服务器u http重写 然后为OSRM创建一个虚拟主机文件。 sudo nano/etc/apache2/sites available/osrm。形态 将以下文本添加到文件中。更换osrm。你的领域。com与您的实际域名,别忘了为它创建DNS记录。 <虚拟主机*:80>服务器名osrm。你的领域。com ProxyPass/http://127.0.0.1:5000/ProxyPassReverse/http://127.0.0.1:5000/&lt/VirtualHost> 保存并关闭文件。然后启用这个虚拟主机。 sudo a2ensite osrm。形态 重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 现在,您可以通过在浏览器地址栏中输入域名(OSRM.your-domain.com)远程访问OSRM。 第6步:启用HTTPS 我们可以通过安装Let's Encrypt颁发的免费TLS证书来启用HTTPS。在OSM tile服务器安装教程中,我们已经从Snap store安装了Let's Encrypt client(certbot)。所以我们只需要运行以下命令来获取并安装TLS证书。 sudo/snap/bin/certbot-apache-agree-tos-redirect-hsts-style-ocsp-email[email protected]-d osrm。你的领域。通用域名格式 哪里: --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。您将能够通过安全的HTTPS连接访问Webmin web界面。 第7步:将OSRM与拖拉地图集成 我假设您的slippy地图是使用传单JavaScript库显示的,并且您已经在slippy地图中添加了Namingm地理编码服务。 要将OSRM与slippy map集成,我们可以使用一个名为传单路由机器的插件。首先,将传单路由机器JavaScript和CSS文件包含到你的slippy map中。请注意,它们应该放在主传单JavaScript和传单控制Geocoder JavaScript之后。 <html&gt&书信电报;head&gt&书信电报;link rel=“stylesheet”href=”https://unpkg.com/[电子邮件和#160;受保护]/dist/传单传送机。css“/><脚本src=”https://unpkg.com/[电子邮件和#160;受保护]/dist/传单传送机。js“></script></head><body>……</body></html> 接下来,将以下行添加到<脚本&gt&lt/脚本>HTML正文中的代码片段。 L.路线。控件({serviceUrl:'https://osrm.your-domain.com/route/v1,地理编码员:L.控制。地理编码器。提名({serviceUrl:'https://tile.your-domain.com/nominatim/“}),routeWhileDragging:true})。addTo(地图); 这样地: <html&gt&书信电报;head&gt&书信电报;link rel=“stylesheet”href=”https://unpkg.com/[电子邮件和#160;受保护]/dist/传单传送机。css“/><脚本src=”https://unpkg.com/[电子邮件和#160;受保护]/dist/传单传送机。js“></script></head><body><div id=“map”></div><script>….L.路由控制({serviceUrl:'https://osrm.your-domain.com/route/v1,地理编码员:L.控制。地理编码器。提名({serviceUrl:'https://tile.your-domain.com/nominatim/“}),routeWhileDragging:true})。addTo(地图)&lt/脚本&gt&lt/车身&gt&lt/html> 保存并关闭文件。然后在web浏览器中重新加载地图,您应该会在右上角看到一个控制面板,您可以在其中输入起始地址和目标地址。 您可以在地图上拖动航路点,OSRM将自动重新计算路线。 收尾 我希望本教程能帮助你在Ubuntu20.04上安装OSRM服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:70
  • 如何在Ubuntu18.04上设置OpenStreetMap Tile服务器

    OpenStreetMap,又名OSM,是一个用户贡献的世界地图,可以自由编辑。你可以把它看作是谷歌地图的开源和自托管替代品。本教程将向您展示如何在Ubuntu18.04上构建自己的OpenStreetMap tile服务器,这样您就不必使用专有的地图服务。 OpenStreetMap功能 OpenStreetMap的数据覆盖了全世界,因此可以方便地支持任何国家或每个国家的用户。 OpenStreetMap每天每小时每分钟都会更新,您可以实时获得这些更新。 OpenStreetMap数据是免费和开放的,不收取订阅费和页面浏览费。 OpenStreetMap数据丰富而详细,包含大量与地面人员相关的数据——收集数据的人员。 先决条件/硬件要求 所需的RAM和磁盘空间取决于要使用哪个国家的地图。例如 英国地图至少需要12G内存和60GB磁盘空间。 整个行星地图至少需要32G RAM和1TB SSD磁盘。用旋转硬盘来绘制整个地球地图是不可行的。 如果要在web浏览器中预渲染分幅以加快地图加载速度,则需要更多磁盘空间,这是强烈建议的。查看此页面以查看预渲染磁贴需要多少磁盘空间。例如,如果要为行星地图预渲染从缩放级别0到缩放级别15的平铺,则需要额外的460 GB磁盘空间。 另外需要注意的是,将大型地图数据(如整个地球)导入PostgreSQL数据库需要很长时间。考虑添加更多的RAM,特别是使用SSD,而不是旋转硬盘来加速导入过程。 如果你打算主持整个世界地图,我建议你从康塔博购买超大VPS,康塔博以 10核CPU 60 GB内存 1.6 TB英特尔Optane SSD 每月只需26.99欧元。 第一步:升级软件 在服务器上进行任何主要工作之前,更新服务器软件始终是一种好的做法。通过SSH登录服务器并运行以下命令。 sudo-apt更新;sudo-apt升级 第2步:安装PostgreSQL数据库服务器和PostGIS扩展 我们将使用PostgreSQL存储地图数据。PostGIS是PostgreSQL的地理空间扩展。运行以下命令来安装它们。 sudo apt安装postgresql postgresql contrib postgis postgresql-10-postgis-2.4 PostgreSQL数据库服务器将自动启动并侦听127.0.0.1:5432。安装过程中将在操作系统上创建postgres用户。它是PostgreSQL数据库服务器的超级用户。默认情况下,该用户没有密码,也不需要设置密码,因为您可以使用sudo切换到postgres用户并登录到PostgreSQL server。 sudo-u postgres-i 现在可以创建PostgreSQL数据库用户osm。 createuser osm 然后创建一个名为gis的数据库,同时让osm成为数据库的所有者-UTF8指定数据库中使用的字符编码方案为UTF8。 createdb-E UTF8-O osm gis 接下来,为gis数据库创建postgis和hstore扩展。 psql-c“创建扩展postgis-d gis psql-c“创建扩展存储-三维地理信息系统 将osm设置为表所有者。 psql-c“将表空间参考系统所有者更改为osm-三维地理信息系统 退出postgres用户。 出口 在操作系统上创建osm用户,以便平铺服务器可以作为osm用户运行。以下命令将创建一个没有密码的系统用户。 sudo adduser——系统osm 第3步:下载地图样式表和地图数据 切换到osm的主目录。 cd/home/osm/ 使用git将最新的CartoCSS地图样式表下载到osm用户的主目录。 sudo apt安装git git克隆https://github.com/gravitystorm/openstreetmap-carto.git 如果在运行上述命令时看到“权限被拒绝”错误,则可以使用以下命令授予权限。用真实用户名替换用户名。 sudo setfacl-R-mu:username:rwx/home/osm/ 接下来,运行以下命令以PBF(ProtoBufBinary)格式下载整个行星(50G)的地图数据。 wget-chttp://planet.openstreetmap.org/pbf/planet-latest.osm.pbf 请注意openstreetmap的下载速度。org当前限制为2048kb/s。您可以从另一个镜像下载植物地图,如 wget-chttps://download.bbbike.org/osm/planet/planet-latest.osm.pbf 如果你想要一张各个国家/州/省/市的地图,请访问http://download.geofabrik.de.还有,自行车。org以不同的格式提供了全球200多个城市和地区的摘录。例如,使用以下命令下载英国地图数据(1.1G)。 wget-chttp://download.geofabrik.de/europe/great-britain-latest.osm.pbf 第4步:优化PostgreSQL Server性能 导入过程可能需要一些时间。为了加快这个过程,我们可以调整一些PostgreSQL server设置以提高性能。编辑PostgreSQL主配置文件。 sudo nano/etc/postgresql/10/main/postgresql。形态 首先,我们应该更改共享缓冲区的值。默认设置为: 共享缓冲区=128MB 这个太小了。经验法则是将其设置为总RAM的25%(不包括交换空间)。例如,我的VPS有60G RAM,所以我将其设置为: 共享缓冲区=15GB 找到下面这行。 #工作_内存=4MB#维护_工作_内存=64MB 同样,该值太小。 工作记忆=1GB维护记忆=8GB工作记忆=8GB 然后找到下面一行。 #有效缓存大小=4GB 如果你像我一样有很多RAM,你可以为有效的缓存大小设置一个更高的值,比如20G。 有效缓存大小=20GB 保存并关闭文件。重新启动PostgreSQL以使更改生效。 sudo systemctl重启postgresql 默认情况下,PostgreSQL会尝试在RAM中使用巨大的页面。然而,Linux默认情况下不会分配巨大的页面。检查PostgreSQL的进程ID。 sudo head-1/var/lib/postgresql/10/main/postmaster。pid 样本输出: 7031 然后检查该进程ID的峰值。 grep^VmPeak/proc/7031/status 样本输出: 峰值:16282784 kB 这是PostgreSQL将使用的峰值内存大小。现在检查Linux中巨大页面的大小。 cat/proc/meminfo | grep-i巨大 样本输出: AnonHugePages:0 kB ShmemHugePages:0 kB HugePages_总计:0 HugePages_免费:0 HugePages_Rsvd:0 HugePages_SUPPR:0 HugePages大小:2048 kB 我们可以计算出我们需要多少巨大的页面。将VmPeak值除以巨大页面的大小:16282784KB/2048KB=7950。编辑/etc/sysctl。conf文件。 sudo nano/etc/sysctl。形态 在文件末尾添加以下行,分配7950个大页面。 虚拟机。nr_hugepages=7950 保存并关闭文件。然后应用更改。 sudo sysctl-p 如果你再次查看meminfo, cat/proc/meminfo | grep-i巨大 我们可以看到有7950个巨大的页面可用。 AnonHugePages:0 kB ShmemHugePages:0 kB HugePages_总计:7950 HugePages_免费:7950 HugePages_Rsvd:0 HugePages_supp:0 HugePages大小:2048 kB 重新启动PostgreSQL以使用大型页面。 sudo systemctl重启postgresql 建议配置SSH keepalive,以免丢失SSH连接。这很容易做到。只需在本地Linux机器上打开SSH客户端配置文件。 sudo nano/etc/ssh/ssh_config 并将以下文本粘贴到文件末尾。 ServerAliveInterval 60 然后保存文件并连接到你的Ubuntu服务器。您还可以通过VNC访问远程服务器,以防止脆弱的连接中断导入过程。 步骤5:将地图数据导入PostgreSQL 要导入地图数据,我们需要安装osm2pgsql,将OpenStreetMap数据转换为支持postGIS的PostgreSQL数据库。 sudo apt安装osm2pgsql 向postgres用户授予权限。 sudo setfacl-R-mu:postgres:rwx/home/osm/ 切换到postgres用户。 sudo-u postgres-i 运行以下命令将地图样式表和地图数据加载到gis数据库中。最新取代英国。奥斯曼。pbf与您自己的地图数据文件。 osm2pgsql--slim-dGIS--hstore--multi-geometry--number processs 10--tag transform script/home/osm/openstreetmap carto/openstreetmap carto。lua——style/home/osm/openstreetmap carto/openstreetmap carto。款式-C 32000/家居/osm/英国最新款。奥斯曼。pbf 哪里 --苗条模式:在苗条模式下运行,而不是在正常模式下运行。如果希望将来使用OSM更改文件(OSC)更新地图数据,则需要此选项。 -d gis:选择数据库。 --hstore:将不带列的标记添加到PostgreSQL表的另一个hstore(key/value)列中 --多重几何图形:在postgresql表中生成多重几何图形特征。 --样式:指定样式文件的位置 --进程数:服务器上的CPU核心数。我有10个。 -C标志以兆字节为单位指定缓存大小。它应该是你机器上可用内存的70%左右。缓存大小越大,导入速度越快。例如,我的服务器有60GB的RAM,所以我可以指定-C 32000。请注意,PostgreSQL将需要用于共享缓冲区的RAM。使用此公式计算缓存大小应该有多大:(总RAM-PostgreSQL共享_缓冲区)*70% 最后,需要指定地图数据文件的位置。 命令输出: 如果要导入完整的行星地图数据,请使用--drop选项和--flat nodes选项来提高导入速度。请注意--flat nodes选项不适用于小贴图。 osm2pgsql——slim-d gis——drop——flat节点。cache--hstore--multi-geometry--number processs 10--tag transform script/home/osm/openstreetmap carto/openstreetmap carto。lua——style/home/osm/openstreetmap carto/openstreetmap carto。款式-C 32000/家居/osm/planet最新款式。奥斯曼。pbf 在导入过程中,RAM的使用将逐渐增加。导入完成后,将gis数据库的所有权限授予osm用户。 psql-c“将模式公共中所有表的所有权限授予osm-三维地理信息系统 退出postgres用户。 出口 第6步:安装mod_tile和Renderd mod_tile是一个Apache模块,需要为tiles提供服务,renderd是渲染OpenStreetMap tiles的渲染守护进程。默认的Ubuntu存储库不包括mod_tile和renderd,但我们可以从OSM PPA安装它们。 sudo-apt-install-software-properties通用sudo-add-apt-repository-ppa:osmadmins/ppa-sudo-apt-install-libapache2 mod tile-renderd 在安装过程中,它将安装Apache web服务器,并询问您是否希望在Apache配置中启用mod_tile。选择Yes并按Enter键。这将为mod_tile(/etc/apache2/sites available/tileserver_site.conf)创建一个Apache配置文件。 渲染守护进程将自动启动,如下所示: systemctl状态呈现 第7步:生成Mapnik样式表 安装所需的软件包。 sudo apt安装curl解压gdal bin mapnik utils libmapnik dev python3 pip 我们还需要使用以下命令从上游存储库安装nodejs和npm。 curl-sLhttps://deb.nodesource.com/setup_12.x| sudo-E bash-sudo apt get install-y nodejs 然后用npm安装carto软件包。 sudo npm安装-g carto 安装psycopg2 Python模块。 sudo-H pip3安装psycopg2==2.8.5 切换到postgres用户。 sudo-u postgres-i 将Cd放入carto style目录。 cd/home/osm/openstreetmap carto/ 获取形状文件。 脚本/获取外部数据。py 如果在运行上述命令时遇到以下错误消息,则说明您存在DNS问题。只需等待几分钟,然后再次运行Python脚本。 未能建立新连接:[Errno-3]名称解析暂时失败 现在使用carto map样式表编译器构建Mapnik XML样式表。 carto项目。mml>风格xml 将gis数据库的所有权限授予osm用户。 psql-c“将模式公共中所有表的所有权限授予osm-三维地理信息系统 退出postgres用户。 出口 第8步:安装字体 您需要安装ttf dejavu软件包。 sudo apt安装ttf dejavu 要显示非拉丁字符,请安装以下软件包。 sudo apt安装字体noto cjk字体noto提示字体noto未经修改的ttf unifont 步骤9:配置renderd 编辑渲染配置文件。 sudo nano/etc/renderd。形态 在[renderd]部分,根据服务器上的CPU内核数更改线程数。 线程数=10 在[default]部分,将XML和HOST的值更改为以下值。请注意,以分号(;)开头的行这些都是评论。 XML=/home/osm/openstreetmap carto/style。xml HOST=map。你的领域。通用域名格式 在[mapnik]部分,将plugins_dir的值更改为以下值。 plugins_dir=/usr/lib/mapnik/3.0/input/ 您可以使用以下命令打印默认的输入插件目录。 mapnik config——输入插件 如果要显示非拉丁字符,最好将字体设置更改为以下内容。 font_dir=/usr/share/fonts/truetype font_dir_recurse=true 保存并关闭文件。然后编辑init脚本文件 sudo nano/etc/init。d/renderd 找到下面这行。 RUNASUSER=www数据 将用户更改为osm。这是从PostgreSQL数据库加载地图数据所必需的。 RUNASUSER=osm 保存文件。将osm设置为/var/lib/mod_tile/目录的所有者,该目录将保存渲染的tile文件。 sudo chown osm/var/lib/mod_tile/-R 然后重新启动renderd服务。 sudo systemctl守护进程重新加载sudo systemctl restart renderd 你需要查看renderd的日志。 sudo journalctl-欧盟趋势 确保renderd不会在日志中产生任何错误,否则地图将不会显示。 第10步:配置Apache 编辑OSM虚拟主机文件。 sudo nano/etc/apache2/sites available/tileserver_site。形态 将服务器名更改为自己的域名,如map。你的地盘。通用域名格式。您还需要为此子域创建DNS记录。 服务器名映射。你的地盘。通用域名格式 保存并关闭文件。重启Apache。 sudo systemctl重启apache2 然后在web浏览器地址栏中键入 地图你的领域。com/osm/0/0/0。巴布亚新几内亚 你应该看到世界地图的瓷砖。恭喜!您刚刚成功构建了自己的OSM磁贴服务器。 如果已启用UFW防火墙,请确保使用以下命令打开端口80和443。 sudo ufw允许80443/tcp 第11步:显示平铺的网络地图 平铺网络地图在OpenStreetMap术语中也称为slippy地图。有两个免费的开源JavaScript地图库可用于tile服务器:OpenLayer和传单。传单的优点是使用简单,而且地图便于移动。 露天层 要使用OpenLayer显示你的slippy地图,请从OpenLayer下载JavaScript和CSS。组织并将其解压缩到webroot文件夹。 cd/var/www/sudo wgethttps://github.com/openlayers/openlayers/releases/download/v5.3.0/v5.3.0.zipsudo解压v5。3.0.拉链 接下来,创建索引。html文件。 sudo nano/var/www/index。html 在文件中粘贴以下HTML代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。 <!DOCTYPE html&gt&书信电报;html&gt&书信电报;头&gt&书信电报;meta charset=“UTF-8”大于&书信电报;标题>无障碍地图&lt/标题&gt&书信电报;link rel=“stylesheet”href=”http://map.yourdomain.com/v5.3.0/css/ol.css“type=“text/css”><script src=”http://map.yourdomain.com/v5.3.0/build/ol.js“></script><style>a.skipling{位置:绝对;剪辑:rect(1px,1px,1px,1px);填充:0;边框:0;高度:1px;宽度:1px;溢出:隐藏;}”a、 skiplink:focus{clip:auto;height:auto;width:auto;background color:#fff;padding:0.3em;}#地图:焦点{轮廓:#4A74A8固体0.15em;}&lt/风格&gt&lt/头&gt&书信电报;车身&gt&书信电报;a class=“skipling”href=“#map”>转到地图&lt/a&gt&书信电报;div id=“map”class=“map”tabindex=“0”&gt&lt/部门&gt&书信电报;按钮id=“缩小”>缩小&lt/按钮&gt&书信电报;按钮id=“放大”>放大&lt/按钮&gt&书信电报;脚本>var map=新ol。Map({layers:[new ol.layer.Tile({source:new ol.source.OSM({url:'http://map.yourdomain.com/osm/{z} /{x}/{y}。png'})}),目标:'map',控件:ol。控制默认值({attributeoptions:/**@type{olx.control.attributeoptions}*/({collapsable:false})),视图:new ol。视图({center:[244780.245088823557386452.183179816],zoom:5});文件getElementById(“缩小”)。onclick=function(){var view=map.getView();var zoom=view.getZoom();view.setZoom(zoom-1);};文件getElementById(“放大”)。onclick=function(){var view=map.getView();var zoom=view.getZoom();view.setZoom(zoom+1);}&lt/脚本&gt&lt/车身&gt&lt/html> 保存并关闭文件。现在你可以通过在浏览器地址栏中输入你的子域来查看你的拖拉地图。 地图你的地盘。通用域名格式 或 地图你的地盘。com/index。html 传单 要使用Leftlet显示slippy地图,请从leftletjs下载JavaScript和CSS。com并将其解压缩到webroot文件夹。 cd/var/www/sudo wgethttp://cdn.leafletjs.com/leaflet/v1.6.0/leaflet.zipsudo解压传单。拉链 接下来,创建索引。html文件。 sudo nano/var/www/index。html 在文件中粘贴以下HTML代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。 <html&gt&书信电报;头&gt&书信电报;meta charset=“UTF-8”大于&书信电报;标题>我的第一个osm&lt/标题&gt&书信电报;link rel=“stylesheet”type=“text/css”href=“传单.css”/&gt&书信电报;script type=“text/javascript”src=“ployate.js”&gt&lt/脚本&gt&书信电报;风格&gt#地图{宽度:100%;高度:100%}&lt/风格&gt&lt/头&gt&书信电报;车身&gt&书信电报;div id=“map”&gt&lt/部门&gt&书信电报;脚本>var map=L.map('map')。setView([53.555,9.899],5);蒂莱莱耶http://map.yourdomain.com/osm/{z} /{x}/{y}。png',{maxZoom:18})。addTo(地图)&lt/脚本&gt&lt/车身&gt&lt/html> 保存并关闭文件。现在,您可以通过在浏览器中键入服务器IP地址来查看拖沓的地图。 地图你的地盘。通用域名格式 或 地图你的地盘。com/index。html 步骤12:预渲染瓷砖 动态渲染平铺将增加在web浏览器中加载地图的时间。要预渲染平铺而不是动态渲染,请使用以下render_list命令。使用-z和-z标志指定缩放级别,并根据服务器上的CPU内核数替换线程数。Render_list通过向渲染守护进程发送请求来渲染贴图分幅列表。预渲染的磁贴将缓存在/var/lib/mod_tile目录中。 render_list-m default-a-z 0-z 19--num threads=10 如果以后更新了贴图数据,可以使用--force选项再次预渲染所有分片。 render_list-m default-a-z 0-z 19--num threads=10--force 要在背景中渲染贴图分幅,请添加&结尾的符号。 render_list-m default-a-z 0-z 19--num threads=10& 现在你可以关闭终端窗口了。要检查呈现进度,请打开另一个SSH会话,然后运行以下命令。 sudo journalctl-欧盟趋势 上面的命令将显示renderd服务的最新日志。以下几行显示我的OSM服务器现在正在以缩放级别12渲染地图分幅。 renderd[20838]:调试:开始平铺默认值12 1008-1015 4056-4063,新metatile renderd[20838]:渲染投影坐标12 1008 4056-&gt-10175297.205328 |-19724422.274944-10097025.688364 |-19646150.757980到一个8 x 8平铺渲染[20838]:调试:在0.799秒内完成平铺默认12 1008-1015 3984-3991渲染[20838]:调试:将协议版本2的渲染命令(3默认12/1008/3984)发送到fd 18渲染[20838]:调试:使用协议版本2 renderd[20838]获得传入请求:调试:获得命令RenderBulk fd(18)xml(默认),z(12),x(1008),y(4064),mime(图像/png),选项()渲染[20838]:调试:开始平铺默认值12 1008-1015 4064-4071,新metatile渲染[20838]:渲染投影坐标12 1008 4064-&gt-10175297.205328 |-19802693.791908-10097025.688364 |-19724422.274944至8 x 8瓷砖 步骤13:启用HTTPS 为了加密HTTP流量,我们可以从Let's encrypt获得并安装免费的TLS证书。首先,在Ubuntu 18.04上安装Let's Encrypt客户端(certbot)。 sudo add apt repository ppa:certbot/certbot sudo apt install certbot 因为我们使用的是ApacheWeb服务器,所以我们还需要安装Apache插件。 sudo apt安装python3 certbot apache 然后运行以下命令获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--style ocsp--must style--email[email protected]-d map。你的地盘。通用域名格式 安装证书后,刷新网页,您将在地址栏中看到一个锁。 如果你在Firefox地址栏中看到一个黄色的三角形,这意味着tile URL仍在使用HTTP。你需要编辑索引。html文件,并使用以下命令将所有HTTP协议替换为HTTPS。 sudo sed-i's/http/https/g'/var/www/index。html 步骤14:启用HTTP2 为了进一步提高映射加载性能,可以启用HTTP2协议。首先,需要启用HTTP2模块。 sudo a2enmod http2 然后打开SSL虚拟主机文件。 sudo nano/etc/apache2/sites enabled/tileserver_site-le-ssl。形态 在打开后放置以下指令<VirtualHost*:443>标签 协议h2 http/1.1 保存并关闭文件。然后重启Apache,使更改生效。 sudo systemctl重启apache2 限制对OSM磁贴服务器的访问 默认情况下,任何人都可以使用OpenLayer或传单创建一个带有tile服务器URL的滑动地图。要限制对tile服务器的访问,请编辑Apache虚拟主机文件。 sudo nano/etc/apache2/sites enabled/tileserver_site-le-ssl。形态 在<VirtualHost>标签。 <位置/osm>SetEnvIf Referer example/。com trusted_referer Order deny,allow deny from all allow from env=trusted_referer&lt/地点> 上面的代码检查HTTP referer头是否包含您自己的域。否则,将拒绝访问/osm目录。反斜杠用于转义点字符。要将多个主机名添加为受信任的引用,请使用以下语法。 SetEnvIf Referer(example/.com | www/.example/.com | map/.example/.com)可信的_Referer 保存并关闭文件。然后测试语法。 sudo apache2ctl-t 如果语法正确,请重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 自动更新TLS证书 您可以创建Cron作业来自动续订TLS证书。只需打开root用户的crontab文件。 sudo crontab-e 在文件底部添加以下行。 @每日certbot更新——安静与&systemctl重新加载apache2 不同主机上的PostgreSQL数据库和Web服务器 如果PostgreSQL和Apache web服务器位于不同的主机上,则需要编辑该项目。Apache主机上的mml文件。 nano/home/osm/openstreetmap-carto-4.20.0/project。嗯 找到以下几行: osm2pgsql:&osm2pgsql类型:“postgis”dbname:“gis”键字段:“几何体”字段:“方式”范围:“-20037508,-200375082003750820037508” 指定PostgreSQL数据库服务器的IP地址。 osm2pgsql:&osm2pgsql类型:“postgis”主机:“10.0.0.2”数据库名:“gis”键字段:“几何体”字段:“方式”范围:“-20037508,-200375082003750820037508” 保存并关闭文件。然后使用carto map样式表编译器构建Mapnik XML样式表。 carto项目。mml>风格xml 在PostgreSQL数据库服务器上,编辑主配置文件。 sudo nano/etc/postgresql/10/main/postgresql。形态 添加以下行,将PostgreSQL设置为在所有接口上侦听。 听_addresses='*' 保存并关闭文件。然后编辑PostgreSQL客户端身份验证配置文件。 sudo nano/etc/postgresql/10/main/pg_hba。形态 在文件末尾添加以下行,以允许osm用户从Apache主机登录。将10.0.0.1替换为Apache主机的IP地址。 主机gis osm 10.0.0.1/32信任 保存并关闭文件。然后重新启动PostgreSQL。 sudo systemctl重启postgresql 在Apache主机上重新启动渲染守护程序。 sudo systemctl重新启动renderd 你需要查看renderd的日志。确保renderd不会在日志中产生任何错误,否则地图将不会显示。 sudo journalctl-欧盟趋势 还应限制对PostgreSQL数据库服务器端口5432的访问。例如,您可以使用以下UFW命令只允许Apache主机的IP地址。 sudo ufw允许从10.0.0.1进入任何端口5432 结论 我希望本教程能帮助您在Ubuntu18.04上安装OpenStreetMap tile服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:54
  • 在Ubuntu 20.04服务器上设置Apache Guacamole远程桌面

    本教程将向您展示如何在Ubuntu20.04服务器上设置鳄梨酱远程桌面。GuaCAMOLE是由Apache软件基金会开发的一个免费的开源远程桌面网关。 鳄梨酱特色 它允许您从web浏览器访问远程桌面。不需要在客户端安装其他软件。 支持VNC、RDP、SSH和Kubernetes等标准协议。 VNC会话可以以图形方式记录。 使用CAS、OpenID Connect或SAML 2.0进行单点登录 唤醒局域网 轻松管理多个远程桌面会话。 支持TOTP双因素身份验证。 支持剪贴板(复制和粘贴)和通过SFTP传输文件。 支持音频输入和输出 还有更多。 鳄梨酱本身不是远程桌面协议。它是远程桌面和客户端之间的代理,因此可以在web浏览器中显示和控制远程桌面。 步骤1:从源代码构建鳄梨酱服务器 登录Ubuntu20.04服务器并安装依赖软件包。 sudo apt更新sudo apt install build essential libcairo2 dev libjpeg-turbo8-dev libpng dev libtool bin libossp uuid dev libvncserver dev freerdp2 dev libssh2-1-dev libtelnet dev libwebsockets dev libpulse dev libvorbis dev libwebp dev libssl dev libpango1。0-dev libswscale dev libavcodec dev libavutil dev libavformat dev 下载最新稳定版本的鳄梨酱服务器。 wgethttp://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz 提取档案。 tar-xvf鳄梨酱-server-1.2.0。焦油广州 切换到提取的目录。 cd鳄梨酱-server-1.2.0 配置构建环境。 ./configure--with init dir=/etc/init。D 然后编译鳄梨酱服务器。 sudo make 安装鳄梨酱服务器。 sudo make安装 更新已安装库的系统缓存。 sudo ldconfig 重新加载systemd,这样就可以找到安装在/etc/init中的Guacamole代理守护进程(Guacamole proxy daemon)服务。d/目录。 sudo systemctl后台程序重新加载 开始吃鳄梨酱。 sudo systemctl启动guacd 启动时启用自动启动。 sudo systemctl enable guacd 检查它的状态。 系统控制状态表 如你所见,它处于活动状态(正在运行)。 Guacd在127.0.0.1:4822上监听,如ss实用程序所示。 sudo ss-lnpt | grep guacd 第2步:安装鳄梨酱Web应用程序 鳄梨酱web应用程序是用Java编写的,所以我们需要安装一个Java Servlet容器,比如ApacheTomcat。 sudo apt安装tomcat9 tomcat9 admin tomcat9 common tomcat9 user Apache Tomcat将在端口8080上监听,如下所示: sudo ss-lnpt | grep java 如果有其他软件监听端口8080,那么Tomcat无法绑定到端口8080。您应该将另一个进程配置为使用不同的端口,然后重新启动Tomcat(sudo systemctl restart tomcat9)。 接下来,下载鳄梨酱web应用程序。 wgethttps://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war 将文件移动到web应用程序目录(/var/lib/tomcat9/webapps),同时重命名文件(删除版本号)。 sudo mv鳄梨酱-1.2.0。war/var/lib/tomcat9/webapps/guacamole。战争 重启Tomcat和guacd。 sudo systemctl重启tomcat9 guacd 第3步:配置鳄梨酱 为鳄梨酱创建一个配置目录。 sudo mkdir/etc/鳄梨酱/ 创建一个配置文件。 sudo nano/etc/鳄梨酱/鳄梨酱。属性 在此文件中添加以下行。有些人可能会说,不需要添加这些行,因为它们是默认值。我向您展示了一个基本配置,以便您可以在需要时对其进行自定义。 #guacamole代理的主机名和端口guacd主机名:localhost guacd端口:4822#身份验证提供程序类(验证用户/密码组合,如果使用提供的登录屏幕,则需要)身份验证提供程序:net。sourceforge。鳄梨酱。网基本的BasicFileAuthenticationProvider基本用户映射:/etc/guacamole/user mapping。xml 保存并关闭文件。Guacamole中的默认身份验证模块从XML文件:/etc/Guacamole/user mapping中读取用户名和密码。xml。在创建此文件之前,我们需要使用以下命令为您的密码生成MD5哈希。将_密码替换为首选密码。 echo-n您的|密码| openssl md5 样本输出: (标准数据)=1060b7b46a3bd36b3a0d66e0127d0517 接下来,创建用户映射XML文件。 sudo nano/etc/guacamole/user mapping。xml 添加以下行。这里我们指定后端将使用VNC(虚拟网络计算)协议。替换用户名和密码哈希。稍后我们将创建一个VNC密码。 <用户映射&gt<!——每用户身份验证和配置信息--&gt&书信电报;授权用户名=“您的首选用户名”密码=“1060b7b46a3bd36b3a0d66e0127d0517”编码=“md5”&gt&书信电报;连接名称=“默认值”&gt&书信电报;协议>vnc&lt/协议&gt&书信电报;param name=“hostname”>localhost&lt/param&gt&书信电报;param name=“port”>5901&lt/param&gt&书信电报;param name=“password”>vnc_密码&lt/param&gt&lt/连接&gt&lt/授权&gt&lt/用户映射> 保存并关闭文件。重启Tomcat和guacd。 sudo systemctl重启tomcat9 guacd 第4步:在Ubuntu 20.04服务器上安装桌面环境 因为我们要设置一个远程桌面,所以我们需要一个桌面环境。在安装桌面环境之前,确保服务器有足够的RAM。有许多桌面环境。我发现轻量级XFCE桌面环境与VNC配合良好,所以请使用以下命令安装它。 sudo apt安装xfce4 xfce4 goodies firefox 在安装过程中,可能会要求您选择默认的显示管理器。这个选择无关紧要,因为在VNC会话中,您不会看到登录屏幕。 由于服务器上运行的是桌面环境,因此强烈建议您使用UFW之类的防火墙来限制访问,并仅向公众打开必要的端口。你可以阅读下面的教程来学习如何在Ubuntu上启用和使用UFW。 如何在Debian、Ubuntu、Linux Mint上使用UFW防火墙 第5步:在Ubuntu 20.04服务器上安装VNC服务器 Linux用户可以使用几种VNC服务器软件。我们将使用TigerVNC服务器,因为它最适合鳄梨酱。 sudo apt安装tigervnc独立服务器 运行以下命令以启动VNC服务器。 vncserver 当TigerVNC首次启动时,它会要求您设置VNC密码。请注意,密码不应超过8个字符。然后,您可以选择是否需要仅查看密码。 现在,您应该编辑/etc/guacamole/user映射。xml文件并更改VNC密码。然后重启Tomcat和Guad。 sudo systemctl重启tomcat9 guacd vncserver命令在主目录下创建两个文件。 ~/.Xauthrirty ~/.vnc/xstartup xstartup文件指定将由TigerVNC服务器启动的应用程序。编辑这个文件。 纳米~/。vnc/xstartup 改变 #!/垃圾箱/垃圾箱 到 #!/宾/巴什 因为Bash是Linux上的标准Shell。然后注释掉下面几行。(在每行开头添加#字符)。 xsetroot-纯灰色导出XKL_XMODMAP_DISABLE=1/etc/X11/Xsession 接下来,在底部添加以下行,这将使TigerVNC服务器启动LXQT桌面环境。startxfce4二进制文件由xfce4会话包安装。 startxfce4& 保存并关闭文件。 故障排除 如果你的tigerVNC服务器没有创建~/。vnc/xstartup文件和vnc服务器出现如下故障: 然后可以手动创建该文件。 纳米~/。vnc/xstartup 在文件中添加以下行。 #!/bin/sh xrdb$HOME/。Xresources startxfce4& 保存并关闭文件。 创建Systemd服务 TigerVNC服务器不附带任何systemd服务单元。为了在启动时启动,我们需要创建一个systemd服务单元。 sudo nano/etc/systemd/system/[电子邮件和#160;受保护] 在文件中添加以下行。用真实用户名替换用户名。 [Unit]Description=在=syslog之后为VNC启动X服务器的包装器。目标网络。target[Service]Type=forking User=username Group=username WorkingDirectory=/home/username ExecStartPre=-/usr/bin/vncserver-kill:%i&gt/开发/空2&gt&1 ExecStart=/usr/bin/vncserver-depth 24-geometry 1280x800-localhost:%i ExecStop=/usr/bin/vncserver-kill:%i[Install]WantedBy=multi-user。目标 保存并关闭文件。停止当前的VNC服务器实例。 vncserver-kill:1 用systemd启动VNC服务器。 sudo systemctl start[电子邮件和#160;受保护] 启动时启用自动启动。 sudo systemctl启用[电子邮件和#160;受保护] 检查其状态: systemctl状态[电子邮件和#160;受保护] 如你所见,它处于活动状态(正在运行)。 现在TigerVNC服务器监听端口5901。 sudo ss-lnpt | grep vnc 步骤6:为鳄梨酱Web应用程序设置反向代理 Apache Tomcat正在监听端口8080。为了方便地访问Guacamole web应用程序,我们可以使用Apache或Nginx设置反向代理,以便最终用户能够使用域名访问web应用程序。它还允许我们轻松安装TLS证书来加密连接。 阿帕奇 如果你喜欢使用Apache,那么从默认的Ubuntu软件库安装Apache。 sudo apt安装apache2 要使用Apache作为反向代理,我们需要启用代理模块和头模块。 sudo a2enmod代理u http头代理u wstunnel 然后为鳄梨酱创建一个虚拟主机文件。 sudo nano/etc/apache2/网站可用/鳄梨酱。形态 在文件中添加以下行。更换鳄梨酱。实例使用你自己的域名。记住在DNS管理器中为子域创建A记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 <虚拟主机*:80>ServerName鳄梨酱。实例com ErrorLog${APACHE_LOG_DIR}/guacamole_error。log CustomLog${APACHE_log_DIR}/guacamole_访问。日志合并<地点/>要求所有授予的ProxyPasshttp://localhost:8080/guacamole/flushpackets=在ProxyPassReverse上http://localhost:8080/guacamole/&lt/地点&gt&书信电报;位置/websocket隧道>需要所有授予的代理权限ws://localhost:8080/guacamole/websocket tunnel代理权限ws://localhost:8080/guacamole/websocket tunnel&lt/地点>标题始终未设置X帧选项&lt/VirtualHost> 保存并关闭文件。测试语法。 sudo apachectl-t 如果Syntx正常,则启用此虚拟主机。 sudo a2ensite鳄梨酱。形态 重新启动Apache sudo systemctl重启apache2 现在,您可以通过鳄梨酱访问Apache鳄梨酱登录页面。实例通用域名格式。如果看到“无效请求”或类似的错误消息,则可能意味着Apache Tomcat无法绑定到端口8080,因为该端口已被服务器上的另一个进程占用。您应该将另一个进程配置为使用不同的端口,然后重新启动Tomcat。 Nginx 如果你喜欢使用Nginx,那么从默认的Ubuntu软件库安装Nginx。 sudo apt安装nginx 为鳄梨酱创建服务器块文件。 sudo nano/etc/nginx/conf.d/guacamole。形态 在文件中添加以下行。更换鳄梨酱。实例使用你自己的域名。记住在DNS管理器中为子域创建A记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 服务器{listen 80;listen[:]:80;服务器名guacamole.example.com;access_log/var/log/nginx/guac_access.log;error_log/var/log/nginx/guac_error.log;location/{proxy_passhttp://127.0.0.1:8080/guacamole/; 缓冲;proxy_http_版本1.1;proxy_set_header X-Forwarded-For$proxy_add_X_Forwarded_For;代理设置头升级$httpU升级;代理设置头连接$httpU连接;代理_cookie_path/guacamole/;} 保存并关闭此文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 现在,您可以通过鳄梨酱访问Apache鳄梨酱登录页面。实例通用域名格式。如果看到“无效请求”或类似的错误消息,则可能意味着Apache Tomcat无法绑定到端口8080,因为该端口已被服务器上的另一个进程占用。您应该将另一个进程配置为使用不同的端口,然后重新启动Tomcat。 启用HTTPS 为了在访问鳄梨酱web界面时加密HTTP流量,我们可以通过安装Let's encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu 20.04上安装Let's Encrypt client(certbot)。 sudo apt安装certbot 如果使用Apache,则需要安装Certbot Apache插件。 sudo apt安装python3 certbot apache 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email protected]-d鳄梨酱。实例通用域名格式 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--stapple ocsp--email[email protected]-d鳄梨酱。实例通用域名格式 哪里: --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 您可以通过HTTPS访问鳄梨酱web界面。(https://guacamole.example.com). 登录后,您将能够使用远程桌面。 收尾 我希望本教程能帮助您在Ubuntu20.04服务器上设置Apache Guacamole远程桌面。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:58
  • 如何在Ubuntu 20.04服务器上安装Passbolt密码管理器

    Passbolt是一个开源的自托管密码管理器,它允许您安全地存储和共享网站的登录凭据、路由器密码、Wi-Fi密码等。本教程将向您展示如何使用Apache或Nginx web服务器在Ubuntu20.04上安装Passbolt Community Edition(CE)。 Passbolt特性 免费&开源 密码使用OpenPGP加密,OpenPGP是一种经过验证的加密标准。 Firefox和Google Chrome都有浏览器扩展。 在不影响安全性的情况下,轻松与团队共享登录凭据。 干净、用户友好的界面。 导入和导出密码。您可以将密码导出到。kdbx或。用于KeepassX、LastPass或1password的csv文件格式。 您可以手动添加登录凭据。 在Ubuntu 20.04服务器上安装Passbolt的先决条件 Passbolt是用PHP编写的,依赖于MySQL/MariaDB数据库服务器。因此,在安装Passbolt之前,您需要设置一个灯组或LEMP组。如果您更喜欢ApacheWeb服务器,请设置LAMP堆栈。 如何在Ubuntu 20.04上安装LAMP Stack 如果您更喜欢Nginx web服务器,那么设置LEMP堆栈。 如何在Ubuntu 20.04上安装LEMP堆栈 你还需要一个域名,这样你就可以通过网络浏览器从任何地方安全地访问Passbolt。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 满足上述要求后,按照以下说明安装Passbolt。 第一步:将Passbolt下载到你的Ubuntu 20.04服务器上 如果你去官方网站下载Passpolt,你需要输入你的姓名和电子邮件地址。如果您不喜欢,那么在服务器上执行以下命令,从Github下载最新的稳定版本。 sudo apt install git cd/var/www/sudo git clonehttps://github.com/passbolt/passbolt_api.git 这些文件将保存在passbolt_api目录中。我们把它改名为passbolt。 sudo mv passbolt_api passbolt 然后使web服务器用户(www数据)成为该目录的所有者。 sudo chown-R www-data:www-data/var/www/passbolt 运行以下命令安装Passpolt所需或推荐的PHP模块 sudo apt安装php-imagick-php-gnupg-php7。4-常见php7。4-mysql php7。4-fpm php7。4-ldap php7。4-gd php7。4-imap php7。4-json php7。4-卷曲php7。4-zip php7。4-XMLPHP7。4-Mb字符串php7。4-bz2 php7。4-intl php7。4-gmp php7。4-xsl 然后重启Apache。(如果使用Nginx,则无需重新启动Nginx。) sudo systemctl重启apache2 更改目录。 cd/var/www/passbolt/ 安装Composer–PHP依赖项管理器。 sudo-apt-install-composer 为Composer创建缓存目录。 sudo mkdir/var/www/。创作者 将www数据作为所有者。 sudo chown-R www-data:www-data/var/www/。创作者 使用Composer安装依赖项。 sudo-uWWW数据生成器安装--无开发 如果它要求您设置文件夹权限,请选择Y. 步骤2:为Passbolt创建一个MariaDB数据库和用户 登录MariaDB控制台。 sudo mysql-u root 接下来,使用以下命令为Passbolt创建一个新数据库。本教程将其命名为passbolt,您可以对数据库使用任何您喜欢的名称。我们还指定utf8mb4作为字符集,以支持非拉丁字符和表情符号。 创建数据库密码默认字符集utf8mb4 COLLATE utf8mb4_unicode_ci; 下面的命令将创建数据库用户和密码,同时将新数据库的所有权限授予新用户,以便Passbolt稍后可以写入数据库。将红色文本替换为首选的数据库名称、用户名和密码。 授予所有通行证。*至“passboltuser”@“localhost”,由“password”标识; 刷新特权表并退出MariaDB控制台。 同花顺特权;出口 步骤3:生成OpenPGP密钥 如果您使用的是VPS(虚拟专用服务器),建议安装haveged软件包以产生足够的熵。 sudo-apt-haveged 黑帮。安装后服务将自动启动。您可以通过以下方式检查其状态: sudo systemctl状态已恢复 然后运行以下命令生成一个新密钥对。 gpg——通用密钥 您将被要求输入您的姓名和电子邮件地址。如果要求您设置密码短语,请按Tab键并选择OK跳过它,因为php gnupg模块目前不支持使用密码短语。 将私钥复制到Passpolt配置位置。生成PGP密钥时,将[email protected]替换为电子邮件地址。 gpg——armor——导出密钥[email protected]| sudo tee/var/www/passbolt/config/gpg/serverkey_private。asc&gt/dev/null 并复制公钥。 gpg——装甲——导出[email protected]| sudo tee/var/www/passbolt/config/gpg/serverkey。asc&gt/dev/null 初始化www数据用户的密钥环。 sudo su-s/bin/bash-c“gpg——列出键”www数据 第4步:配置Passbolt 确保您位于/var/www/passbolt/目录中。 cd/var/www/passbolt/ 将示例配置文件复制到生产配置文件。 sudo cp config/passbolt。违约php config/passbolt。php 使用命令行文本编辑器(如Nano)编辑配置文件。 sudo nano config/passbolt。php 首先,找到下面这行。 “fullBaseUrl”=>'https://www.passbolt.test', 用自己的URL替换URL,如https://passbolt.yourdomain.com.不要忘记在DNS记录管理器中为此子域创建DNS记录。 在数据库配置部分,输入在步骤2中创建的数据库名称、数据库用户名和密码。 //“数据库配置。”数据源“=>['default'=>['host'=>'localhost',//'port'=>'non_standard_port_number','username'=>'user','password'=>'secret','database'=>'passbolt',], 在电子邮件配置部分, 指定SMTP主机名、端口号、登录凭据,以便Passpolt可以发送电子邮件。通常,您需要使用端口587将电子邮件发送到远程SMTP服务器。确保将tls设置为true,这样SMTP事务将被加密。 同时设置发件人:电子邮件地址和发件人姓名。 //电子邮件配置。”EmailTransport'=>['default'=>['host'=>'mail.yourdomain.com','port'=>587','username'=>'[email protected],'password'=>'机密“,//这是安全连接吗?如果是,则为true;如果否,则为null。'tls'=>为true,//“超时”=>30、/“客户”=>空,//url'=>空、]、]、“电子邮件”=>['default'=>[//定义电子邮件发件人的默认名称和电子邮件。'from'=>['[email protected]u组织。com'=>'Passbolt'],//charset'=>'utf-8',//'headerCharset'=>'utf-8',],], 要轻松设置自己的电子邮件服务器,请查看以下教程。 如何使用iRedMail在Ubuntu20.04上轻松设置自己的邮件服务器 注意:如果Passpolt与邮件服务器安装在同一个框中,则无需在EmailTransport中指定用户名和密码。只需使用//注释掉这两行。下面的屏幕截图显示了此场景的示例配置。 在gpg部分,输入gpg密钥指纹,如下所示。您需要删除指纹中的所有空白。 “指纹”=>'2FC8945833C51946E937F9FED47B0811573EE67E', 您可以使用以下命令获取密钥指纹。生成PGP密钥对时,将[email protected]替换为您的电子邮件地址。 gpg——列出密钥——指纹| grep-i-b2'[email protected]' 输入指纹后,取消对以下两行的注释。 “公开”=>配置。”gpg'。“是的。”服务器键。asc、private=>配置。”gpg'。“是的。”ServeKey_private。asc', 保存并关闭文件。 第5步:运行安装脚本 以www数据用户的身份运行安装脚本。 sudo su-s/bin/bash-c.“/bin/cake passbolt安装--force”www-data 在安装过程中,系统会要求您创建一个管理员帐户。 一旦你创建了一个帐户,你将获得一个URL,以便在web浏览器中完成安装。在此之前,我们需要使用Apache或Nginx配置web服务器。 步骤6:为Passbolt创建Apache虚拟主机或Nginx配置文件 阿帕奇 如果使用ApacheWeb服务器,请为Passbolt创建一个虚拟主机。 sudo nano/etc/apache2/网站可用/passbolt。形态 将以下文本放入文件中。更换安全螺栓。实例com与你的真实域名,别忘了为它设置DNS记录。还要注意,Passbolt的web根是/var/www/Passbolt/webroot/,而不是/var/www/Passbolt/。 <虚拟主机*:80>服务器名passbolt。埃克斯马普尔。com DocumentRoot/var/www/passbolt/webroot/ErrorLog${APACHE_LOG_DIR}/error。log CustomLog${APACHE_log_DIR}/access。日志合并<目录/>选项如下SymLinks AllowOverride All&lt/目录&gt&书信电报;目录/var/www/passbolt/>选项如下SymLinks Multiview allow Override All Order allow,deny allow from All&lt/目录&gt&lt/VirtualHost> 保存并关闭文件。然后通过以下方式启用此虚拟主机: sudo a2ensite Passpolt。形态 重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 Nginx 如果使用Nginx web服务器,请为Passbolt创建一个虚拟主机。 sudo nano/etc/nginx/conf.d/passbolt。形态 将以下文本放入文件中。更换安全螺栓。实例com与你的真实域名,别忘了为它设置DNS记录。还要注意,Passbolt的web根是/var/www/Passbolt/webroot/,而不是/var/www/Passbolt/。 服务器{listen 80;listen[:]:80;server_name passbolt.example.com;root/var/www/passbolt/webroot/;error_log/var/log/nginx/passbolt.error;access_log/var/log/nginx/passbolt.access;index index.php index.html index.htm index.nginx-debian.html;location/{try_files$uri$uri//index.php?$query string;}地点~/。php${#try_files$uri=404;fastcgi_split_path_info^(.+/.php)(/.+)$;#注意:您应该有“cgi.fix_pathinfo=0”在php中。ini fastcgi_pass unix:/var/run/php/php7。4-fpm。短袜fastcgi_索引。php;fastcgi_参数SCRIPT_FILENAME$document_root$fastcgi_SCRIPT_name;包括fastcgi_参数;fastcgi_缓冲区大小128k;fastcgi_缓冲区256 16k;fastcgi_busy_busy_buffers_size 256k;fastcgi_temp_file_write_size 256k;}不要记录favicon location=/favicon。ico{log_not_found off;access_log off;}不要记录robots location=/robots。txt{access_log off;log_not_found off;}拒绝访问隐藏文件/文件夹的所有尝试,例如。htaccess。htpasswd。DS_商店(Mac)等。。。地点~//。{拒绝所有;访问注销;注销未发现;}拒绝所有grunt、composer文件位置~*(GrunFile | package | composer)/。(js | json)${deny all;access_log off;log_not_found off;}#较长的浏览器缓存寿命可以加快对页面位置的重复访问~*/。(jpg | jpeg | gif | png | webp | svg | woff | woff2 | ttf | css | js | ico | xml)${accesslog off lognot found off;expires 360d;} 保存并关闭文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 第7步:启用HTTPS 为了加密HTTP流量,我们可以通过安装Let's encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu20.04服务器上安装Let's Encrypt client(certbot)。 sudo apt安装certbot 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--staple ocsp--email[email protected]-d passbolt。实例通用域名格式 如果使用Apache,请安装Certbot Apache插件。 sudo apt安装python3 certbot apache 并运行此命令以获取并安装TLS证书。 sudo certbot--apache--同意tos--重定向--hsts--订书机ocsp--电子邮件[email protected]-d passbolt。实例通用域名格式 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 步骤8:在Web浏览器中完成Passbolt安装 首先,您需要在Firefox或Google Chrome浏览器上安装Passbolt扩展。 Firefox的Passpolt扩展 Google Chrome的Passbot扩展 现在复制运行安装脚本后获得的URL,并将其粘贴到浏览器的地址栏中。您将看到基于web的设置向导。第一步是确保域和服务器密钥指纹正确。 在第二步中,只需单击“下一步”按钮即可创建新密钥。 在第三步中,创建一个密码短语。 然后下载加密的密钥并将其存储在安全的地方。只有使用您的密码才能解密此密钥。 在第四步中,设置一个安全令牌。 最后,您可以使用您的密码登录。 现在您可以创建密码,从csv或kdbx文件导入密码。 第8步:设置Cron作业以自动发送电子邮件 要发送系统电子邮件,请运行以下命令。 sudo-u www-data/var/www/passbolt/bin/cake-EmailQueue。发件人 您可以在www数据用户的Crontab文件中添加该命令,以自动处理电子邮件。 sudo crontab-u www-data-e 在文件中添加以下行以每分钟处理电子邮件。 ****/var/www/passbolt/bin/cake-EmailQueue。发件人 保存并关闭文件。 (可选)设置ModSecurity 您可能还想设置ModSecurity web应用程序防火墙,以保护您的PHP web应用程序免受黑客攻击。如果您在Debian/Ubuntu上使用Apache web服务器,请阅读以下教程。 如何在Debian/Ubuntu上使用Apache设置ModSecurity 如果您在Debian/Ubuntu上使用Nginx web服务器,请阅读以下教程: 如何在Debian/Ubuntu上使用Nginx设置ModSecurity 故障排除 如果你试图创建一个密码,但却被困在“深呼吸,享受当下……”屏幕上,很可能是因为你的Apache或Nginx配置文件中有什么东西。如果从文章中复制Apache/Nginx配置,那么在创建密码时应该没有问题。 如果启用了ModSecurity web应用程序防火墙,您会看到无法验证服务器密钥错误。 然后需要在ModSecurity中添加以下自定义规则排除。 SecRule REQUEST_URI“@streq/auth/verify.json?api version=v2”“id:1060,阶段:2,ctl:ruleRemoveById=942100” 然后重新启动web服务器。 sudo systemctl重启apache2 或 sudo systemctl重启nginx 收尾 我希望本教程能帮助你在Ubuntu 20.04上安装Passbolt。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:79
  • 如何在Ubuntu 20.04上设置OpenStreetMap Tile服务器

    OpenStreetMap(OSM)是一个用户贡献的、可自由编辑的世界地图。你可以把它看作是谷歌地图的开源和自托管替代品。本教程将向您展示如何在Ubuntu20.04上构建自己的OpenStreetMap tile服务器,这样您就不必使用专有的地图服务。 OpenStreetMap功能 OpenStreetMap的数据覆盖了全世界,因此可以方便地支持任何国家或每个国家的用户。 OpenStreetMap每天每小时每分钟都会更新,您可以实时获得这些更新。 OpenStreetMap数据是免费和开放的,不收取订阅费和页面浏览费。 OpenStreetMap数据丰富而详细,包含大量与地面人员相关的数据——收集数据的人员。 先决条件/硬件要求 所需的RAM和磁盘空间取决于要使用哪个国家的地图。例如 英国地图至少需要12G内存和100GB磁盘空间。 整个行星地图至少需要32G RAM和1TB SSD(固态驱动器)。用旋转硬盘来绘制整个地球地图是不可行的。 如果要在web浏览器中预渲染分幅以加快地图加载速度,则需要更多磁盘空间,这是强烈建议的。查看此磁贴磁盘使用情况页面,查看预渲染磁贴需要多少磁盘空间。例如,如果要为行星地图预渲染从缩放级别0到缩放级别15的平铺,则需要额外的460 GB磁盘空间。 另外需要注意的是,将大型地图数据(如整个地球)导入PostgreSQL数据库需要很长时间。考虑添加更多的RAM,特别是使用SSD,而不是旋转硬盘来加速导入过程。 如果你打算主持整个世界地图,我建议你从康塔博购买超大VPS,康塔博以 10核CPU 60 GB内存 1.6 TB英特尔Optane SSD 每月只需26.99欧元。 第一步:升级软件 在服务器上进行任何主要工作之前,更新服务器软件始终是一种好的做法。通过SSH登录服务器并运行以下命令。 sudo apt update; sudo apt upgrade 第2步:安装PostgreSQL数据库服务器和PostGIS扩展 我们将使用PostgreSQL存储地图数据。PostGIS是PostgreSQL的地理空间扩展。运行以下命令来安装它们。 sudo apt install postgresql postgresql-contrib postgis postgresql-12-postgis-3 PostgreSQL数据库服务器将自动启动并侦听127.0.0.1:5432。安装过程中将在操作系统上创建postgres用户。它是PostgreSQL数据库服务器的超级用户。默认情况下,该用户没有密码,也不需要设置密码,因为您可以使用sudo切换到postgres用户并登录到PostgreSQL server。 sudo -u postgres -i 现在可以创建PostgreSQL数据库用户osm。 createuser osm 然后创建一个名为gis的数据库,同时让osm成为数据库的所有者-UTF8指定数据库中使用的字符编码方案为UTF8。 createdb -E UTF8 -O osm gis 接下来,为gis数据库创建postgis和hstore扩展。 psql -c "CREATE EXTENSION postgis;" -d gis psql -c "CREATE EXTENSION hstore;" -d gis 将osm设置为表所有者。 psql -c "ALTER TABLE spatial_ref_sys OWNER TO osm;" -d gis 退出postgres用户。 exit 在操作系统上创建osm用户,以便平铺服务器可以作为osm用户运行。以下命令将创建一个没有密码的系统用户。 sudo adduser --system --group osm 第3步:下载地图样式表和地图数据 切换到osm的主目录。 cd /home/osm/ 使用git将最新的CartoCSS地图样式表下载到osm用户的主目录。 sudo apt install git git clone https://github.com/gravitystorm/openstreetmap-carto.git 如果在运行上述命令时看到“权限被拒绝”错误,则可以使用以下命令授予权限。用真实用户名替换用户名。 sudo apt install acl sudo setfacl -R -m u:username:rwx /home/osm/ 接下来,运行以下命令以PBF(ProtoBufBinary)格式下载整个行星(50G)的地图数据。 wget -c http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf 请注意openstreetmap的下载速度。org当前限制为2048kb/s。您可以从另一个镜像下载植物地图,如 wget -c https://download.bbbike.org/osm/planet/planet-latest.osm.pbf 如果你想要一张各个国家/州/省/市的地图,请访问http://download.geofabrik.de.还有,自行车。org以不同的格式提供了全球200多个城市和地区的摘录。例如,使用以下命令下载英国地图数据(1.1G)。 wget -c http://download.geofabrik.de/europe/great-britain-latest.osm.pbf 第4步:优化PostgreSQL Server性能 导入过程可能需要一些时间。为了加快这个过程,我们可以调整一些PostgreSQL server设置以提高性能。编辑PostgreSQL主配置文件。 sudo nano /etc/postgresql/12/main/postgresql.conf 首先,我们应该更改共享缓冲区的值。默认设置为: shared_buffers = 128MB 这个太小了。经验法则是将其设置为总RAM的25%(不包括交换空间)。例如,我的VPS有60G RAM,所以我将其设置为: shared_buffers = 15GB 找到下面这行。 #work_mem = 4MB #maintenance_work_mem = 64MB 同样,该值太小。我使用以下设置。 work_mem = 1GB maintenance_work_mem = 8GB 然后找到下面一行。 #effective_cache_size = 4GB 如果你像我一样有很多RAM,你可以为有效的缓存大小设置一个更高的值,比如20G。 effective_cache_size = 20GB 保存并关闭文件。重新启动PostgreSQL以使更改生效。 sudo systemctl restart postgresql 默认情况下,PostgreSQL会尝试在RAM中使用巨大的页面。然而,Linux默认情况下不会分配巨大的页面。检查PostgreSQL的进程ID。 sudo head -1 /var/lib/postgresql/12/main/postmaster.pid 样本输出: 7031 然后检查该进程ID的峰值。 grep ^VmPeak /proc/7031/status 样本输出: VmPeak: 16282784 kB 这是PostgreSQL将使用的峰值内存大小。现在检查Linux中巨大页面的大小。 cat /proc/meminfo | grep -i huge 样本输出: AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB Hugetlb: 0 kB 我们可以计算出我们需要多少巨大的页面。将VmPeak值除以巨大页面的大小:16282784KB/2048KB=7950。编辑/etc/sysctl。conf文件。 sudo nano /etc/sysctl.conf 在该文件末尾添加以下行以分配7950个大页面。 vm.nr_hugepages = 7950 保存并关闭文件。然后应用更改。 sudo sysctl -p 如果你再次查看meminfo, cat /proc/meminfo | grep -i huge 我们可以看到有7950个巨大的页面可用。 AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 7950 HugePages_Free: 7950 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB 重新启动PostgreSQL以使用大型页面。 sudo systemctl restart postgresql 在远程服务器上使用屏幕 由于导入过程可能需要很长时间,并且您的计算机可能已断开与Internet的连接,因此建议使用screen实用程序保持会话的活动状态。在Ubuntu 20.04服务器上安装屏幕: sudo apt install screen 然后启动屏幕: screen 第一次启动时,您将看到一个介绍文本,只需按Enter键即可结束。然后你就可以像往常一样运行命令了。 步骤5:将地图数据导入PostgreSQL 要导入地图数据,我们需要安装osm2pgsql,将OpenStreetMap数据转换为支持postGIS的PostgreSQL数据库。 sudo apt install osm2pgsql 向postgres用户授予权限。 sudo setfacl -R -m u:postgres:rwx /home/osm/ 切换到postgres用户。 sudo -u postgres -i 运行以下命令将地图样式表和地图数据加载到gis数据库中。最新取代英国。奥斯曼。pbf与您自己的地图数据文件。 osm2pgsql --slim -d gis --hstore --multi-geometry --number-processes 10 --tag-transform-script /home/osm/openstreetmap-carto/openstreetmap-carto.lua --style /home/osm/openstreetmap-carto/openstreetmap-carto.style -C 32000 /home/osm/great-britain-latest.osm.pbf 哪里 --苗条模式:在苗条模式下运行,而不是在正常模式下运行。如果希望将来使用OSM更改文件(OSC)更新地图数据,则需要此选项。 -d gis:选择数据库。 --hstore:将不带列的标记添加到PostgreSQL表的另一个hstore(key/value)列中 --多重几何图形:在postgresql表中生成多重几何图形特征。 --样式:指定样式文件的位置 --进程数:服务器上的CPU核心数。我有10个。 -C标志以兆字节为单位指定缓存大小。它应该是你机器上可用内存的70%左右。缓存大小越大,导入速度越快。例如,我的服务器有60GB的空闲RAM,所以我可以指定-C 32000。请注意,PostgreSQL将需要用于共享缓冲区的RAM。使用此公式计算缓存大小应该有多大:(总RAM-PostgreSQL共享_缓冲区)*70% 最后,需要指定地图数据文件的位置。 命令输出: 如果要导入完整的行星地图数据,请使用--drop选项和--flat nodes选项来提高导入速度。请注意--flat nodes选项不适用于小贴图。 osm2pgsql --slim -d gis --drop --flat-nodes /home/osm/nodes.cache --hstore --multi-geometry --number-processes 10 --tag-transform-script /home/osm/openstreetmap-carto/openstreetmap-carto.lua --style /home/osm/openstreetmap-carto/openstreetmap-carto.style -C 32000 /home/osm/planet-latest.osm.pbf 在导入过程中,RAM的使用将逐渐增加。 现在,您可能不需要在服务器上执行其他操作。由于您使用的是Screen,所以可以按Ctrl+A,释放这些键,然后按D键从当前屏幕会话中分离。您将看到如下消息。 [detached from 32113.pts-1.focal] 这告诉我之前的屏幕会话ID是32113。您可以从SSH会话中注销,甚至可以关闭计算机。别担心,OSM导入过程仍在运行。当需要返回并检查导入进度时,请将SSH连接到服务器并运行以下命令以获取上一个屏幕会话ID。 screen -ls 样本输出: There is a screen on: 32113.pts-1.focal (05/19/2020 03:45:29 PM) (Detached) 1 Socket in /run/screen/S-linuxbabe. 然后可以重新连接到上一个屏幕会话。 screen -r 32113 这样你就能继续工作了。导入完成后,将gis数据库的所有权限授予osm用户。 psql -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO osm;" -d gis 退出postgres用户。 exit 注意:如果osm2pgsql导入尚未完成,请不要继续执行步骤6。 故障排除 如果从PBF文件导入地图数据时遇到以下错误, PBF error : invalid Blobheader size (> max_blob_header_size) 这可能是因为您的PBF文件已损坏。验证PBF文件的md5sum,如下所示。 md5sum great-britain-latest.osm.pbf 将结果与PBF文件下载页面上的md5sum值进行比较。 第6步:安装Renderd和mod_tile renderd是一个后台程序,用于从PostgreSQL数据库呈现OpenStreetMap分幅。 mod_tile是一个Apache模块,用于向客户端(例如web浏览器)提供tile服务 默认的Ubuntu存储库不包括mod_tile和renderd,但我们可以从OSM PPA安装它们。 sudo apt install software-properties-common sudo add-apt-repository ppa:osmadmins/ppa sudo apt install apache2 libapache2-mod-tile renderd 将安装Apache web服务器,并在/etc/apache2/conf available/renderd上创建renderd的配置文件。形态。 启用平铺模块。 sudo a2enmod tile 接下来,为磁贴服务器创建一个虚拟主机。 sudo nano /etc/apache2/sites-available/tileserver_site.conf 在此文件中添加以下行。更换瓷砖。你的领域。使用你的真实域名。别忘了记录。 <VirtualHost *:80> ServerName tile.your-domain.com LogLevel info Include /etc/apache2/conf-available/renderd.conf </VirtualHost> 保存并关闭文件。启用此虚拟主机。 sudo a2ensite tileserver_site.conf 重新启动Apache以使更改生效。 sudo systemctl restart apache2 渲染守护进程将自动启动,如下所示: systemctl status renderd 第7步:生成Mapnik样式表 安装所需的软件包。 sudo apt install curl unzip gdal-bin mapnik-utils libmapnik-dev python3-pip 我们还需要使用以下命令从上游存储库安装nodejs和npm。 curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs 然后用npm安装carto软件包。 sudo npm install -g carto 安装psycopg2 Python模块。 sudo -H pip3 install psycopg2==2.8.5 切换到postgres用户。 sudo -u postgres -i 将Cd放入carto style目录。 cd /home/osm/openstreetmap-carto/ 获取形状文件。 scripts/get-external-data.py 如果在运行上述命令时遇到以下错误消息,则说明您存在DNS问题。只需等待几分钟,然后再次运行Python脚本。 Failed to establish a new connection: [Errno -3] Temporary failure in name resolution 现在使用carto map样式表编译器构建Mapnik XML样式表。 carto project.mml > style.xml 将gis数据库的所有权限授予osm用户。 psql -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO osm;" -d gis 退出postgres用户。 exit 第8步:安装字体 您需要安装ttf dejavu软件包。 sudo apt install ttf-dejavu 要显示非拉丁字符,请安装以下软件包。 sudo apt install fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-hinted fonts-noto-unhinted ttf-unifont 步骤9:配置renderd 编辑渲染配置文件。 sudo nano /etc/renderd.conf 在[renderd]部分,根据服务器上的CPU内核数更改线程数。 num_threads=10 添加默认图层。以分号(;)开头的行这些都是评论。 ; ADD YOUR LAYERS: [default] URI=/osm/ XML=/home/osm/openstreetmap-carto/style.xml HOST=tile.your-domain.com 保存并关闭文件。然后为renderd服务创建一个新目录。 sudo mkdir /etc/systemd/system/renderd.service.d/ 在此目录下创建自定义配置文件。 sudo nano /etc/systemd/system/renderd.service.d/custom.conf 在此文件中添加以下行。 [Service] User=osm 保存并关闭文件。更改/run/renderd/和/var/cache/renderd/tiles/目录的所有权。 sudo chown osm /run/renderd/ -R sudo chown osm /var/cache/renderd/tiles/ -R 然后重新启动renderd服务。 sudo systemctl daemon-reload sudo systemctl restart renderd 你需要查看renderd的日志。 sudo journalctl -eu renderd 确保renderd在重启后不会在日志中产生任何错误,否则地图将不会显示。 第10步:测试 在web浏览器地址栏中,键入 tile.your-domain.com/osm/0/0/0.png 你应该看到世界地图的瓷砖。恭喜!您刚刚成功构建了自己的OSM磁贴服务器。 如果已启用UFW防火墙,请确保使用以下命令打开端口80和443。 sudo ufw allow 80,443/tcp 如果您看到404 not found错误,只需等待几分钟,在浏览器中刷新页面,它应该能够加载世界地图的平铺。如果仍然无法加载,则重新启动renderd服务(sudo systemctl restart renderd)。 第11步:显示平铺的网络地图 现在您有了一个工作的OSM tile服务器,您需要使用JavaScript映射库在其他服务器上显示映射。在本教程中,我将在tile服务器上创建web地图,但您可以在任何其他服务器上创建。 平铺网络地图在OpenStreetMap术语中也称为slippy地图。有两个免费的开源JavaScript地图库可用于tile服务器:OpenLayer和传单。传单的优点是使用简单,而且地图便于移动。 露天层 要使用OpenLayer显示你的slippy地图,请从OpenLayer下载JavaScript和CSS。组织并将其解压缩到webroot文件夹。 cd /var/www/html/ sudo wget https://github.com/openlayers/openlayers/releases/download/v5.3.0/v5.3.0.zip sudo unzip v5.3.0.zip 接下来,创建索引。html文件。 sudo nano /var/www/html/index.html 在文件中粘贴以下HTML代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Accessible Map</title> <link rel="stylesheet" href="http://tile.your-domain.com/v5.3.0/css/ol.css" type="text/css"> <script src="http://tile.your-domain.com/v5.3.0/build/ol.js"></script> <style> a.skiplink { position: absolute; clip: rect(1px, 1px, 1px, 1px); padding: 0; border: 0; height: 1px; width: 1px; overflow: hidden; } a.skiplink:focus { clip: auto; height: auto; width: auto; background-color: #fff; padding: 0.3em; } #map:focus { outline: #4A74A8 solid 0.15em; } </style> </head> <body> <a class="skiplink" href="#map">Go to map</a> <div id="map" class="map" tabindex="0"></div> <button id="zoom-out">Zoom out</button> <button id="zoom-in">Zoom in</button> <script> var map = new ol.Map({ layers: [ new ol.layer.Tile({ source: new ol.source.OSM({ url: 'http://tile.your-domain.com/osm/{z}/{x}/{y}.png' }) }) ], target: 'map', controls: ol.control.defaults({ attributionOptions: /** @type {olx.control.AttributionOptions} */ ({ collapsible: false }) }), view: new ol.View({ center: [244780.24508882355, 7386452.183179816], zoom:5 }) }); document.getElementById('zoom-out').onclick = function() { var view = map.getView(); var zoom = view.getZoom(); view.setZoom(zoom - 1); }; document.getElementById('zoom-in').onclick = function() { var view = map.getView(); var zoom = view.getZoom(); view.setZoom(zoom + 1); }; </script> </body> </html> 保存并关闭文件。现在你可以通过在浏览器地址栏中输入你的子域来查看你的拖拉地图。 tile.your-domain.com 或 tile.your-domain.com/index.html 传单 要使用Leftlet显示slippy地图,请从leftletjs下载JavaScript和CSS。com并将其解压缩到webroot文件夹。 cd /var/www/html/ sudo wget http://cdn.leafletjs.com/leaflet/v1.7.1/leaflet.zip sudo unzip leaflet.zip 接下来,创建索引。html文件。如果已经有索引。html文件,然后删除原始内容。 sudo nano /var/www/html/index.html 在文件中粘贴以下HTML代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。 <html> <head> <meta charset="UTF-8"> <title>My first osm</title> <link rel="stylesheet" type="text/css" href="leaflet.css"/> <script type="text/javascript" src="leaflet.js"></script> <style> #map{width:100%;height:100%} </style> </head> <body> <div id="map"></div> <script> var map = L.map('map').setView([55,0.8],6); L.tileLayer('http://tile.your-domain.com/osm/{z}/{x}/{y}.png',{maxZoom:18}).addTo(map); </script> </body> </html> 保存并关闭文件。现在,您可以通过在浏览器中键入服务器IP地址来查看拖沓的地图。 tile.your-domain.com 或 tile.your-domain.com/index.html 步骤12:预渲染瓷砖 动态渲染平铺将增加在web浏览器中加载地图的时间。要预渲染平铺而不是动态渲染,请使用以下render_list命令。使用-z和-z标志指定缩放级别,并根据服务器上的CPU内核数替换线程数。Render_list通过向渲染守护进程发送请求来渲染贴图分幅列表。预渲染的磁贴将缓存在/var/lib/mod_tile目录中。 render_list -m default -a -z 0 -Z 19 --num-threads=10 如果以后更新了贴图数据,可以使用--force选项再次预渲染所有分片。 render_list -m default -a -z 0 -Z 19 --num-threads=10 --force 要在背景中渲染贴图分幅,请添加&amp;结尾的符号。 render_list -m default -a -z 0 -Z 19 --num-threads=10 & 现在你可以关闭终端窗口了。要检查呈现进度,请打开另一个SSH会话,然后运行以下命令。 sudo journalctl -eu renderd 上面的命令将显示renderd服务的最新日志。以下几行显示我的OSM服务器现在正在以缩放级别12渲染地图分幅。 renderd[20838]: DEBUG: START TILE default 12 1008-1015 4056-4063, new metatile renderd[20838]: Rendering projected coordinates 12 1008 4056 -> -10175297.205328|-19724422.274944 -10097025.688364|-19646150.757980 to a 8 x 8 tile renderd[20838]: DEBUG: DONE TILE default 12 1008-1015 3984-3991 in 0.799 seconds renderd[20838]: DEBUG: Sending render cmd(3 default 12/1008/3984) with protocol version 2 to fd 18 renderd[20838]: DEBUG: Got incoming request with protocol version 2 renderd[20838]: DEBUG: Got command RenderBulk fd(18) xml(default), z(12), x(1008), y(4064), mime(image/png), options() renderd[20838]: DEBUG: START TILE default 12 1008-1015 4064-4071, new metatile renderd[20838]: Rendering projected coordinates 12 1008 4064 -> -10175297.205328|-19802693.791908 -10097025.688364|-19724422.274944 to a 8 x 8 tile 步骤13:启用HTTPS 为了加密HTTP流量,我们可以从Let's encrypt获得并安装免费的TLS证书。osmadmins/ppa ppa包含一个出现故障的certbot二进制文件,因此我建议从快照存储安装certbot。 sudo apt install snapd sudo snap install --classic certbot 然后运行以下命令获取并安装TLS证书。 sudo /snap/bin/certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple --email [email protected] -d tile.your-domain.com 安装证书后,刷新网页,您将在地址栏中看到一个锁。 如果你在Firefox地址栏中看到一个黄色的三角形,这意味着tile URL仍在使用HTTP。你需要编辑索引。html文件,并使用以下命令将所有HTTP协议替换为HTTPS。 sudo sed -i 's/http/https/g' /var/www/index.html 步骤14:启用HTTP2 为了进一步提高映射加载性能,可以启用HTTP2协议。首先,需要启用HTTP2模块。 sudo a2enmod http2 然后打开SSL虚拟主机文件。 sudo nano /etc/apache2/sites-enabled/tileserver_site-le-ssl.conf 在打开后放置以下指令&lt;VirtualHost*:443&gt;标签 Protocols h2 http/1.1 保存并关闭文件。然后重启Apache,使更改生效。 sudo systemctl restart apache2 使用HTTP Referrer标头限制对OSM磁贴服务器的访问 默认情况下,任何人都可以使用OpenLayer或传单创建一个带有tile服务器URL的滑动地图。要限制对tile服务器的访问,请编辑Apache虚拟主机文件。 sudo nano /etc/apache2/sites-enabled/tileserver_site-le-ssl.conf 在&lt;VirtualHost&gt;标签。 <Location /osm> SetEnvIf Referer example/.com trusted_referer Order deny,allow Deny from all Allow from env=trusted_referer </Location> 上面的代码检查HTTP referer头是否包含您自己的域。否则,将拒绝访问/osm目录。反斜杠用于转义点字符。要将多个主机名添加为受信任的引用程序,请使用以下语法。 SetEnvIf Referer (example/.com|www/.example/.com|map/.example/.com) trusted_referer 保存并关闭文件。然后测试语法。 sudo apache2ctl -t 如果语法正确,请重新加载Apache以使更改生效。 sudo systemctl reload apache2 自动更新TLS证书 您可以创建Cron作业来自动续订TLS证书。只需打开root用户的crontab文件。 sudo crontab -e 在文件底部添加以下行。 @daily /snap/bin/certbot renew --quiet && systemctl reload apache2 不同主机上的PostgreSQL数据库和Web服务器 如果PostgreSQL和Apache web服务器位于不同的主机上,则需要编辑该项目。Apache主机上的mml文件。 nano /home/osm/openstreetmap-carto-4.20.0/project.mml 找到以下几行: osm2pgsql: &osm2pgsql type: "postgis" dbname: "gis" key_field: "" geometry_field: "way" extent: "-20037508,-20037508,20037508,20037508" 指定PostgreSQL数据库服务器的IP地址。 osm2pgsql: &osm2pgsql type: "postgis" host: "10.0.0.2" dbname: "gis" key_field: "" geometry_field: "way" extent: "-20037508,-20037508,20037508,20037508" 保存并关闭文件。然后使用carto map样式表编译器构建Mapnik XML样式表。 carto project.mml > style.xml 在PostgreSQL数据库服务器上,编辑主配置文件。 sudo nano /etc/postgresql/12/main/postgresql.conf 添加以下行,将PostgreSQL设置为在所有接口上侦听。 listen_addresses = '*' 保存并关闭文件。然后编辑PostgreSQL客户端身份验证配置文件。 sudo nano /etc/postgresql/12/main/pg_hba.conf 在文件末尾添加以下行,以允许osm用户从Apache主机登录。将10.0.0.1替换为Apache主机的IP地址。 host gis osm 10.0.0.1/32 trust 保存并关闭文件。然后重新启动PostgreSQL。 sudo systemctl restart postgresql 在Apache主机上重新启动渲染守护程序。 sudo systemctl restart renderd 你需要查看renderd的日志。确保renderd不会在日志中产生任何错误,否则地图将不会显示。 sudo journalctl -eu renderd 还应限制对PostgreSQL数据库服务器端口5432的访问。例如,您可以使用以下UFW命令只允许Apache主机的IP地址。 sudo ufw allow in from 10.0.0.1 to any port 5432 下一步 我希望本教程能帮助您在Ubuntu 20.04上安装OpenStreetMap tile服务器。您可能还需要设置Namingm地理编码服务器,以提供地址查找功能。 在Ubuntu20.04上设置OSM地理编码服务器 您可以使用开源路由机器(OSRM)为地图提供导航功能。 如何在Ubuntu 20.04上安装OSRM——开源路由机器 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:70
  • 在Ubuntu20.04上设置OSM地理编码服务器

    在之前的教程中,我解释了在Ubuntu 20.04上构建自己的OSM tile服务器的过程。本教程将向您展示如何在Ubuntu20.04上设置Namingm地理编码服务器。Nagnitm为OpenStreetMap提供搜索功能,因此如果访客在搜索框中输入地址,将返回该地址的纬度/经度位置。 注意:如果你要为整个星球安装Namingm,那么你应该为Namingm启动另一台服务器,因为它还需要64GB的RAM和1TB的SSD。 第一步:从源代码构建提名 安装依赖项包以构建Nagnitm。 sudo apt update sudo apt install build-essential cmake g++ libboost-dev libboost-system-dev libboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev apache2 php php-pgsql libapache2-mod-php php-intl php-cgi phpunit php-codesniffer python3-setuptools python3-dev python3-pip python3-psycopg2 python3-tidylib python3-behave python-pytest pylint git clang-tidy postgresql-server-dev-12 创建提名用户。(无需为此用户创建密码。) sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim 更改为/srv/m/目录。 cd /srv/nominatim/ 向您自己的用户帐户授予权限。 sudo apt install acl sudo setfacl -R -m u:username:rwx /srv/nominatim/ 从官方网站下载提名。 wget https://nominatim.org/release/Nominatim-3.5.1.tar.bz2 取出柏油球。 tar xvf Nominatim-3.5.1.tar.bz2 创建构建目录。 mkdir build 更改到此目录并配置生成环境。 cd build cmake /srv/nominatim/Nominatim-3.5.1 编译源代码。 make 第2步:配置提名 Nagnitm的默认配置文件是/srv/Nagnitm/build/settings/settings。php。我们可以创建一个本地。php文件,并在那里添加我们的修改。 sudo nano /srv/nominatim/build/settings/local.php 在文件中添加以下行。 <?php @define('CONST_Website_BaseURL', '/nominatim/'); @define('CONST_Default_Lat', 55.0); @define('CONST_Default_Lon', 1.0); @define('CONST_Default_Zoom', 6); @define('CONST_Map_Tile_URL', 'https://tile.linuxbabe.com/osm/{z}/{x}/{y}.png'); 上述配置定义了 相对于磁贴服务器的Namingm实例的路径。 默认纬度、经度和缩放级别。 OSM磁贴服务器的URL。默认情况下,提名使用公共资源https://tile.openstreetmap.org磁贴服务器。在这里,我使用自己的磁贴服务器。 您还可以查看/srv/namitm/build/settings/settings。php文件,并在需要时添加自己的自定义项。例如,如果要导入大型数据集(欧洲、北美、planet等),最好启用节点位置的平面节点存储,这样节点坐标将存储在一个简单的文件中,而不是数据库中,从而节省导入时间和磁盘存储。 @define('CONST_Osm2pgsql_Flatnode_File', '/srv/nominatim/flatnode.file'); 保存并关闭文件。 第3步:安装和配置PostgreSQL 注意:如果OSM tile server和Nagnitm安装在同一台服务器上,则可以跳过此步骤,因为您在设置OSM tile server时已经完成了此操作。 我们将使用PostgreSQL存储地图数据。PostGIS是PostgreSQL的地理空间扩展。运行以下命令来安装它们。 sudo apt install postgresql postgresql-contrib postgis postgresql-12-postgis-3 然后我们需要调整PostgreSQL以获得最佳性能。编辑主配置文件。 sudo nano /etc/postgresql/12/main/postgresql.conf 在该文件中查找以下参数并使用以下值。 shared_buffers = 15GB work_mem = 1GB maintenance_work_mem = 10GB effective_cache_size = 24GB synchronous_commit = off max_wal_size = 1GB checkpoint_timeout = 10min checkpoint_completion_target = 0.9 fsync = off full_page_writes = off 保存并关闭文件。重新启动PostgreSQL以使更改生效。 sudo systemctl restart postgresql 请注意,导入OSM数据库后,应打开fsync和full_page_write,否则可能会损坏数据库。 默认情况下,PostgreSQL会尝试在RAM中使用巨大的页面。然而,Linux默认情况下不会分配巨大的页面。检查PostgreSQL的进程ID。 sudo head -1 /var/lib/postgresql/12/main/postmaster.pid 样本输出: 7031 然后检查该进程ID的峰值。 grep ^VmPeak /proc/7031/status 样本输出: VmPeak: 16282784 kB 这是PostgreSQL将使用的峰值内存大小。现在检查Linux中巨大页面的大小。 cat /proc/meminfo | grep -i huge 样本输出: AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB Hugetlb: 0 kB 我们可以计算出我们需要多少巨大的页面。将VmPeak值除以巨大页面的大小:16282784KB/2048KB=7950。编辑/etc/sysctl。conf文件。 sudo nano /etc/sysctl.conf 添加以下行以分配7950个大页面。 vm.nr_hugepages = 7950 保存并关闭文件。然后应用更改。 sudo sysctl -p 如果你再次查看meminfo, cat /proc/meminfo | grep -i huge 我们可以看到有7950个巨大的页面可用。 AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 7950 HugePages_Free: 7950 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB 重新启动PostgreSQL以使用大型页面。 sudo systemctl restart postgresql 第4步:导入OSM数据库 下载维基百科重要性转储文件,这将提高Nomatim搜索结果的质量。 cd /srv/nominatim/Nominatim-3.5.1/data wget https://www.nominatim.org/data/wikimedia-importance.sql.gz 下载美国和英国邮政编码数据。 wget https://www.nominatim.org/data/us_postcode_data.sql.gz wget https://www.nominatim.org/data/gb_postcode_data.sql.gz 下载国家代码数据文件。 wget -O country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz 然后需要下载一个OSM文件并将其导入PostgreSQL。你可以去http://download.geofabrik.de下载你需要的摘录。也可以在磁贴服务器设置过程中使用PBF文件。 在PostgreSQL中创建www数据用户,这样web服务器将对数据库具有只读访问权限。 sudo -u postgres createuser www-data 向postgres用户授予权限。 sudo setfacl -R -m u:postgres:rwx /srv/nominatim/ 切换到postgres用户。 sudo -u postgres -i 并运行以下命令将OSM提取导入PostgreSQL。 cd /srv/nominatim/build/ /srv/nominatim/build/utils/setup.php --osm-file /home/osm/great-britain-latest.osm.pbf --all 2>&1 | tee setup.log 导入数据库后,索引过程将开始。总共有30个等级。 完成后,运行以下命令进行验证。 /srv/nominatim/build/utils/check_import_finished.php 退出postgres用户。 exit 第5步:设置Apache 如果OSM磁贴服务器上安装了Namingm,则编辑磁贴服务器配置文件。 sudo nano /etc/apache2/sites-enabled/tileserver_site-le-ssl.conf 在VirtualHost标记之间添加以下行。 <Directory "/srv/nominatim/build/website"> Options FollowSymLinks MultiViews AddType application/json .php DirectoryIndex search.php Require all granted </Directory> alias /nominatim /srv/nominatim/build/website 保存并关闭文件。然后重新加载Apache。 sudo systemctl reload apache2 如果要在单独的服务器上设置Namingm,则需要安装Apache和PHP。 sudo apt install apache2 php7.4 libapache2-mod-php7.4 php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline 为提名创建虚拟主机。 sudo nano /etc/apache2/sites-enabled/nominatim.conf 在此文件中添加以下行。 <VirtualHost *:80> ServerName nominatim.example.com DocumentRoot /srv/nominatim/build/website <Directory "/srv/nominatim/build/website"> Options FollowSymLinks MultiViews AddType application/json .php DirectoryIndex search.php Require all granted </Directory> alias /nominatim /srv/nominatim/build/website ErrorLog ${APACHE_LOG_DIR}/nominatim_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/nominatim_access.log combined </VirtualHost> 保存并关闭文件。然后重启Apache。 sudo systemctl restart apache2 现在参观https://tile.yourdomain.com/nominatim.您将看到您的Nomatim实例。 CSS文件位于/srv/namitm/build/website/CSS/search。css,如果你想定制外观。 第6步:更新提名数据库 为了使Namingm数据库保持最新,我们需要安装Pyosmium。它可以从默认的软件存储库中获得,但建议使用pip3安装最新版本。 sudo pip3 install osmium 这将安装一个二进制文件/usr/local/bin/pyosmium获取更改。编辑配置文件。 sudo nano /srv/nominatim/build/settings/local.php 添加以下行以指定pyosmium get changes的位置。 @define('CONST_Pyosmium_Binary', '/usr/local/bin/pyosmium-get-changes'); 接下来,我们需要告诉Namingm在哪里下载更新。默认情况下,它被配置为从https://planet.openstreetmap.org/replication/minute.如果您从geofabrik下载了OSM PBF文件。de,那么最好也从那里下载更新。 要查找自己地图的更新URL,请转到https://download.geofabrik.de/找到你所在的地区。然后找到该文件的URL。osc。gz文件。 此URL是更新URL。 在/srv/namignm/build/settings/local中添加以下行。php文件。您需要使用自己的更新URL。 // base URL of the replication service @define('CONST_Replication_Url', ''); // How often upstream publishes diffs @define('CONST_Replication_Update_Interval', '86400'); // How long to sleep if no update found yet @define('CONST_Replication_Recheck_Interval', '900'); 保存并关闭文件。向postgres用户授予权限。 sudo setfacl -R -m "u:postgres:rwx" /srv/nominatim/build/ 然后切换到postgres用户。 sudo -u postgres -i 初始化更新过程。 /srv/nominatim/build/utils/update.php --init-updates 更新我的数据库。 /srv/nominatim/build/utils/update.php --import-osmosis-all 第7步:设置Cron作业以进行自动更新 编辑root用户的Crontab文件。 sudo crontab -e 在此文件中添加以下行。 @daily sudo -u postgres /srv/nominatim/build/utils/update.php --import-osmosis-all 保存并关闭文件。如果不想自动更新Nagnitm数据库,只需从Crontab文件中删除上面的一行即可。 如何在拖沓的地图上添加搜索功能 我假设你的slippy地图是使用传单JavaScript库显示的。要将搜索功能添加到地图中,需要使用传单地理编码插件。我将向您展示如何使用传单控制地理编码器。其实很简单。 假设您使用以下HTML代码来显示拖拉地图。 <html> <head> <meta charset="UTF-8"> <title>My first osm</title> <link rel="stylesheet" type="text/css" href="leaflet.css"/> <script type="text/javascript" src="leaflet.js"></script> <style> #map{width:100%;height:100%} </style> </head> <body> <div id="map"></div> <script> var map = L.map('map').setView([54,1],6); L.tileLayer('https://tile.yourdomain.com/osm/{z}/{x}/{y}.png',{maxZoom:19}).addTo(map); </script> </body> </html> 现在,您需要在HTML标题中添加以下两行,以使用传单控制地理编码器插件。 <link rel="stylesheet" href="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.css" /> <script src="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js"></script> 然后将以下函数添加到&lt;脚本&gt&lt/脚本&gt;将搜索功能添加到地图中。 L.Control.geocoder().addTo(map); 最终的HTML代码如下所示: <html> <head> <meta charset="UTF-8"> <title>My first osm</title> <link rel="stylesheet" type="text/css" href="leaflet.css"/> <link rel="stylesheet" href="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.css" /> <script type="text/javascript" src="leaflet.js"></script> <script src="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js"></script> <style> #map{width:100%;height:100%} </style> </head> <body> <div id="map"></div> <script> var map = L.map('map').setView([54,1],6); L.tileLayer('https://tile.yourdomain.com/osm/{z}/{x}/{y}.png',{maxZoom:19}).addTo(map); L.Control.geocoder().addTo(map); </script> </body> </html> 保存并关闭文件。然后在web浏览器中重新加载地图,您应该会在右上角看到一个搜索按钮。 默认情况下,传单控制地理编码器使用公共https://nominatim.openstreetmap.org地理编码服务。要使用您自己的地理编码服务,请删除以下行。 L.Control.geocoder().addTo(map); 改为添加以下行。将该URL替换为您的提名地理编码服务的URL。请注意,不应省略尾随的斜杠。 var geocoder = L.Control.Geocoder.nominatim({serviceUrl:'https://tile.yourdomain.com/nominatim/'}); if (URLSearchParams && location.search) { // parse /?geocoder=nominatim from URL var params = new URLSearchParams(location.search); var geocoderString = params.get('geocoder'); if (geocoderString && L.Control.Geocoder[geocoderString]) { console.log('Using geocoder', geocoderString); geocoder = L.Control.Geocoder[geocoderString](); } else if (geocoderString) { console.warn('Unsupported geocoder', geocoderString); } } var control = L.Control.geocoder({ query: 'Type Address here', placeholder: 'Search here...', geocoder: geocoder, position: 'topright' }).addTo(map); var marker; setTimeout(function() { control.setQuery('Type Address here'); }, 12000); 默认位置为右上角。如果你愿意,可以把它改成左上角。 您还可以为反向地理编码添加以下代码。当访客点击地图上的某个点时,该地址的名称就会出现。 map.on('click', function(e) { geocoder.reverse(e.latlng, map.options.crs.scale(map.getZoom()), function(results) { var r = results[0]; if (r) { if (marker) { marker .setLatLng(r.center) .setPopupContent(r.html || r.name) .openPopup(); } else { marker = L.marker(r.center) .bindPopup(r.name) .addTo(map) .openPopup(); } } }); }); 保存并关闭文件。然后在web浏览器中重新加载地图。 提高反向搜索的准确性 提名中有两种类型的搜索: 前向搜索,又名地理编码,返回地址的纬度和经度 反向搜索,又名反向地理编码,返回纬度和经度的地址,即当访问者点击地图上的某个点时。 如果进行反向搜索,则标记针和弹出窗口与您单击的地图上的位置不在同一位置,则需要增加缩放级别。地图。getZoom()函数将获取当前的地图视图,该视图由setView()函数设置,如下所示 var map = L.map('map').setView([54,1],6); 缩放级别设置为6,这将导致反向搜索的精度较低。我们可以对反向搜索的缩放级别进行硬编码,如下所示: geocoder.reverse(e.latlng, map.options.crs.scale(21), function(results) i、 换张地图。getZoom()到21。反向搜索的最大缩放级别为21。您可以选择另一个缩放级别以满足您的需要。 故障排除 如果地图上的搜索功能不起作用,您可以检查web浏览器的控制台,找出哪里出了问题。有些人可能会认为406不可接受或CORS不允许出现错误。确保为设置了正确的MIME类型。Apache配置文件中的php。有些人可能有下面这句话,这可能会导致上述错误。 AddType text/html .php 应该是的 AddType application/json .php 更改MIME类型后。重新加载Apache以使更改生效。 sudo systemctl reload apache2 收尾 我希望本教程能帮助你在Ubuntu20.04上安装Namingm地理编码服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:66
  • 如何在Linux服务器上更新Drupal 8 Core

    之前我们发表了一篇关于如何在Ubuntu 16.04上安装Drupal 8的帖子。现在,本教程将向您展示如何在Linux服务器上正确更新Drupal 8 minor版本(8.x.x)。无论使用哪个Linux发行版,都可以使用以下方法更新Drupal 8 core。 与WordPress不同,目前没有自动更新Drupal 8的方法。我们必须手动更新它。所以,不用再麻烦了,让我们开始吧。 步骤1:备份Drupal核心和数据库 有备份总是很重要的。Unix/Linux tar命令行实用程序可以帮助您备份服务器上的目录。 tar -cpzf drupal8core.tar.gz /path/to/drupal/web/root 上面的命令将备份Drupal web根目录中的所有内容,压缩它们并另存为tarball。当然,您需要将红色文本替换为web根目录的实际路径。有关tar命令的详细信息,请查看手册页(mantar)。 要备份Drupal数据库,假设您使用的是MySQL或MariaDB,只需执行以下一行代码。 mysqldump -u root -p drupal-database > drupal-database.sql 将drupal数据库替换为实际的数据库名称,该名称可以通过以下命令获得。 mysql -u root -p -e "show databases;" 您可能希望单击此处查看有关如何备份和恢复MySQL/MariaDB数据库的详细说明。 第2步:将站点置于维护模式 以站点管理员的身份登录,在Drupal中也称为用户1。然后去管理&gt;配置&gt;发展&gt;维护模式。选中该选项,然后单击保存配置。 第3步:删除Drupal文件和目录 使用cd命令进入Drupal 8安装目录。然后删除核心目录和供应商目录。 rm -r core/ vendor/ 不要触摸任何其他目录。接下来,我们需要删除Drupal 8顶级目录中的所有剩余文件。现在服务器上还有模块、配置文件、站点和主题目录。 第4步:下载Drupal 8的最新版本 从Drupal下载Drupal core的新版本。组织。将其保存到Drupal安装之外的目录。您可以使用wget从命令行下载它,如下所示。您可能需要替换为版本号。 wget 8.1.8.tar.gz 然后提取文件。 tar xvf drupal-8.1.8.tar.gz 一个新的目录drupal-8。x、 x将在当前目录中创建。把Cd放入那个目录。 cd drupal-8.1.8 在我们将这些文件和目录复制到Drupal安装目录之前。我们需要删除模块,配置文件,网站和主题目录,因为我们不希望这四个目录被重写。如果它们被重写,那么你定制的模块、主题和类似的东西就会丢失。 rm -r modules/ profiles/ sites/ themes/ 然后我们可以将所有剩余的文件和目录复制到Drupal安装目录。 cp -R * .htaccess /path/to/Drupal/web/root/ 第5步:更新Drupal数据库 现在Drupal核心已经更新,我们还需要通过访问 your-domain.com/update.php 单击“继续”按钮。 如果您使用Nginx并遇到更新之类的错误。找不到php/选择页面。然后将以下位置块添加到Nginx配置文件并重新加载Nginx。 location ~* ^/update.php { fastcgi_split_path_info ^(.+/.php)(/.+)$; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_index update.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root/update.php; fastcgi_param SCRIPT_NAME /update.php; } 如果数据库更新成功,您将看到以下消息。 No pending updates. 步骤6:从维护模式切换到在线模式 Drupal 8数据库更新完成后,转到管理&gt;报告&gt;状态报告。确认一切正常。 然后去管理&gt;配置&gt;发展&gt;维护模式。取消选中该框并保存设置。 您的Drupal站点已退出维护模式,您已成功更新Drupal 8。 最后的想法 现在你可以明白为什么Drupal不适合新手博主或网站管理员。与WordPress update相比,它是一种痛苦。WordPress update允许你按下一个按钮,几秒钟内你就完成了更新。 无论如何,尽快更新Drupal站点以防止恶意黑客攻击非常重要。 和往常一样,如果你觉得这篇帖子很有用,可以订阅我们的免费时事通讯,或者在谷歌+、推特或我们的Facebook页面上关注我们。

    2022.03.24 浏览:90