• 如何在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 找到下面两行。 &lt;gui enabled=“true”tls=“false”debug=“false”&gt&书信电报;地址&gt;127.0.0.1:8384&lt/地址&gt; 将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界面中,单击操作&gt;在右上角显示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提供隐私保护。 &lt;虚拟主机*:80&gt;服务器名同步。实例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_访问。日志合并&lt/VirtualHost&gt; 保存并关闭文件。然后启用这个虚拟主机。 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界面。我们可以启用用户身份验证来限制访问。单击右上角的操作按钮,然后选择设置-&gt;桂。 在GUI身份验证用户字段中输入用户名,在GUI身份验证密码字段中输入密码。然后保存你的设置。 请注意,您不需要在Use HTTPS for GUI框上打勾,这使Syncthing能够使用自签名证书。我们已经在Apache/Nginx中安装了一个受主流Web浏览器信任的有效证书。 保存更改后,请重新启动Syncthing systemd服务,否则在重新加载页面时可能会看到502坏网关错误。 sudo systemctl restart[email ;protected]用户名。服务 现在使用新用户名和密码登录Syncthing Web界面。 仅发送&amp;只接收文件夹 在Syncthing中共享文件夹时,可以转到“高级”选项卡,从三种文件夹类型中选择一种: 发送&amp;接收(默认) 只发送 只收 您可能希望选择仅发送或仅接收。例如,如果您有三台计算机: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 找到下面这行。 &lt;listenAddress&gt;违约&lt/listenAddress&gt; 将默认值更改为tcp://your-IP-address. &lt;listenAddress&gt;tcp://12.34.56.78</listenAddress&gt; 保存并关闭文件。然后重启同步。 sudo systemctl restart[email ;protected]用户名。服务 错过了比赛。stfoler文件 这个Syncthing需要stfoler文件才能工作。这是一个空文件。你不需要添加任何内容。如果。同步文件夹下缺少stfolder文件,则同步将停止。您可以创建以下Cron作业来自动创建文件。 @每小时触摸/path/to/sync/folder/。stfolder 如果文件丢失,触摸命令将创建该文件。如果文件已经存在,它将更新文件时间戳。 收尾 我希望本教程能帮助您在Debian上安装和使用Syncthing。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.22 浏览:79
  • 在Debian 10 Buster上与YouPHPTube一起运行自己的视频共享网站

    本教程将向您展示如何在Debian 10 Buster上使用YouPHPTube运行自己的视频共享网站。YouPHPTube是YouTube、Vimeo等视频共享网站的开源、自托管替代方案。使用YouPHPTube,您可以将视频上传到自己的服务器,并与互联网共享。 YouPHPTube功能 无限和同步的直播流,你可以有无限的用户连接到每个直播流。 直接从互联网导入和编码其他网站的视频 从本地视频目录批量编码 制作私人视频 与Youtube完全集成的功能,允许您将视频与Youtube同步 将多种格式的多媒体文件转换为MP4、WebM和MP3文件 支持Amazone S3(简单存储服务) 响应性网站布局。YouPHPTube在任何设备上都令人难以置信。(您可以选择YouTube或Netfilx样式的布局。) 用户频道和用户播放列表 订阅你喜欢的频道 您可以使用YouPHPTube统计信息中的最新指标和报告来监控视频的性能。 使用插件扩展站点功能。 搜索引擎优化 iOS和安卓应用可用 YouPHPTube服务器要求 首先,你应该知道,对于视频共享网站来说,单核CPU是不可行的,因为编码过程会占用大量CPU资源。 然后根据站点的用户数量选择服务器规格。 如果你只想用它来分享你自己的视频,你需要一个至少有2个CPU核和4GB内存的服务器。您可以从Contabo购买功能强大的VPS(虚拟专用服务器),成本很低。 如果你希望你的站点有几十个用户,那么你可以考虑Cababo特大VPS,它有10个CPU内核,60GB RAM,1Gb/s端口速度,1.6TB磁盘空间,无限流量,但成本只有26.99欧元/月。 当你的网站增长超过这个范围时,你应该购买一台专用服务器。 在Debian 10 Buster上安装YouPHPTube的软件要求 YouPHPTube需要PHP和MySQL/MariaDB。要学习本教程,您应该已经设置了灯堆栈或LEMP堆栈。如果您更喜欢使用ApacheWeb服务器,请安装LAMP堆栈。 如何在Debian 10 Buster上安装LAMP(Apache、MariaDB、PHP)堆栈 如果您更喜欢使用Nginx web服务器,请安装LEMP stack。 如何在Debian 10 Buster上安装LEMP(Nginx、MariaDB、PHP)堆栈 注:Nginx对YouPHPTube的支持只是实验性的。如果使用Nginx,可能会出现问题。 你还需要一个域名。我在namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 YouPHPTube由两部分组成。 主要部分是前端拖缆服务器,它允许用户观看现有视频。 另一部分是编码器,它允许用户上传视频。 公共编码器使用域名编码器。youphptube。通用域名格式。如果你不想让用户在上传视频时离开你的网站,你需要设置你的私人编码器。在本文中,我将向您展示如何进行。不用麻烦了,我们开始吧。 步骤1:在Debian 10 Buster服务器上下载YouPHPTube 通过SSH登录Debian 10 Buster服务器。然后转到web根目录。 cd/var/www/ 从Github克隆YouPHPTube拖缆存储库。 sudo apt安装git sudo git clonehttps://github.com/YouPHPTube/YouPHPTube.git 然后进入目录。 cd YouPHPTube/ 从Github克隆YouPHPTube编码器存储库。 sudo git克隆https://github.com/YouPHPTube/YouPHPTube-Encoder.git 它将另存为YouPHPTube编码器。我们将其重命名为upload,以便用户在上传视频时更好地了解此URL的用途。 sudo mv YouPHPTube编码器上传 接下来,我们需要将www数据(web服务器用户)作为web根的所有者。 sudo chown www-data:www-data/var/www/YouPHPTube/-R 第2步:安装依赖项 YouPHPTube使用FFmpeg对视频进行编码。我们可以从默认的Debian存储库轻松安装FFmpeg。 sudo apt安装ffmpeg 要在多媒体文件中读写元信息,我们需要安装libimage exiftool perl包。 sudo apt安装libimage exiftool perl 您还需要安装一些常见的PHP扩展。 sudo apt安装php7。3-cli php7。3-常见php7。3-json php7。3-opcache php7。3-readline php7。3-卷曲php7。3-gd php7。3-xml 要从其他网站获取视频,我们需要安装YouTube DL。虽然它包含在Debian存储库中,但已经过时了。我们将从Python包索引安装YouTube DL,该索引始终包含最新版本的YouTube DL。 sudo apt install python3 pip sudo-H pip3 install youtube dl 使用最新版本非常重要,否则可能无法从其他网站下载视频。我们可以创建一个Cron作业来自动检查并安装最新版本。 sudo crontab-e 在Crontab文件的末尾添加以下行,尝试每天升级YouTube DL。 @每日sudo-H pip3安装——升级youtube dl&gt/dev/null 第3步:在MariaDB中创建数据库和用户 使用以下命令登录MariaDB数据库服务器。由于MariaDB现在使用unix_socket插件来验证用户登录,因此无需输入MariaDB根密码。我们只需要在mysql命令前面加上sudo。 sudo mysql 然后为YouPHPTube创建一个数据库。本教程将数据库命名为YouPHPTube。你可以用任何你喜欢的名字。 创建数据库YouPHPTube; 创建数据库用户。同样,您可以使用此用户的首选名称。用首选密码替换密码。 创建用户youphptube@localhost由“您的密码”标识; 授予此用户在youphptube数据库上的所有权限。 授予YouPHPTube上的所有特权。*到youphptube@localhost; 我们还需要为编码器创建一个单独的数据库。 创建数据库YouPHPTubeEncoder; 为此数据库创建一个用户。 创建用户encoder@localhost由“您的密码”标识; 授予特权。 授予YouPHPTubeEncoder的所有特权。*到encoder@localhost; 刷新特权表并退出。 同花顺特权;出口 第4步:设置Web服务器 我们可以使用Apache或Nginx web服务器。 阿帕奇 如果您喜欢Apache,可以使用命令行文本编辑器(如Nano)为YouPHPTube创建一个虚拟主机文件。 sudo nano/etc/apache2/sites available/youphptube。形态 将以下文本放入文件中。用实际数据替换红色文本。我在本教程中使用了一个子域。如果你愿意,你可以使用你的主域名。不要忘记在DNS记录管理器中为域名设置DNS记录。还要注意,文档根目录区分大小写,不应在末尾添加正斜杠。 &lt;虚拟主机*:80&gt;服务器名管。你的地盘。com DocumentRoot/var/www/YouPHPTube&lt;目录/var/www/YouPHPTube&gt;目录索引。php选项+FollowSymLinks AllowOverride All需要全部授予&lt/目录&gt;ErrorLog${APACHE_LOG_DIR}/youphptube。错误log CustomLog${APACHE_log_DIR}/youphptube。通道日志合并&lt/VirtualHost&gt; 保存并关闭文件。然后启用这个虚拟主机。 sudo a2ensite youphptube。形态 我们需要启用重写模块。 sudo a2enmod重写 重新启动Apache以使更改生效。 sudo systemctl重启apache2 现在参观地铁。你的地盘。com,您将被重定向到安装向导页面(tube.yourdomain.com/install/index.php)。如果看到的是默认的Apache页面而不是安装向导,则需要禁用默认的虚拟主机。 sudo A2000默认值。形态 然后重启Apache。 在安装向导中输入任何信息之前,我们需要启用HTTPS。 Nginx 如果您更喜欢Nginx,请创建一个youphptube。conf文件位于/etc/nginx/conf.d/目录中。 sudo nano/etc/nginx/conf.d/youphptube。形态 将以下文本放入文件中。用实际数据替换红色文本。我在本教程中使用了一个子域。如果你愿意,你可以使用你的主域名。不要忘记在DNS记录管理器中为域名设置DNS记录。还要注意,文档根目录区分大小写。 服务器{listen 80;server_name tube.yourdomain.com;root/var/www/YouPHPTube;index index.php index.html index.htm;charset utf-8;客户端_max_body_size 2G;access_log/var/log/nginx/YouPHPTube.access.log;error_log/var/log/nginx/YouPHPTube.error.log;location~/.php${fastcgi_分割路径_info^(+/.php)(/)$; fastcgi_pass unix:/run/php/php7。3-fpm。短袜fastcgi_索引。php;包括fastcgi_参数;fastcgi_参数脚本_文件名$document_root$fastcgi_脚本_name;}#在中翻译Apache重写规则。htaccess文件到Nginx重写规则位置/{rewrite^/$/view/last;}位置/引导{rewrite^/bootstrap/(.+)$/view/bootstrap/$1 last;}location/js{rewrite^/js/(.+)$/view/js/$1 last;}位置/css{rewrite^/css/(.+)$/view/css/$1 last;}位置/img{rewrite^/img/(.+)$/view/img/$1 last;}位置/页面{rewrite^/page/([0-9]+)/?$/view/?page=$1 last;}位置/videoOnly{rewrite^/videoOnly/?$/view/?type=video last;}位置/audioOnly{rewrite^/audioOnly/?$/view/?type=audio last;}location=/download{rewrite^(.*)$/view/downloadExternalVideo.php last;}location=/downloadNow{rewrite^(.*)$/objects/downloadVideo.php last;}location=/getDownloadProgress{rewrite^(.*)$/objects/downloadVideoProgress.php last;}location=/about{rewrite^(.*)$/view/about.php last;}location=/contact{rewrite^(.*)$/view/contact.php last;}location=/sendmail{rewrite^(.*)$/objects/sendmail.json.php last;}location=/captcha{rewrite^(.*)$/objects/getCaptcha.php last;}位置/监视器{rewrite^/monitor/(.+)$/objects/ServerMonitor/$1 last;}位置/cat{rewrite^/cat/([A-Za-z0-9-]+)/?$/view/?catName=$1 last;}位置/视频{rewrite^/video/([A-Za-z0-9-.]+)/?$/查看/?videoName=$1 last;}位置/视频嵌入{rewrite^/videoembedded/([A-Za-z0-9-.]+)/?$/查看/视频嵌入。php?videoName=$1 last;}location=/upload{rewrite^(.*)$/view/mini upload form/last;}location=/fileUpload{rewrite^(.*)$/view/mini upload form/upload.php last;}location/uploadStatus{rewrite^/uploadStatus/view/mini upload form/videoConversionStatus.php last;}location=/user{rewrite^(.*)$/view/user.php last;}location=/users{rewrite^(.*)$/view/managerUsers.php last;}位置=/用户。json{rewrite^(.*)$/objects/users.json.php last;}location=/updateUser{rewrite^(.*)$/objects/userUpdate.json.php last;}location=/savePhoto{rewrite^(.*)$/objects/userSavePhoto.php last;}location=/addNewUser{rewrite^(.*)$/objects/userAddNew.json.php last;}location=/deleteUser{rewrite^(.*)$/objects/userDelete.json.php last;}location=/recoverPass{rewrite^(.*)$/objects/userRecoverPass.php last;}location=/saveRecoverPassword{rewrite^(.*)$/objects/userRecoverPassSave.json.php last;}location=/signUp{rewrite^(.*)$/view/signUp.php last;}location=/createUser{rewrite^(.*)$/objects/userCreate.json.php last;}location=/usersGroups{rewrite^(.*)$/view/managerUsersGroups.php last;}location=/usersGroups。json{rewrite^(.*)$/objects/usersGroups.json.php last;}location=/addNewUserGroups{rewrite^(.*)$/objects/userGroupsAddNew.json.php last;}location=/deleteUserGroups{rewrite^(.*)$/objects/userGroupsDelete.json.php last;}location=/ads{rewrite^(.*)$/view/managerAds.php last;}location=/addNewAd{rewrite^(.*)$/objects/video_adsAddNew.json.php last;}location=/ads.json{rewrite^(.*)$/objects/video_ads.json.php last;}location=/deleteVideoAd{rewrite^(.*)$/objects/video_adDelete.json.php last;}location/adClickLo{rewrite^/adClickLog/objects/video_adClickLog.php last;}location=/categories{rewrite^(.*)$/view/managerCategories.php last;}位置=/类别。json{rewrite^(.*)$/objects/categories.json.php last;}location=/addNewCategory{rewrite^(.*)$/objects/categoryAddNew.json.php last;}location=/deleteCategory{rewrite^(.*)$/objects/categoryDelete.json.php last;}location=/orphanFiles{rewrite^(.*)$/view/orphanFiles.php last;}location=/mvideos{rewrite^(.*)$/view/managerVideos.php last;}地点=/视频。json{rewrite^(.*)$/objects/videos.json.php last;}location=/deleteVideo{rewrite^(.*)$/objects/videoDelete.json.php last;}location=/addNewVideo{rewrite^(.*)$/objects/videoAddNew.json.php last;}location=/refreshVideo{rewrite^(.*)$/objects/videoRefresh.json.php last;}location=/setStatusVideo{rewrite^(.*)$/objects/videoStatus.json.php last;}location=/reencodeVideo{rewrite^(.*)$/objects/videoReencode.json.php last;}location=/addViewCountVideo{rewrite^(.*)$/objects/videoAddViewCount.json.php last;}location=/saveComment{rewrite^(.*)$/objects/commentAddNew.json.php last;}location/comments{rewrite^/comments.json/([0-9]+)$/objects/comments.json.php?video_id=$1 last;}location=/login{rewrite^(.*)$/objects/login.json.php last;}location=/logoff{rewrite^(.*)$/objects/logoff.php last;}location=/like{rewrite^(.*)$/objects/like.json.php?like=1 last;}location=/loke{rewrite^(.*)$/objects/like.json.php?like=-1 last;}位置/更新{rewrite^/update/?$/update/update.php last;}location=/siteConfigurations{rewrite^(.*)$/view/configurations.php last;}location=/updateConfig{rewrite^(.*)$/objects/configurationUpdate.json.php last;}location=/charts{rewrite^(.*)$/view/charts.php last;}位置=/upload/index。php{rewrite^(.*)$/upload/view/index.php last;}location=/upload/isAdmin{rewrite^(.*)$/upload/view/isAdmin.php last;}location=/upload/removeStreamer{rewrite^(.*)$/upload/view/removeStreamer.php last;}location=/upload/priority{rewrite^(.*)$/upload/view/priority.php last;}location=/upload/status{rewrite^(.*)$/upload/view/status.php last;}location=/upload/serverStatus{rewrite^(.*)$/upload/view/status.php?serverStatus=1 last;}location=/upload/upload{rewrite^(.*)$/upload/view/upload.php last;}位置=/upload/listFiles。json{rewrite^(.*)$/upload/view/listFiles.json.php last;}location=/upload/deleteQueue{rewrite^(.*)$/upload/view/deleteQueue.php last;}location=/upload/saveConfig{rewrite^(.*)$/upload/view/saveConfig.php last;}位置=/upload/youtubeDl。json{rewrite^(.*)$/upload/view/youtubeDl.json.php last;}位置=/upload/send。json{rewrite^(.*)$/upload/view/send.json.php last;}位置=/上传/拖缆。json{rewrite^(.*)$/upload/view/streamers.json.php last;}位置=/upload/queue。json{rewrite^(.*)$/upload/view/queue.json.php last;}location=/upload/queue{rewrite^(.*)$/upload/view/queue.php last;}location=/upload/login{rewrite^(.*)$/upload/objects/login.json.php last;}location=/upload/logoff{rewrite^(.*)$/upload/objects/logoff.json.php last;}位置/上传/{rewrite“^/getImage/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})$”/upload/objects/getImage。php?base64Url=$1&amp;格式=上次2美元;重写“^/getImageMP4/([A-Za-z0-9=/]+)/([A-Za-z0-9]{3})/([0-9.]+)$”/上传/objects/getImageMP4。php?base64Url=$1&amp;格式=$2&amp;时间=上次3美元;}location/upload/getSpiritsFromVideo{rewrite^/getSpiritsFromVideo/([A-Za-z0-9=/])/([0-9]+)/([0-9]+)$/upload/objects/getSpiritsFromVideo.php?base64Url=$1&amp;tileWidth=$2&amp;totalClips=$3 last;}location/upload/getLinkInfo{rewrite^/getLinkInfo/([A-Za-z0-9=/]+)$/upload/objects/getLinkInfo.json.php?base64Url=$1 last;} 保存并关闭文件。然后测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 现在参观地铁。你的地盘。com,您将被重定向到安装向导页面(tube.yourdomain.com/install/index.php)。在安装向导中输入任何信息之前,我们需要启用HTTPS。 步骤5:启用HTTPS 为了加密HTTP流量,我们可以通过安装Let's encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Debian 10 Buster服务器上安装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 tube。你的地盘。通用域名格式 如果使用Nginx,请安装Certbot Nginx插件。 sudo apt安装python3 certbot nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot--nginx--agree tos--redirect--hsts--stype ocsp--email[email ;protected]-d tube。你的地盘。通用域名格式 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 第6步:使用安装向导完成安装 现在去看电视。你的地盘。com和安装向导将出现。在左侧,您可以看到服务器是否满足要求。 如果使用Nginx,可以忽略以下消息。 您的服务器是nginx/1.14.2,必须安装Apache。 如您所见,PHP post_max_大小应至少为100M,upload_max_文件大小应至少为100M。我们需要编辑php。ini文件来更改这两个值。如果使用ApacheWeb服务器,那么 sudo nano/etc/php/7.3/apache2/php。伊尼 如果将Nginx与PHP-FPM一起使用,则需要编辑PHP的FPM版本。ini文件。 sudo nano/etc/php/7.3/fpm/php。伊尼 找到下面两行。 post_max_size=8M上传_max_filesize=2M 根据要上传的视频文件大小更改值。例如,如果允许上传1G视频文件,则 post_max_size=1024M上传_max_filesize=1024M 保存并关闭文件。重新启动Apache以使更改生效。 sudo systemctl重启apache2 如果将Nginx与PHP-FPM一起使用,则重新启动PHP-FPM。 sudo systemctl重新启动php7。3-fpm 现在刷新YouPHPTube安装向导页面。你的服务器应该通过所有要求。现在在右边,你可以输入你的视频网站的标题。输入之前创建的YouPHPTube数据库名称、用户和密码。(注意:应该使用主数据库,而不是编码器数据库。还要注意区分大小写。)并设置系统管理员密码。 &nbsp; 单击立即安装按钮,YouPHPTube应该安装成功。 现在我们需要删除/var/www/YouPHPTube/install/目录。 sudo rm/var/www/YouPHPTube/install/-r 单击转到主页按钮,您将看到YouPHPTube主页。 您可以单击左侧的下拉菜单,以管理员用户身份登录,并使用刚才设置的密码。 第7步:设置编码器 去https://tube.yourdomain.com/upload/.您将被重定向到编码器设置向导。如果没有自动重定向,则可以手动输入安装向导URL。 https://tube.yourdomain.com/upload/install/index.php/ 左侧将显示服务器是否满足YouPHPTube编码器的要求。 如果使用Nginx,可以忽略以下消息。 您的服务器是nginx/1.14.2,必须安装Apache。 如您所见,PHP最大执行时间应至少为7200,PHP内存限制应至少为512M。我们需要编辑php。ini文件来更改这两个值。如果使用ApacheWeb服务器,那么 sudo nano/etc/php/7.3/apache2/php。伊尼 如果将Nginx与PHP-FPM一起使用,则需要编辑PHP的FPM版本。ini文件。 sudo nano/etc/php/7.3/fpm/php。伊尼 找到下面两行。 最大执行时间=30内存限制=128M 更改值。 最大执行时间=7200内存限制=512M 请注意,如果稍后的视频编码中途停止,则需要增加最大执行时间,或升级CPU。 保存并关闭文件。重新启动Apache以使更改生效。 sudo systemctl重启apache2 如果将Nginx与PHP-FPM一起使用,则重新启动PHP-FPM。 sudo systemctl重启php7。3-fpm 现在刷新YouPHPTube编码器安装向导页面。你的服务器应该通过所有要求。现在,在右侧,您需要输入之前创建的YouPHPTubeEncoder数据库名称、用户和密码。注意区分大小写,并输入拖缆站点的管理员密码。 &nbsp; 单击立即安装按钮,将安装YouPHPTube编码器。 删除安装目录。 sudo rm/var/www/YouPHPTube/upload/install/-r 然后转到主页。 第8步:更改编码器URL 默认情况下,YouPHPTube使用公共编码器上传视频。要使用自己的编码器,请在YouPHPTube(而不是YouPHPTube encoder)中以管理员身份登录,然后从左侧管理面板转到管理面板。 转到设置-&gt;网站设置-&gt;高级配置。将编码器URL更改为https://tube.yourdomain.com/upload/.保存设置,清除缓存目录并生成新的站点地图。 现在退出并重新登录。如果你点击右上角的“视频和音频编码”按钮,你将被带到自己的编码器上传视频。需要注意的是,编码速度取决于服务器的CPU能力。 第9步:配置SMTP 要发送电子邮件(如帐户注册、密码重置等),需要配置SMTP服务器。如果您想使用自己的邮件服务器向客户发送电子邮件,请查看以下文章以设置自己的邮件服务器。 如何使用Modoboa在Debian 9上快速设置电子邮件服务器 如果你想使用SMTP中继服务,我推荐Mailjet。您可以按照下面的教程在YouPHPTube服务器上设置SMTP中继。 如何使用Mailjet在Debian上设置Postfix SMTP中继 启用TCP BBR 对于视频流服务器,建议按照本文中的说明在Linux内核中启用TCP BBR拥塞控制算法。(它是为Ubuntu编写的,但也适用于Debian 10 Buster。) 如何通过启用TCP BBR轻松提升Ubuntu 16.04/18.04网络性能 移动应用 你可以在谷歌Play Store或苹果商店的YPT Mobile上搜索YouPHPTube,下载免费的android应用程序或iOS应用程序。白标移动应用需要付费许可证。 故障排除 如果YouPHPTube主页未能加载一些CSS和JavaScript资源, 很可能您在Apache或Nginx虚拟主机文件中为web根目录添加了额外的正斜杠。而不是使用 DocumentRoot/var/www/YouPHPTube/ 你应该使用 DocumentRoot/var/www/YouPHPTube 如果编码器工作不正常,可以在/var/www/YouPHPTube/upload/videos/YouPHPTube上查看日志文件。日志 其他花絮 编码视频时,可以选择分辨率(低分辨率、SD分辨率、HD分辨率)。如果您将YouPHPTube用作个人视频流网站,我建议您选择高清分辨率,这样可以减少编码时间并节省磁盘空间。如果已经将视频编码为所有3种分辨率,则可以转到YouPHPTube视频目录(/var/www/YouPHPTube/videos),删除低分辨率和SD分辨率的视频。 cd/var/www/YouPHPTube/videos/sudo rm*Low。mp4 sudo rm*SD。mp4 如何从视频网站下载所有视频 您可以使用youtube dl命令行实用程序下载所有视频。首先,你需要进入YouPHPTube仪表板,然后进入视频列表页面并向下滚动到底部,单击下载你的视频列表(permalink.txt文件)按钮。您将看到所有视频的URL列表。 接下来,打开一个终端,用文本编辑器创建一个txt文件,从网页复制URL并粘贴到文件中。然后可以运行以下命令下载视频。替换视频列表。使用您自己的文件名。 youtube dl-视频列表。txt 收尾 我希望本教程能帮助您在Debian 10 Buster服务器上安装YouPHPTube。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.22 浏览:76
  • 在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&gt;风格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代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。 &lt;!DOCTYPE html&gt&书信电报;html&gt&书信电报;头&gt&书信电报;meta charset=“UTF-8”大于&书信电报;标题&gt;无障碍地图&lt/标题&gt&书信电报;link rel=“stylesheet”href=”http://tile.your-domain.com/v5.3.0/css/ol.css“type=“text/css”&gt;&lt;script src=”http://tile.your-domain.com/v5.3.0/build/ol.js“&gt;&lt;/script&gt;&lt;style&gt;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”&gt;转到地图&lt/a&gt&书信电报;div id=“map”class=“map”tabindex=“0”&gt&lt/部门&gt&书信电报;按钮id=“缩小”&gt;缩小&lt/按钮&gt&书信电报;按钮id=“放大”&gt;放大&lt/按钮&gt&书信电报;脚本&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&gt; 保存并关闭文件。现在你可以通过在浏览器地址栏中输入你的子域来查看你的拖拉地图。 瓦片你的领域。通用域名格式 或 瓦片你的领域。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代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。 &lt;html&gt&书信电报;头&gt&书信电报;meta charset=“UTF-8”大于&书信电报;标题&gt;我的第一个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&书信电报;脚本&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&gt; 保存并关闭文件。现在,您可以通过在浏览器中键入服务器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 要在背景中渲染贴图分幅,请添加&amp;结尾的符号。 render_list-m default-a-z 0-z 19--num threads=10&amp; 现在你可以关闭终端窗口了。要检查呈现进度,请打开另一个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。形态 在打开后放置以下指令&lt;VirtualHost*:443&gt;标签 协议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。形态 在&lt;VirtualHost&gt;标签。 &lt;位置/osm&gt;SetEnvIf Referer example/。com trusted_referer Order deny,allow deny from all allow from env=trusted_referer&lt/地点&gt; 上面的代码检查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更新——安静与&amp;systemctl重新加载apache2 不同主机上的PostgreSQL数据库和Web服务器 如果PostgreSQL和Apache web服务器位于不同的主机上,则需要编辑该项目。Apache主机上的mml文件。 nano/home/osm/openstreetmap-carto-4.20.0/project。嗯 找到以下几行: osm2pgsql:&amp;osm2pgsql类型:“postgis”dbname:“gis”键字段:“几何体”字段:“方式”范围:“-20037508,-200375082003750820037508” 指定PostgreSQL数据库服务器的IP地址。 osm2pgsql:&amp;osm2pgsql类型:“postgis”主机:“10.0.0.2”数据库名:“gis”键字段:“几何体”字段:“方式”范围:“-20037508,-200375082003750820037508” 保存并关闭文件。然后使用carto map样式表编译器构建Mapnik XML样式表。 carto项目。mml&gt;风格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 浏览:63
  • 在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密码。 &lt;用户映射&gt&lt;!——每用户身份验证和配置信息--&gt&书信电报;授权用户名=“您的首选用户名”密码=“1060b7b46a3bd36b3a0d66e0127d051”编码=“md5”&gt&书信电报;连接名称=“默认值”&gt&书信电报;协议&gt;vnc&lt/协议&gt&书信电报;param name=“hostname”&gt;localhost&lt/param&gt&书信电报;param name=“port”&gt;5901&lt/param&gt&书信电报;param name=“password”&gt;vnc_密码&lt/param&gt&lt/连接&gt&lt/授权&gt&lt/用户映射&gt; 保存并关闭文件。重启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&gt/开发/空2&gt&amp;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提供隐私保护。 &lt;虚拟主机*:80&gt;ServerName鳄梨酱。实例com ErrorLog${APACHE_LOG_DIR}/guacamole_error。log CustomLog${APACHE_log_DIR}/guacamole_访问。日志合并&lt;地点/&gt;要求所有授予的ProxyPasshttp://localhost:8080/guacamole/flushpackets=在ProxyPassReverse上http://localhost:8080/guacamole/&lt/地点&gt&书信电报;位置/websocket隧道&gt;需要所有授予的代理权限ws://localhost:8080/guacamole/websocket tunnel代理权限ws://localhost:8080/guacamole/websocket tunnel&lt/地点&gt;标题始终未设置X帧选项&lt/VirtualHost&gt; 保存并关闭文件。测试语法。 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远程桌面。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.22 浏览:93
  • 如何使用Apache/Nginx在Ubuntu 20.04上安装FileRun

    本教程将向您展示如何使用Apache/Nginx web服务器在Ubuntu 20.04 LTS上安装FileRun。FileRun是一款自托管的Google Drive/Photos/Music替代产品。 文件运行功能 不需要索引。它可以直接访问文件系统上的文件。 与NextCloud兼容。 自动文件版本控制。 100%可品牌化。上传你自己的标志。 可扩展。有很多插件可以让你创建和编辑office文件、CAD文件等。 访客用户。 整理、同步和共享您的照片。 内置音乐播放器和组织者 要求 要学习本教程,您需要域名和服务器。我在namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。一台1G内存的服务器足以运行FileRun。一旦你有了一台服务器,就在上面安装Ubuntu,并按照下面的说明操作。 FileRun是用PHP编写的,使用MySQL/MariaDB数据库。为了学习本教程,假设您已经在Ubuntu20.04上设置了LAMP或LEMP堆栈。如果没有,请查看以下教程之一: 如何在Ubuntu 20.04服务器上安装LAMP stack 如何在Ubuntu 20.04服务器上安装LEMP堆栈 当你设置完LAMP或LEMP堆栈后,回到这里继续阅读。 第一步:在Ubuntu 20.04上下载FileRun 通过SSH登录到服务器。您始终可以使用以下命令在服务器上下载最新版本的FileRun。 wget-O文件运行。拉链https://filerun.com/download-latest 下载后,使用解压功能提取归档文件。 sudo apt安装unzip sudo mkdir-p/var/www/filerun/sudo unzip filerun。zip-d/var/www/filerun/ -d选项指定目标目录。FileRun web文件将被提取到/var/www/FileRun/。然后我们需要将该目录的所有者更改为www数据,以便web服务器可以写入该目录。 sudo chown www-data:www-data/var/www/filerun/-R 第2步:在MariaDB中创建数据库和用户 使用以下命令登录MariaDB数据库服务器。 sudo mysql 或者,您也可以使用此命令登录。 sudo mariadb 然后为FileRun创建一个数据库。本教程将数据库文件命名为run。你可以用任何你喜欢的名字。 创建数据库文件运行; 创建数据库用户。同样,您可以使用此用户的首选名称。用首选密码替换密码。 创建用户filerun@localhost由“您的密码”标识; 授予此用户在filerun数据库上的所有权限。 授予filerun的所有权限。*到filerun@localhost; 刷新权限并退出。 同花顺特权;出口 步骤3:创建Apache或Nginx配置文件 阿帕奇 如果您更喜欢使用Apache web服务器,那么在/etc/apache2/sites available/目录中创建一个虚拟主机配置文件。 sudo nano/etc/apache2/sites available/filerun。形态 将以下文本放入文件中。替换filerun。实例使用你自己的域名。别忘了在DNS管理器中设置域名记录。 &lt;虚拟主机*:80&gt;服务器名文件运行。实例com DocumentRoot/var/www/filerun&lt;目录“/var/www/filerun”&gt;选项索引如下Symlinks AllowOverride All需要全部授予&lt/目录&gt;ErrorLog${APACHE_LOG_DIR}/filerun。错误log CustomLog${APACHE_log_DIR}/filerun。通道日志合并&lt/VirtualHost&gt; 保存并关闭文件。然后启用重写模块。 sudo a2enmod重写 然后启用这个虚拟主机。 sudo a2ensite文件运行。形态 重新启动Apache web服务器,使更改生效。 sudo systemctl重启apache2 Nginx 如果您更喜欢使用Nginx web服务器,那么创建一个filerun。conf文件位于/etc/nginx/conf.d/目录中。 sudo nano/etc/nginx/conf.d/filerun。形态 将以下文本放入文件中。替换filerun。实例使用你自己的域名。别忘了在DNS管理器中设置域名记录。 server{listen[:]:80;listen 80;server_name filerun.example.com;access_log/var/log/nginx/filerun.access.log;error_log/var/log/nginx/filerun.error.log;root/var/www/filerun/;index.php index.html;location/{try_files$uri$uri//index.php;}错误_第404/404页。html;错误_第500页502 503 504/50x。html;客户最大身体尺寸500米;位置=/50x。html{root/usr/share/nginx/html;}地点~/。php${fastcgi_pass unix:/run/php/php7.4-fpm.sock;fastcgi_-param SCRIPT_FILENAME$document_root$fastcgi_-SCRIPT_-name;include fastcgi_-params;include snippets/fastcgi-php.conf;}#启用gzip压缩gzip on;gzip_随时间而变化;gzip_min_长度1000;gzip_comp_5级;gzip_类型application/json text/css application/x-javascript application/javascript image/svg+xml;gzip#u代理任何;#较长的浏览器缓存寿命可以加快对页面位置的重复访问~*/。(jpg | jpeg | gif | png | webp | svg | woff | woff2 | ttf | css | js | ico | xml)${accesslog off log_not found off;expires 360d;}禁用对隐藏文件位置~//的访问。ht{access_log off;log_not_found off;deny all;} 保存并关闭文件。测试Nginx配置,然后重新加载Nginx以使更改生效。 sudo nginx-t sudo systemctl reload nginx 第4步:安装并启用PHP模块 运行以下命令来安装FileRun所需或推荐的PHP模块。 sudo apt安装imagemagick ffmpeg php imagick php7。4-mysql php7。4-fpm php7。4-常见php7。4-gd php7。4-json php7。4-卷曲php7。4-zip php7。4-XMLPHP7。4-Mb字符串php7。4-bz2 php7。4-intl Filerun使用ionCube加密其PHP文件,因此我们需要安装ionCube PHP加载程序来解密PHP文件。Dowload ionCube装载机。 wgethttps://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz 将其解压缩到/usr/lib/php/。 sudo tar-xzf ioncube装载机xzf lin x86-64。焦油gz-C/usr/lib/php 现在我们需要启用ioncube PHP扩展。 阿帕奇 如果使用Apache,则为ionCube创建PHP ini文件。 sudo nano/etc/php/7.4/apache2/conf.d/00-ioncube。伊尼 将以下行添加到此文件。 zend_extension=/usr/lib/php/ioncube/ioncube_loader_lin_7.4。所以 保存并关闭文件。我们需要创建第二个PHP ini文件。 sudo nano/etc/php/7.4/apache2/conf.d/filerun。伊尼 添加以下行。这是为了更改一些默认的PHP配置。 expose_php=Off error_reporting=E_ALL&amp~E_NOTICE display_errors=Off display_startup_errors=Off log_errors=On ignore_repeated_errors=Off allow_url_fopen=On allow_url_include=Off variables_order=“GPCS”allow_webdav_methods=On memory_limit=128M max_execution_time=300输出_缓冲=Off输出_handler=”“zlib。输出压缩=关闭zlib。output_handler=”“safe_mode=Off register_globals=Off magic_quotes_gpc=Off upload_max_filesize=20M post_max_size=20M enable_dl=Off disable_functions=”“disable_classes=”“session。save_handler=文件会话。使用u cookies=1个会话。仅使用u cookies=1个会话。自动启动=0个会话。cookie_lifetime=0会话。cookie_httponly=1个日期。时区=“UTC” 保存并关闭文件。重新加载Apache以使更改生效。 sudo systemctl重新加载apache2 Nginx 如果使用Nginx,请编辑php。ini文件。 sudo nano/etc/php/7.4/fpm/php。伊尼 在[PHP]行的正下方添加以下行。 zend_extension=/usr/lib/php/ioncube/ioncube_loader_lin_7.4。所以 保存并关闭文件。我们需要创建第二个PHP ini文件。 sudo nano/etc/php/7.4/fpm/conf.d/10-ioncube。伊尼 添加以下行。这是为了更改一些默认的PHP配置。 expose_php=Off error_reporting=E_ALL&amp~E_NOTICE display_errors=Off display_startup_errors=Off log_errors=On ignore_repeated_errors=Off allow_url_fopen=On allow_url_include=Off variables_order=“GPCS”allow_webdav_methods=On memory_limit=128M max_execution_time=300输出_缓冲=Off输出_handler=”“zlib。输出压缩=关闭zlib。output_handler=”“safe_mode=Off register_globals=Off magic_quotes_gpc=Off upload_max_filesize=20M post_max_size=20M enable_dl=Off disable_functions=”“disable_classes=”“session。save_handler=文件会话。使用u cookies=1个会话。仅使用u cookies=1个会话。自动启动=0个会话。cookie_lifetime=0会话。cookie_httponly=1个日期。时区=“UTC” 保存并关闭文件。然后重启Nginx和PHP7。4-FPM。 sudo systemctl重启nginx php7。4-fpm 现在,您应该可以访问以下位置的FileRun基于web的安装向导:http://filerun.example.com,但在输入任何信息之前,让我们启用HTTPS。 第5步:启用HTTPS 为了在访问FileRun web界面时加密HTTP流量,我们可以通过安装Let’s encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu 20.04上安装Let's Encrypt client(certbot)。 sudo apt更新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 filerun。实例通用域名格式 如果使用Apache,还需要安装Certbot Apache插件。 sudo apt安装python3 certbot apache 然后运行此命令以获取并安装TLS证书。 sudo certbot--apache--agree tos--redirect--hsts--StapleOCSP--email[email ;protected]-d filerun。实例通用域名格式 说明: --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 &nbsp; 第6步:在Web浏览器中完成安装 去https://filerun.example.com启动基于web的安装向导。然后点击下一步按钮。 它将检查您的系统是否满足PHP扩展等要求。如果满足所有要求,请单击“下一步”。 在下一步中,输入您在步骤2中创建的MariaDB用户名、密码和数据库名称。 单击“下一步”后,安装向导将自动创建用户帐户。单击“下一步”继续。 在下一个屏幕上,您可以使用超级用户帐户登录。首次登录时,您需要为超级用户帐户创建一个主文件夹。 可以使用以下命令为超级用户创建主文件夹。 sudo mkdir/var/www/superuser sudo chown www-data/var/www/superuser/-R 然后在FileRun web界面中输入文件夹路径。并保存更改。 下一步,转到安全-&gt;API来启用API,以便客户端应用程序可以与服务器同步。 安装FileRun桌面同步客户端 在桌面上,FileRun使用Nextcloud客户端与服务器同步。在Ubuntu桌面上,您可以通过以下方式安装Nextcloud客户端: sudo apt安装nextcloud桌面 有关如何在其他平台上安装客户端应用程序,请查看FileRun下载页面。 如何设置电子邮件通知 如果有多个用户,那么最好让FileRun能够发送密码重置电子邮件等电子邮件通知。有关如何设置电子邮件服务器,请查看以下教程。请注意,我强烈建议在全新干净的操作系统上运行iRedMail邮件服务器。在具有其他web应用程序的操作系统上安装iRedMail可能会失败,并可能破坏现有的应用程序。 如何使用iRedMail在Ubuntu20.04上轻松设置功能齐全的邮件服务器 如果您不想运行自己的电子邮件服务器,可以设置SMTP中继。请参阅以下教程。 如何在Ubuntu20.04服务器上设置后缀SMTP中继 收尾 就这样!我希望本教程能帮助您使用Apache或Nginx在Ubuntu20.04服务器上安装FileRun。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:70
  • 2种将Ubuntu 20.04/21.04升级到21.10的方法

    Ubuntu 21.10,代号为iBISH因德里,于2021年10月14日发布。本教程将向您展示两种将Ubuntu20.04/Ubuntu21.04升级到21.10的方法。第一种方法使用图形更新管理器,第二种方法使用命令行。通常,您使用图形更新管理器升级Ubuntu桌面,使用命令行升级Ubuntu服务器,但命令行方法也适用于桌面。 Ubuntu 20.04是一个长期支持(LTS)版本,将支持5年。Ubuntu21.10是非LTS版本,这意味着它将只支持9个月,直到2022年7月。如果你更喜欢稳定性而不是前沿,那就坚持使用Ubuntu 20.04。但是如果你想体验最新最棒的软件,你可以按照本教程从Ubuntu 20.04升级到21.10。 Ubuntu21.04将于明年1月到期,因此我建议21.04用户尽快升级到Ubuntu21.10。 提示:在升级之前,您可以使用systemback程序从当前操作系统创建可引导的ISO映像。如果升级失败,您可以使用可引导ISO轻松恢复操作系统。操作系统上的所有东西,包括软件和文件都将完好无损。如果您正在使用笔记本电脑,请连接电源。 使用图形更新管理器将Ubuntu20.04/Ubuntu21.04升级到21.10 首先,从应用程序菜单中打开软件更新程序(又名更新管理器)。它将更新软件包信息。如果有可用的更新,请单击“立即安装”按钮并输入密码以安装更新。 如果安装了新版本的Linux内核,则更新管理器将告诉您重新启动计算机。单击“立即重新启动”。 然后是开放软件&amp;应用程序菜单中的更新。 选择“更新”选项卡。在窗口底部,将通知设置从长期支持版本更改为任何新版本。系统将要求您输入密码,以使更改生效。 关闭软件&amp;更新窗口。接下来,打开一个终端窗口。 如果您使用的是Ubuntu 21.04,请在终端中发出以下命令。 更新管理器 你会收到通知,软件是最新的,Ubuntu 21.10现在可用。点击升级按钮。 如果您使用的是Ubuntu 20.04,请在终端中发出以下命令。 更新管理器 您将收到通知,软件正在更新,Ubuntu 21.04现在可用。点击升级按钮。你需要先升级到Ubuntu21.04,然后按照同样的步骤升级到Ubuntu21.10。这是因为Ubuntu21.04仍然受到Canonical的支持,而且还没有到生命的尽头。 然后输入密码。此时将显示“发行说明”窗口。单击升级。发行版升级窗口将打开。如果通知您某些第三方来源已禁用,请接受它。升级完成后,您可以重新启用它们。 过一会儿,系统会询问您是否要开始升级。单击开始升级按钮。 等待升级过程完成。更新管理器可能会询问您是否希望在软件包升级期间重新启动服务,而无需询问。勾选并点击下一步按钮。 安装新版本的软件包后,更新管理器可能会询问您是否要删除过时的软件包。我总是选择删除。 过时的软件包是在新Ubuntu版本的软件库中找不到其名称的软件包。导致软件包过时的原因如下: 上游开发商停止维护该软件包,没有其他人愿意接管。所以Ubuntu软件包维护者决定从Ubuntu存储库中删除这个软件包。 该包成为孤立包,这意味着没有其他包依赖于它,并且该包的用户非常少。所以Ubuntu软件包维护者决定从Ubuntu存储库中删除这个软件包。 该软件包在新Ubuntu版本的软件库中有一个新名称。 从系统中删除过时的软件包后。重新启动你的电脑,用下面的命令检查你的Ubuntu版本。 lsb_发布-a 输出: 没有可用的LSB模块。发行商ID:Ubuntu描述:Ubuntu 21.10发行版:21.10代码名:impish 使用命令行将Ubuntu20.04/21.04升级到Ubuntu21.10 您可以使用命令行升级Ubuntu桌面或无头服务器。你应该升级你的Ubuntu服务器吗? 如果你运行的是像Plesk这样的业务关键型生产服务器,建议你继续使用Ubuntu20.04 LTS。 如果您正在运行个人服务器,或者服务器上有非常简单的应用程序,可以将其升级到21.10。 让SSH会话保持活动状态 如果使用SSH登录Ubuntu服务器,最好在服务器上的/etc/SSH/sshd_config文件中添加以下行,以保持OpenSSH会话的活动状态。 ClientAliveInterval 60 保存并关闭文件。然后重启SSH守护进程。 sudo systemctl重启ssh 另外,在服务器上安装screen utility。 sudo apt安装屏幕 然后启动屏幕: 屏幕 在第一次启动时,您将看到介绍文本,只需按Enter键即可结束。然后你就可以像往常一样运行命令了。如果您的Internet连接突然中断,请使用SSH连接到服务器并运行以下命令以获取上一个屏幕会话ID。 屏幕-ls 样本输出: 屏幕显示:32113。pts-1。焦点(2021年10月14日03:45:29 PM)(已分离)1个插座输入/运行/屏幕/S-linuxbabe。 然后可以重新连接到上一个屏幕会话。 屏幕-d-r 32113 如何从命令行升级 要升级到Ubuntu21.10,请运行以下命令升级现有软件。 sudo-apt更新&amp&amp;sudo apt区升级 请注意,如果在运行上述命令时安装了新内核,则需要重新启动系统(sudo shutdown-r now)以继续升级过程。 然后确保安装了update manager core和ubuntu release upgrader core软件包。 sudo apt安装更新管理器内核ubuntu发布升级程序内核 接下来,使用nano或您首选的命令行文本编辑器编辑配置文件。 sudo nano/etc/更新管理器/发布升级 在这个文件的底部,将Prompt的值从lts改为normal。 提示=正常 要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。然后,运行以下命令开始升级过程。 如果您正在运行Ubuntu21.04,那么执行以下命令并按照屏幕上的说明升级到Ubuntu21.10。 发布升级吗 如果你正在运行Ubuntu20.04,那么先执行下面的命令并按照屏幕上的指示升级到Ubuntu21.04。之后,按照同样的步骤升级到Ubuntu21.10。 发布升级吗 基本上,你需要按y键来回答问题。 更新管理器可能会询问您是否希望在软件包升级期间重新启动服务,而无需询问。按Tab键选择Yes,然后按Enter键。 如果您正在升级服务器,可能会看到如下消息。我建议选择N以保留当前版本。更新版本将在同一目录下提供。你可以稍后再看。 升级完成后,重新启动Ubuntu桌面或服务器。要检查你的Ubuntu版本,请运行: lsb_发布-a 输出: 没有可用的LSB模块。发行商ID:Ubuntu描述:Ubuntu 21.10发行版:21.10代码名:impish 推荐阅读: Linux终端和控制台为初学者讲解 你应该使用-d选项吗? update manager和do release upgrade命令带有-d选项,这将导致系统升级到开发版本。 目前,Ubuntu21.10仍被视为UbuntuRelease cadence的开发版本,因为Ubuntu22.04的开发尚未启动。它将在Ubuntu21.10发布一周后发生,在此之前我们可以使用-d选项。当Ubuntu 22.04进入开发阶段时,你不应该使用-d选项。 请在升级之前安装您的版本的所有可用更新 如果在尝试升级时看到以下消息,则需要更新所有软件包(sudo apt update;sudo apt upgrade-y),然后重新启动操作系统并再次尝试升级。 请在升级之前安装您的版本的所有可用更新。 有时,您的系统可能会保留一些软件包,这些软件包可以显示为: sudo-apt-mark-showhold 你需要拆开包裹。 sudo apt mark unhold包名 然后跑 sudo-apt升级 有时,sudo apt update告诉您可以升级包,但sudo apt upgrade不会升级包,然后您可以运行以下命令列出包。 apt列表--可升级 现在你可以升级软件包了。 sudo apt升级包名称 如果这是一个无法升级的坏包,请将其删除。 sudo apt删除包名 结论 我希望本教程能一如既往地帮助你将Ubuntu 20.04或Ubuntu 21.04升级到Ubuntu 21.10,如果你觉得这篇文章有用,那么订阅我们的免费时事通讯,获取新的提示和技巧?

    2022.03.23 浏览:64
  • 如何使用Google Authenticator在Ubuntu 16.04上设置SSH双因素身份验证

    本教程将向您展示如何使用著名的Google Authenticator在Ubuntu 16.04服务器上设置SSH双因素身份验证。一旦设置好,SSH服务器的安全性将大大提高。 谷歌验证器的工作原理 双因素身份验证,也称为两步验证,需要输入两条信息才能登录。Google Authenticator使用共享密钥和当前时间生成一次性密码。您不仅需要提供正确的用户名和密码,还需要输入由Google Authenticator生成的一次性密码才能登录到SSH服务器。 第一步:在Ubuntu 16.04服务器上安装并配置Google Authenticator 登录Ubuntu服务器,运行以下命令,从默认的Ubuntu软件包存储库安装Google Authenticator。 sudo apt安装libpam谷歌认证器 然后运行google authenticator命令在主目录中创建一个新密钥。 谷歌认证器 当被问及“您希望身份验证令牌基于时间吗?”回答y。然后你会看到一个二维码,你可以使用谷歌验证器移动应用程序扫描。 通过Google play或Apple app store在手机上安装Google Authenticator应用程序,并扫描二维码。QR码代表密钥,只有SSH服务器和Google Authenticator应用程序知道该密钥。扫描二维码后,您可以在手机上看到六位数的一次性密码。默认情况下,它持续30秒。 您可以在终端窗口中看到密钥、验证码和紧急刮擦码。建议将这些信息保存到安全的地方,以便以后使用。 然后您可以输入y来回答所有剩余的问题。这将更新Google Authenticator配置文件,禁用同一身份验证令牌的多次使用,增加时间窗口,并启用速率限制以防止暴力登录尝试。 第2步:配置SSH守护进程以使用Google Authenticator 打开SSH服务器配置文件。 sudo nano/etc/ssh/sshd_config PAM代表可插拔身份验证模块。它提供了一种将不同的身份验证方法插入Linux系统的简单方法。要使用SSH启用Google Authenticator,必须启用PAM和质询响应身份验证。因此,在文件中找到以下两行,并确保它们都设置为“是”。 UsePAM yes ChallengeResponseAuthentication yes 保存并关闭文件。然后重启SSH守护进程。 sudo systemctl重启ssh 接下来,编辑SSH守护程序的PAM规则文件。 sudo nano/etc/pam。d/sshd 在文件末尾添加以下条目。 身份验证需要pam_google_身份验证程序。所以 保存并关闭文件。从现在起,SSH守护进程将使用Google Authenticator。 第3步:测试SSH双因素身份验证 现在打开一个单独的终端窗口,尝试登录SSH服务器。不要关闭当前的SSH会话。如果出现问题,可以在当前SSH会话中修复。如果所有设置都正确,系统将要求您输入用户密码和一次性密码。 还要注意,Ubuntu 16.04服务器上的每个用户都需要运行google authenticator命令并扫描二维码,以便使用双因素身份验证。 紧急划痕代码 紧急恢复码是你的备份码。如果手机丢失,您可以输入五个紧急刮擦码中的一个,而不是一次性密码,以完成两步验证。请注意,这些代码仅供一次性使用。 使用第二部电话 如果你有第二部手机,你可以在第二部手机上安装Google Authenticator应用程序并手动输入密钥。这与扫描二维码相同。 如果您想更改密钥,只需登录服务器并再次运行google authenticator命令来更新~/。谷歌认证文件。 时间同步 由于一次性密码是使用共享密钥和当前时间计算的,所以在Ubuntu 16.04服务器上启用NTP时间同步是个好主意。 我希望本教程能帮助您在Ubuntu 16.04服务器上设置SSH双因素身份验证。一如既往,如果你觉得这篇文章有用,那么订阅我们的免费时事通讯。

    2022.03.23 浏览:169
  • 在Ubuntu上设置自动安全更新(无人参与升级)

    本教程将向您展示如何在Ubuntu上设置自动安全更新,即无人值守升级。如果你不是住在洞穴下,那么你可能知道Equifax的大规模数据泄露。2017年5月至7月期间,1.43亿Equifax客户信息被盗,包括姓名、社保号、出生日期、驾照、20万个信用卡号码。 在2017年3月,Apache结构中的一个关键漏洞被发现,Apache基金会发布了一个修复程序,当他们宣布存在漏洞时。然而,Equifax有两个月没有修补该漏洞,导致了大规模数据泄露。运行复杂应用程序的公司可能需要在安装更新之前进行大量测试,但如果您有一台供个人使用的简单Linux服务器,则可以启用自动安全更新以尽快修补漏洞。 在Ubuntu服务器上配置自动安全更新(无人参与升级) 首先,安装无人值守升级包。 sudo apt更新sudo apt安装无人值守升级 您需要安装update notifier common软件包才能设置自动重新启动。 sudo-apt-install-update-notifier-common 然后编辑文件。 sudo nano/etc/apt/apt.conf.d/507-upgrades 在这个文件中,您可以配置应该自动更新的包。默认情况下,只会自动安装安全更新,如下行所示。所以没有必要改变这一部分。 无人参与升级::允许的来源{“${distro_id}:${distro_codename}”;“${distro_id}:${distro_codename}-安全”;//延长安全维护;不一定存在于//每个版本,并且此系统可能没有安装它,但是如果//可用,更新的策略是,默认情况下,无人参与的升级//也应该从这里安装。“${distro_id}ESMApps:${distro_codename}-应用程序安全”;“${distro_id}ESM:${distro_codename}-基础安全”//“${distro_id}:${distro_codename}-更新”//“${distro_id}:${distro_codename}-建议”//“${distro_id}:${distro_codename}-后端口”;}; 第一个来源“${distro_id}:${distro_codename}”是必需的,因为安全更新可能会从非安全源引入新的依赖项。此来源不提供软件更新。 第二个来源是定期的安全更新。 第三个和第四个来源(ESMaps和ESM)用于扩展安全维护,也就是说,对于那些运行Ubuntu版本的人来说,它已经到了生命的尽头。你可以保持原样。 电子邮件通知 有时Ubuntu可能无法安装安全更新,因此需要手动更新。如果您希望在每次安全更新后收到电子邮件通知,请查找下面的行并取消注释。(删除开头的双斜线。) Ubuntu 18.04 //无人参与升级::邮件“root”; Ubuntu 20.04 //无人参与升级::邮件“”; 您可以指定接收通知的电子邮件地址,如下所示。 无人参与升级::邮件“[email&#160;受保护]”; 如果您希望仅在安全更新过程中出现错误时接收电子邮件通知,请取消对以下行的注释。 Ubuntu 18.04 //无人参与升级::MailOnlyOnError“true”; 在Ubuntu20.04上,您需要找到以下行 //无人参与升级::MailReport“on change”; 取消注释,并在更改为时进行更改 无人参与升级::MailReport“仅在出错时”; 自动删除未使用的依赖项 您可能需要在每次更新后执行sudo apt autoremove,因此请查看以下行: //无人参与升级::删除未使用的依赖项“false”; 取消对此行的注释,并将false更改为true。 无人参与升级::删除未使用的依赖项“true”; 自动重启 安装Linux内核的安全更新后,需要重新启动Ubuntu服务器才能应用内核更新。如果服务器仅由您或少数人使用,则启用自动重新启动会很方便。找到下面这行。 //无人参与升级::自动重新启动“错误”; 取消对其注释,并将false更改为true以启用自动重新启动 无人参与升级::自动重启“真”; 您还可以指定执行重新启动的时间。默认情况下,在安装内核更新后立即重新启动。我将其设置为凌晨4点重新启动。确保为服务器设置了正确的时区。 无人值守升级:自动重启时间“04:00”; 保存并关闭文件。 如果服务器正在被许多用户使用,或者需要很长的正常运行时间(比如这个博客),那么不应该启用自动重启。相反,您可以使用Canonical livepatch来修补Linux内核,而无需重新启动。 Canonical LivePatch服务:在不重新启动的情况下在Ubuntu上修补Linux内核 启用自动安全更新 现在已经配置了自动安全更新,我们需要通过创建20auto upgrades文件来启用它。 sudo nano/etc/apt/apt.conf.d/20auto-upgrades 将以下两行复制并粘贴到文件中。 APT::定期::更新包列表“1”;APT::定期::无人值守升级“1”; 第一行使apt每天自动执行“apt get update”。如果设置为2,则每隔一天。(0=禁用) 第二行使apt能够自动安装安全更新。(1=已启用,0=已禁用) 保存并关闭文件。 在特定时间运行无人值守升级 无人值守升级在上午12点到7点之间随机运行,以防止由于每个人同时运行更新而导致镜像服务器负载激增。您可以通过以下方式手动运行无人值守升级: sudo无人值守升级-v 还可以将此命令添加到Cron作业中。 sudo crontab-e 在Crontab文件的底部添加以下行,这样无人参与的升级将在每天凌晨2点运行。 0 2***sudo/usr/bin/无人值守升级-v 设置SMTP中继 为了在每次安全更新后接收电子邮件通知,您的服务器需要能够发送电子邮件。如果这是您的电子邮件服务器,那么唯一要做的就是安装bsd mailx包。 sudo apt安装bsd mailx 如果这不是电子邮件服务器,则需要设置SMTP中继。我们可以安装Postfix SMTP服务器,然后通过电子邮件服务提供商转发电子邮件。 有几个电子邮件服务提供商(ESP)可以充当中继主机。有些收取一点费用,有些每月提供免费配额。在本文中,我想向您展示如何使用Sendinblue,这是一家电子邮件服务提供商,允许您每天免费发送300封电子邮件。 在sendinblue创建一个免费帐户。通用域名格式。完成用户配置文件后,单击事务选项卡,您将获得SMTP设置。如果没有SMTP设置,您需要联系Sendinblue客户服务以激活事务性电子邮件服务。 现在,您需要配置Postfix SMTP服务器以使用Sendinblue SMTP设置。 让我们用下面的命令在Ubuntu上安装Postfix SMTP服务器。 sudo apt安装后缀libsasl2模块 当您看到以下消息时,按Tab键并按Enter键。 然后选择第二个选项:互联网站点。 接下来,设置系统邮件名称。例如,我输入我的域名linuxbabe。通用域名格式。 安装Postfix后,使用命令行文本编辑器(如Nano)打开主配置文件。 sudo nano/etc/postfix/main。查阅 找到下面这行。 relayhost= 默认情况下,其值为空。将relayhost的值设置为[smtp relay.sendinblue.com]:587。 relayhost=[smtp relay.sendinblue.com]:587 然后将以下行添加到此文件的末尾。 #出站中继配置smtp_sasl_auth_enable=yes smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd smtp_sasl_security_options=noanonymous smtp_tls_security_level=may header_size_limit=4096000 保存并关闭文件。然后创建/etc/postfix/sasl_passwd文件。 sudo nano/etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用SendinBlue提供的您自己的用户名和密码替换smtp_用户名和smtp_密码。注意用户名和密码之间有一个冒号。 [smtp relay.sendinblue.com]:587 smtp_用户名:smtp_passowrd 保存并关闭文件。然后用postmap创建相应的hash db文件。 sudo postmap/etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd。db。重新启动Postfix以使更改生效。 sudo systemctl重启后缀 默认情况下,sasl_passwd和sasl_passwd。数据库文件可以被服务器上的任何用户读取。将权限更改为600,这样只有root用户才能读写这两个文件。 sudo chmod 0600/etc/postfix/sasl_passwd/etc/postfix/sasl_passwd。分贝 从现在起,Postfix将通过Sendinblue发送电子邮件。 添加发件人地址 单击Sendinblue account仪表板右上角的下拉菜单,然后选择发件人&amp;“IP”选项卡以添加您的域和发件人地址。 发送测试电子邮件 现在我们可以使用mailx命令发送测试电子邮件,如下所示。 sudo apt install bsd mailx echo“这是一封测试电子邮件。”|mailx-r from address-s hello to address 如果SMTP配置正确,您将收到一封电子邮件。 电子邮件不发送? 您可以查看邮件日志(/var/log/mail.log)来调试电子邮件不发送的原因。 如果在/etc/postfix/main中用括号包装中继主机。cf文件。 relayhost=[smtp relay.sendinblue.com]:587 然后还需要将主机名包装在/etc/postfix/sasl_passwd文件中。 [smtp relay.sendinblue.com]:587[email&#160;protected]:YourGmail密码 记住重新生成hash db文件。 sudo postmap/etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl重启后缀 禁止接收电子邮件 默认情况下,Postfix配置为接受传入邮件。您可以将Postfix配置为仅发送电子邮件,但不接受传入的电子邮件。在/etc/postfix/main中找到以下行。cf文件。 inet_接口=全部 将其更改为以下文本,以便Postfix只在本地主机上侦听。 inet_接口=仅环回 电子邮件报告 无人值守升级可能会发送3封电子邮件: 无人参与升级返回:True。这意味着软件包安装成功。 无人参与升级返回:False。这意味着在安装更新时发生了一些错误。通常需要人工干预。如果您收到此电子邮件,您需要手动运行sudo apt升级。 无人参与升级返回:无。有可用的更新,但系统拒绝安装。 日志 日志可以在/var/log/Understand upgrades/目录中找到。 检查重启 checkrestart命令可以帮助您确定升级后需要重新启动哪些进程。可从debian goodies package购买。 sudo apt安装debian goodies sudo checkrestart 收尾 我希望本教程能帮助你在Ubuntu服务器上进行无人值守的升级。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和窍门?

    2022.03.23 浏览:114
  • 在Ubuntu服务器上设置SSH双因素身份验证(2FA)

    本教程将向您展示如何使用著名的Google Authenticator在Ubuntu服务器上设置SSH双因素身份验证。这将大大提高Ubuntu服务器上SSH服务的安全性。 双因素身份验证的工作原理 通常,您只需要输入密码或使用SSH密钥即可远程登录到Ubuntu服务器。双因素身份验证(2FA)要求您输入两条信息才能登录。因此,您还需要输入基于时间的一次性密码才能登录到SSH服务器。该一次性密码使用TOTP算法计算,该算法是IETF标准。如今,许多网站和服务(Facebook、谷歌、Twitter等)为用户提供2FA来保护他们的帐户,在SSH服务器上启用2FA也是一个好主意。 本教程将向您展示如何设置 使用2FA进行密码验证 使用2FA进行公钥认证 注意:本文中使用的开源服务器软件名为libpam google authenticator,它是从默认的Ubuntu存储库安装的。谷歌公司不以任何形式参与认证过程。服务器软件和移动应用不需要网络访问。 第一步:在Ubuntu服务器上安装并配置Google Authenticator 登录Ubuntu服务器,运行以下命令,从默认的Ubuntu软件包存储库安装Google Authenticator。 sudo apt安装-y libpam谷歌认证器 然后运行google authenticator命令在主目录中创建一个新密钥。 谷歌认证器 当被问及“您希望身份验证令牌基于时间吗?”回答y。 然后你会看到一个二维码,你可以在手机上使用TOTP应用程序扫描。我推荐两款应用: Google Authenticator是最著名的TOTP移动应用程序。你可以通过Google Play或Apple app store在手机上安装它。 Google Authenticator移动应用程序不是开源的。如果你不信任谷歌,你可以使用FreeOTP,一个由Red Hat开发的开源TOTP移动应用。 用谷歌验证器或FreeOTP在手机上扫描二维码。请注意,您需要放大终端窗口来扫描完整的二维码。 二维码代表密钥,只有SSH服务器和TOTP移动应用程序知道该密钥。扫描二维码后,您可以在手机上看到六位数的一次性密码。默认情况下,它每30秒更改一次。以后需要输入这个一次性密码,才能通过SSH登录Ubuntu服务器。 在终端窗口中,您可以看到密钥、验证码和紧急刮擦码。建议您将此信息保存到安全的地方,以便以后使用。 然后您可以输入y来回答所有剩余的问题。这将更新Google Authenticator配置文件,禁用同一身份验证令牌的多次使用,增加时间窗口,并启用速率限制以防止暴力登录尝试。 第2步:配置SSH守护进程以使用Google Authenticator 使用2FA进行密码验证 使用2FA进行公钥认证 使用2FA进行密码验证 如果不使用SSH密钥,请按照以下说明操作。 打开SSH服务器配置文件。 sudo nano/etc/ssh/sshd_config 在文件中找到以下两个参数,并确保它们都设置为“是”。 UsePAM yes ChallengeResponseAuthentication yes PAM代表可插拔身份验证模块。它提供了一种将不同的身份验证方法插入Linux系统的简单方法。要使用SSH启用Google Authenticator,必须启用PAM和质询响应身份验证。 如果要允许root用户使用2FA,请找到permitrotlogin参数并将其值设置为yes。它不能是PermitroLogin no或PermitroLogin prohibit password。 Permitrotlogin是的 保存并关闭文件。接下来,编辑SSH守护程序的PAM规则文件。 sudo nano/etc/pam。d/sshd 在这个文件的开头,您可以看到下面一行,当ChallengeResponseAuthentication设置为yes时,它将启用密码验证。 @包括公共授权 要在SSH中启用2FA,请添加以下两行。 #通过Google Authenticator进行双因素身份验证需要pam_Google_Authenticator。所以 保存并关闭文件。然后重启SSH守护进程,使更改生效。 sudo systemctl重启ssh 从现在起,SSH守护进程将要求您输入用户密码和验证码(由Google Authenticator生成的一次性密码)。下面的屏幕截图显示了从CentOS box到Ubuntu 20.04服务器的SSH登录会话。 使用2FA进行公钥认证 如果使用SSH密钥登录SSH服务器,请按照以下说明操作。 打开SSH服务器配置文件。 sudo nano/etc/ssh/sshd_config 在文件中找到以下两个参数,并确保它们都设置为“是”。 UsePAM yes ChallengeResponseAuthentication yes PAM代表可插拔身份验证模块。它提供了一种将不同的身份验证方法插入Linux系统的简单方法。要使用SSH启用Google Authenticator,必须启用PAM和质询响应身份验证。 如果要允许root用户使用2FA,请找到permitrotlogin参数并将其值设置为yes。它不能是PermitroLogin no或PermitroLogin prohibit password。 Permitrotlogin是的 接下来,在文件末尾添加以下行。这会告诉SSH守护进程,用户必须同时通过公钥身份验证和质询响应身份验证。 身份验证方法公钥、键盘交互 保存并关闭文件。接下来,编辑SSH守护程序的PAM规则文件。 sudo nano/etc/pam。d/sshd 在这个文件的开头,您可以看到下面一行,当ChallengeResponseAuthentication设置为yes时,它将启用密码验证。我们需要注释掉这一行,因为我们将使用SSH密钥而不是密码。 @包括公共授权 要在SSH中启用2FA,请添加以下两行。 #通过Google Authenticator进行双因素身份验证需要pam_Google_Authenticator。所以 保存并关闭文件。然后重启SSH守护进程,使更改生效。 sudo systemctl重启ssh 从现在起,您需要使用SSH密钥和Google Authenticator验证码登录。 笔记 Ubuntu服务器上的每个用户都需要运行google authenticator命令并扫描二维码才能使用双因素身份验证。如果用户未设置并尝试登录,将显示错误消息“权限被拒绝(键盘交互)”。 紧急恢复码是你的备份码。如果手机丢失,您可以输入五个紧急刮擦码中的一个,而不是一次性密码,以完成两步验证。这些代码仅供一次性使用。 如果您想更改密钥,只需登录服务器并再次运行google authenticator命令来更新~/。谷歌认证文件。 由于一次性密码是使用共享密钥和当前时间计算的,所以在Ubuntu服务器上启用NTP时间同步以保持准确时间是一个好主意,尽管之前我们允许Ubuntu服务器和移动应用之间的时间偏差为4分钟。你的Ubuntu服务器和TOTP移动应用可以使用不同的时区。 如何禁用SSH双因素身份验证 编辑SSH守护程序的PAM规则文件。 sudo nano/etc/pam。d/sshd 注释掉下面这行。 身份验证需要pam_google_身份验证程序。所以 保存并关闭文件。如果在/etc/ssh/sshd_config文件中添加了以下行, 身份验证方法公钥、键盘交互 删除键盘交互身份验证方法。 身份验证方法公钥 保存并关闭文件。然后重启SSH守护进程。 sudo systemctl重启ssh 收尾 我希望本教程能帮助您在Ubuntu服务器18.04和20.04上设置SSH双因素身份验证。一如既往,如果你觉得这篇文章有用,那么订阅我们的免费时事通讯。你也可以在Google+、Twitter或我们的Facebook页面上关注我们。

    2022.03.23 浏览:64
  • 如何在无头Ubuntu服务器上安装Dropbox

    本教程将向您展示如何在无头Ubuntu服务器上安装Dropbox来备份和同步文件,以及如何使Dropbox在引导时自动启动。以下步骤适用于所有当前的Ubuntu版本,包括Ubuntu 16.04、Ubuntu 18.04、Ubuntu 20.04。 在Ubuntu服务器上安装Dropbox 首先,SSH进入你的Ubuntu服务器。然后使用以下命令下载Dropbox。它将被保存为dropbox linux。焦油广州。 64位 wgethttps://www.dropbox.com/download?plat=lnx.x86_64-O dropbox linux。焦油广州 32位 wgethttps://www.dropbox.com/download?plat=lnx.x86-O dropbox linux。焦油广州 在/opt中创建一个目录,并将Dropbox解压缩到/opt/Dropbox/。 sudo mkdir/opt/dropbox/sudo tar xvf dropbox linux。焦油gz——带1-C/opt/dropbox 为Dropbox安装依赖项软件包。 sudo apt安装libc6 libglapi mesa libxdamage1 libxfixes3 libxcb-glx0 libxcb-dri2-0 libxcb-dri3-0 libxcb-present0 libxcb-sync1 libxshmfence1 libxxf86vm1 现在可以运行Dropbox守护程序了。 /opt/dropbox/dropboxd 它会要求你访问一个网址,以便将你的Ubuntu服务器与你的Dropbox帐户连接起来。 这台计算机没有链接到任何Dropbox帐户。。。请访问https://www.dropbox.com/cli_link_nonce?nonce=d8b8aear73fawe4fbd0154443链接此设备。 在你的网络浏览器中复制并粘贴链接,登录你的Dropbox帐户,然后点击Connect按钮将你的Ubuntu服务器与你的Dropbox帐户链接起来。 链接完成后,返回终端窗口并按Ctrl+C暂时停止Dropbox守护程序,因为它默认在前台运行,您无法运行其他命令。Dropbox sync文件夹将出现在您的主目录中。 如何启用自动启动 为了让Dropbox在系统启动时启动,我们可以创建一个systemd服务单元。 sudo nano/etc/systemd/system/dropbox。服务 将以下行放入文件中。我们希望Dropbox以标准用户而不是root用户的身份运行,所以用真实用户名替换用户名。如果以root用户身份运行,~/Dropbox中的文件将无法正确同步。 [Unit]Description=Dropbox Daemon After=network。target[Service]Type=simple User=username ExecStart=/opt/dropbox/dropboxd ExecStop=/bin/kill-HUP$MAINPID Restart=always[Install]WantedBy=multi-User。目标 保存并关闭文件。然后,我们可以通过运行以下命令启动此服务: sudo systemctl启动下拉框 并在系统启动时启用自动启动。 sudo systemctl启用dropbox 检查它的状态。 systemctl状态下拉框 提示:如果上述命令没有立即退出,您可以按Q键使其退出。 你可以用以下方法来阻止它: sudo systemctl stop dropbox 用以下命令重新启动: sudo systemctl重启dropbox 现在你可以重新启动你的Ubuntu服务器,检查自动启动是否正常。 sudo关机-现在关机 就这样!我希望本教程能帮助您在无头Ubuntu服务器上安装Dropbox。一如既往,如果你觉得这篇文章有用,那么订阅我们的免费时事通讯。获得更多提示和技巧。当心?

    2022.03.23 浏览:46