-
如何在Debian桌面/服务器上安装Syncthing
本教程将向您展示如何在Debian上安装Syncthing。Syncthing是一个免费的点对点连续文件同步程序,允许您跨多个设备同步文件,可用于Linux、BSD、macOS、Windows、Android和Solaris。 它是流行的Resilio Sync(以前称为BitTorrent Sync)应用程序的开源替代方案。在一台机器上创建、修改或删除文件将自动复制到其他设备。Syncthing不会将文件上传到Nextcloud这样的中央服务器,而是直接在设备之间交换数据。在设备之间传输时,所有数据都会使用TLS加密。 通过Deb官方存储库在Debian上安装Syncthing 使用curl下载GPG密钥,然后使用apt密钥导入密钥。 sudo apt get安装curl-shttps://syncthing.net/release-key.txt| sudo apt按键添加- 如果在终端中看到OK,则表示GPG密钥已成功导入。然后使用以下命令添加正式的deb存储库。 回声“黛布”https://apt.syncthing.net/syncthing stable“| sudo tee/etc/apt/sources.list.d/syncthing.list 由于该存储库使用https,我们需要安装apt transport https包,以便apt包管理器可以与该存储库建立https连接。 sudo apt get安装apt传输https 更新本地包索引并在Debian上安装syncthing。 sudo-apt-get-update sudo-apt-get-install-syncthing 使用Systemd将Syncthing设置为系统服务 官方Syncthing deb包附带所需的systemd服务文件。在/lib/systemd/system/directory下,您将找到一个[email ;protected]文件。通过运行以下命令,使syncthing在启动时自动启动。用实际用户名替换用户名。 sudo systemctl启用[电子邮件和#160;受保护]用户名。服务 上述命令将创建指向[email ;protected]文件的符号链接。 从/etc/systemd/system/multi-user创建符号链接。目标想要/[email ;protected]到/lib/systemd/system/[email ;protected] 现在,我们可以使用以下命令启动Syncthing服务。 sudo systemctl start[电子邮件和#160;受保护]用户名。服务 检查状态 systemctl状态[电子邮件和#160;受保护]用户名。服务 输出: 提示:如果上述命令没有立即退出,请按Q键重新控制终端。 我们可以看到Syncthing autostart已启用并且正在运行。 syncthing systemd服务在/home/username/下创建配置文件。config/syncthing/和一个文件夹/home/username/Sync作为默认的同步文件夹。主配置文件是/home/username/。config/syncthing/config。xml。 在其他操作系统上安装Syncthing 转到Syncthing下载页面,在Windows、macOS、BSD、Android等其他操作系统上安装Syncthing。 打开防火墙中的端口22000 Syncthing使用端口22000与对等方通信。如果您的计算机或服务器启用了UFW防火墙,则需要使用以下命令允许端口22000。 sudo ufw允许22000/tcp 访问Debian Syncthing Web界面 默认情况下,Syncthing服务监听127.0.0.1:8384。现在,在Web浏览器的地址栏中,键入127.0.0.1:8384以访问Syncthing Web界面。您可以添加其他同步设备并与它们共享文件夹。 如果在远程Debian服务器上安装Syncthing,则可以通过编辑配置文件来启用对Syncthing web界面的远程访问。 nano/home/username/。config/syncthing/config。xml 找到下面两行。 <;gui enabled=“true”tls=“false”debug=“false”>&书信电报;地址>;127.0.0.1:8384</地址>; 将tls=“false”更改为tls=“true”,这样HTTP通信将被加密。并将127.0.0.1更改为Debian服务器的公共IP地址。保存并关闭文件。重新启动Syncthing以使更改生效。 sudo systemctl start[电子邮件和#160;受保护]用户名。服务 现在在web浏览器中键入服务器ip地址:8384以访问Syncthing web界面。显然,您需要使用Debian服务器的真实IP地址。您将被要求设置用户名和密码以保护Syncthing web界面。 您还可以使用Nginx或Apache设置反向代理以访问web用户界面,本教程稍后将对此进行解释。 开始在设备之间同步文件 一旦有两台设备运行Syncthing,我们就可以开始在它们之间同步文件了。 在Syncthing web界面中,单击操作>;在右上角显示ID。您将看到设备ID,它是一长串字母和数字。QR码也是设备ID,用于在智能手机上配置Syncthing。 复制设备ID,然后打开第二台设备的Syncthing Web界面,单击右下角的添加远程设备。然后粘贴设备ID并为设备命名。点击保存按钮。 现在,第二台设备将尝试连接到第一台设备。在第一台设备上刷新Web界面,您将看到以下消息。单击“添加设备”将第二个设备添加到第一个设备的设备列表中。 现在,这两个设备已连接。 Web界面左侧的一个窗格是默认的同步文件夹(/home/username/sync)。单击“添加文件夹”按钮添加新文件夹。为此文件夹指定一个描述性标签,并设置文件夹路径。 Syncthing作为您自己的用户帐户运行,因此您需要对共享文件夹具有写入权限。如果在共享文件夹时看到以下错误消息,则表示您没有该文件夹的写入权限。 2020-06-21 20:05:49:无法创建文件夹标记:mkdir。stfolder:只读文件系统 您可以使用setfacl授予写入权限。 sudo apt安装acl sudo setfacl-R-mu:username:rx/folder/path/ 在共享选项卡中,选择其他同步设备。 在“高级”选项卡中,可以选择文件夹类型、重新扫描间隔等。 单击“保存”按钮开始同步。另一台设备的Web界面上将显示一条消息。单击“添加”以接收文件。 现在这两台设备正在同步文件。在右边,你可以看到下载速率、上传速率、本地文件夹大小等。 设置反向代理 由于它监听127.0.0.1:8384,Syncthing Web界面仅对来自同一台计算机的连接可用。为了能够从远程计算机访问Syncthing Web界面,我们可以使用Nginx或Apache为Syncthing设置反向代理。 Nginx Nginx是一个非常流行的web服务器和反向代理。如果您更喜欢使用Nginx,请运行以下命令进行安装。 sudo apt安装nginx 然后创建一个服务器配置文件。 sudo nano/etc/nginx/conf.d/syncthing。形态 将以下内容添加到此文件。更换同步器。实例com与您首选的域名。您还应该为此子域添加DNS a记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 服务器{listen 80;server_name syncthing.example.com;access_log/var/log/nginx/syncthing.access.log;error_log/var/log/nginx/syncthing.error.log;location/{proxy_passhttp://127.0.0.1:8384; proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy_add_X_Forwarded_For;proxy_set_header X-Forwarded-Proto$scheme;} 保存并关闭文件。测试Nginx配置并重新加载Nginx。 sudo nginx-t sudo systemctl reload nginx 将域名指向Debian的IP地址后,在浏览器地址栏中键入域名,就会看到Syncthing Web界面。 如果浏览器无法连接到Syncthing web界面,可能需要在防火墙中打开端口80。例如,如果使用UFW,则运行以下命令。 sudo ufw允许80/tcp 阿帕奇 Apache是众所周知的web服务器,也可以用作反向代理。如果您更喜欢Apache而不是Nginx,请使用以下软件安装: sudo apt安装apache2 启动Apache并启用自动启动。 sudo systemctl启动apache2 sudo systemctl启用apache2 要使用Apache作为反向代理,我们需要启用代理模块和头模块。 sudo a2enmod代理u http头代理u wstunnel 现在为Syncthing创建一个虚拟主机文件。 sudo nano/etc/apache2/网站可用/同步。形态 将以下行复制并粘贴到文件中。更换同步器。实例使用你的真实域名。您还应该为此子域添加DNS a记录。如果你没有一个真正的域名,我建议你去买一个便宜的域名。价格低廉,而且他们终身免费为whois提供隐私保护。 <;虚拟主机*:80>;服务器名同步。实例com错误文件404/404。html ProxyPass/http://127.0.0.1:8384/ProxyPassReverse/http://127.0.0.1:8384/ErrorLog${APACHE_LOG_DIR}/syncthing_错误。log CustomLog${APACHE_log_DIR}/syncthing_访问。日志合并</VirtualHost>; 保存并关闭文件。然后启用这个虚拟主机。 sudo是一个敏感的东西。形态 重启Apache sudo systemctl重启apache2 现在,您可以通过syncthing访问Web UI。实例通用域名格式。 如果浏览器无法连接到Syncthing web界面,可能需要在防火墙中打开端口80。例如,如果使用UFW,则运行以下命令。 sudo ufw允许80/tcp 使用HTTPS保护Syncthing Web UI 为了在通过域名访问Syncthing web UI时加密HTTP流量,我们可以通过安装Let’s encrypt颁发的免费TLS证书来启用HTTPS。首先,打开防火墙中的端口443。 sudo ufw允许443/tcp 然后运行以下命令安装Let's Encrypt client(certbot)。 sudo apt安装certbot 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--stype ocsp--email[email ;protected]-d syncthing。实例通用域名格式 如果使用Apache,请安装Certbot Apache插件。 sudo apt安装python3 certbot apache 并运行此命令以获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email ;protected]-d syncthing。实例通用域名格式 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 刷新Syncthing Web GUI,您会发现HTTP连接自动重定向到HTTPS安全连接。 启用用户身份验证 默认情况下,任何人都可以在设置反向代理后访问Syncthing web界面。我们可以启用用户身份验证来限制访问。单击右上角的操作按钮,然后选择设置->;桂。 在GUI身份验证用户字段中输入用户名,在GUI身份验证密码字段中输入密码。然后保存你的设置。 请注意,您不需要在Use HTTPS for GUI框上打勾,这使Syncthing能够使用自签名证书。我们已经在Apache/Nginx中安装了一个受主流Web浏览器信任的有效证书。 保存更改后,请重新启动Syncthing systemd服务,否则在重新加载页面时可能会看到502坏网关错误。 sudo systemctl restart[email ;protected]用户名。服务 现在使用新用户名和密码登录Syncthing Web界面。 仅发送&;只接收文件夹 在Syncthing中共享文件夹时,可以转到“高级”选项卡,从三种文件夹类型中选择一种: 发送&;接收(默认) 只发送 只收 您可能希望选择仅发送或仅接收。例如,如果您有三台计算机:A、B和C,并且希望将计算机A和B上的文件夹聚合到计算机C上的单个文件夹中。则可以将文件夹类型设置为仅在计算机C上接收。这样,计算机C将所有文件都放在单个文件夹中。计算机A和B仍保留原始文件。不多也不少。 当您在计算机C上使用相同的文件夹路径时,Syncthing可能会警告您“此路径是现有文件夹的子目录”。您可以忽略此警告,因为您有一个只接收文件夹。不会删除文件夹中的现有文件。 通过中继服务器同步 如果两个Syncthing实例无法相互连接,则Syncthing将尝试使用中继服务器传输文件。 它们无法相互连接的一个常见原因是其中一个位于NAT设备后面,并且没有配置端口转发。配置端口转发后,可以禁用中继服务器。下面是方法。单击编辑按钮并选择高级选项卡,将地址从动态更改为tcp://ip-address:22000.当然,你需要使用你真正的IP地址。 故障排除 如果Syncthing实例无法相互连接,可以使用ss(socket stats)实用程序检查Syncthing是否正在TCP端口22000上侦听。 sudo ss-lnpt | grep syncthing 从下面的屏幕截图可以看到,我的Syncthing正在监听端口8384(web界面)和22000(对等连接)。 如果没有,您可以编辑配置文件。 纳米~/。config/syncthing/config。xml 找到下面这行。 <;listenAddress>;违约</listenAddress>; 将默认值更改为tcp://your-IP-address. <;listenAddress>;tcp://12.34.56.78</listenAddress>; 保存并关闭文件。然后重启同步。 sudo systemctl restart[email ;protected]用户名。服务 错过了比赛。stfoler文件 这个Syncthing需要stfoler文件才能工作。这是一个空文件。你不需要添加任何内容。如果。同步文件夹下缺少stfolder文件,则同步将停止。您可以创建以下Cron作业来自动创建文件。 @每小时触摸/path/to/sync/folder/。stfolder 如果文件丢失,触摸命令将创建该文件。如果文件已经存在,它将更新文件时间戳。 收尾 我希望本教程能帮助您在Debian上安装和使用Syncthing。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?
-
在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>&书信电报;html>&书信电报;头>&书信电报;meta charset=“UTF-8”大于&书信电报;标题>;无障碍地图</标题>&书信电报;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;}</风格></头>&书信电报;车身>&书信电报;a class=“skipling”href=“#map”>;转到地图</a>&书信电报;div id=“map”class=“map”tabindex=“0”></部门>&书信电报;按钮id=“缩小”>;缩小</按钮>&书信电报;按钮id=“放大”>;放大</按钮>&书信电报;脚本>;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);}</脚本></车身></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>&书信电报;头>&书信电报;meta charset=“UTF-8”大于&书信电报;标题>;我的第一个osm</标题>&书信电报;link rel=“stylesheet”type=“text/css”href=“传单.css”/>&书信电报;script type=“text/javascript”src=“ployate.js”></脚本>&书信电报;风格>#地图{宽度:100%;高度:100%}</风格></头>&书信电报;车身>&书信电报;div id=“map”></部门>&书信电报;脚本>;var map=L.map('map')。setView([55,8],5);蒂莱莱耶http://tile.your-domain.com/osm/{z} /{x}/{y}。png',{maxZoom:18})。addTo(地图)</脚本></车身></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->-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->-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</地点>; 上面的代码检查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地理编码服务器 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?
-
在Debian 10 Buster上设置Apache Guacamole远程桌面
本教程将向您展示如何在Debian 10服务器上设置鳄梨酱远程桌面。GuaCAMOLE是由Apache软件基金会开发的一个免费的开源远程桌面网关。 鳄梨酱特色 它允许您从web浏览器访问远程桌面。不需要在客户端安装其他软件。 支持VNC、RDP、SSH和Kubernetes等标准协议。 VNC会话可以以图形方式记录。 使用CAS、OpenID Connect或SAML 2.0进行单点登录 唤醒局域网 轻松管理多个远程桌面会话。 支持TOTP双因素身份验证。 支持剪贴板(复制和粘贴)和通过SFTP传输文件。 支持音频输入和输出 还有更多。 鳄梨酱本身不是远程桌面协议。它是远程桌面和客户端之间的代理,因此可以在web浏览器中显示和控制远程桌面。 步骤1:从源代码构建鳄梨酱服务器 登录Debian 10服务器并安装依赖软件包。 sudo apt安装build essential libcairo2 dev libjpeg62 turbo 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密码。 <;用户映射><;!——每用户身份验证和配置信息-->&书信电报;授权用户名=“您的首选用户名”密码=“1060b7b46a3bd36b3a0d66e0127d051”编码=“md5”>&书信电报;连接名称=“默认值”>&书信电报;协议>;vnc</协议>&书信电报;param name=“hostname”>;localhost</param>&书信电报;param name=“port”>;5901</param>&书信电报;param name=“password”>;vnc_密码</param></连接></授权></用户映射>; 保存并关闭文件。重启Tomcat和guacd。 sudo systemctl重启tomcat9 guacd 第4步:在Debian 10服务器上安装桌面环境 因为我们要设置一个远程桌面,所以我们需要一个桌面环境。在安装桌面环境之前,确保服务器有足够的RAM。有许多桌面环境。我发现轻量级XFCE桌面环境在VNC中运行良好,所以使用以下命令安装它。 sudo apt更新sudo apt安装xfce4 xfce4 goodies 在安装过程中,可能会要求您选择默认的显示管理器。这个选择无关紧要,因为在VNC会话中,您不会看到登录屏幕。 由于服务器上运行的是桌面环境,因此强烈建议您使用UFW之类的防火墙来限制访问,并仅向公众打开必要的端口。您可以阅读以下教程,了解如何在Debian上启用和使用UFW。 如何在Debian、Ubuntu、Linux Mint上使用UFW防火墙 步骤5:在Debian 10服务器上安装VNC服务器 Linux用户可以使用几种VNC服务器软件。我们将使用TigerVNC服务器,因为它最适合鳄梨酱。 sudo apt安装tigervnc独立服务器 运行以下命令以启动VNC服务器。 vncserver 当TigerVNC首次启动时,它会要求您设置VNC密码。请注意,密码不应超过8个字符。然后,您可以选择是否需要仅查看密码。 现在,您应该编辑/etc/guacamole/user映射。xml文件并更改VNC密码。然后重启Tomcat和Guad。 sudo systemctl重启tomcat9 guacd tigervnc独立服务器包附带一个文件/etc/X11/Xvnc会话,该会话告诉tigervnc在启动X服务器时启动X服务器。 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>/开发/空2>&;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,那么从默认的Debian软件存储库安装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/</地点>&书信电报;位置/websocket隧道>;需要所有授予的代理权限ws://localhost:8080/guacamole/websocket tunnel代理权限ws://localhost:8080/guacamole/websocket tunnel</地点>;标题始终未设置X帧选项</VirtualHost>; 保存并关闭文件。测试语法。 sudo apachectl-t 如果Syntx正常,则启用此虚拟主机。 sudo a2ensite鳄梨酱。形态 重启Apache sudo systemctl重启apache2 现在,您可以通过鳄梨酱访问Apache鳄梨酱登录页面。实例通用域名格式。如果看到“无效请求”或类似的错误消息,则可能意味着Apache Tomcat无法绑定到端口8080,因为该端口已被服务器上的另一个进程占用。您应该将另一个进程配置为使用不同的端口,然后重新启动Tomcat。 Nginx 如果您更喜欢使用Nginx,那么从默认的Debian软件存储库安装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。运行以下命令在Debian 10上安装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). 登录后,您将能够使用远程桌面。 收尾 我希望本教程能帮助您在Debian 10服务器上设置Apache Guacamole远程桌面。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?
-
如何在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个>&;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需要所有授权</目录>;别名/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>&书信电报;头>&书信电报;meta charset=“UTF-8”大于&书信电报;标题>;我的第一个osm</标题>&书信电报;link rel=“stylesheet”type=“text/css”href=“传单.css”/>&书信电报;script type=“text/javascript”src=“ployate.js”></脚本>&书信电报;风格>#地图{宽度:100%;高度:100%}</风格></头>&书信电报;车身>&书信电报;div id=“map”></部门>&书信电报;脚本>;var map=L.map('map')。setView([54,1],6);蒂莱莱耶https://tile.yourdomain.com/osm/{z} /{x}/{y}。png',{maxZoom:19})。addTo(地图)</脚本></车身></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>; 然后将以下函数添加到<;脚本></脚本>;将搜索功能添加到地图中。 控制。地理编码器()。addTo(地图); 最终的HTML代码如下所示: <;html>&书信电报;头>&书信电报;meta charset=“UTF-8”大于&书信电报;标题>;我的第一个osm</标题>&书信电报;link rel=“stylesheet”type=“text/css”href=“传单.css”/>&书信电报;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(地图)</脚本></车身></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地理编码服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?