很快我的网站和API将迁移到亚马逊的EC2。如果我错了,请纠正我,但我对实例 AMI 的理解是这样的:
如果我使用 Amazon Linux AMI 启动 EC2 实例,然后根据我的喜好配置服务器(即安装 LAMP 堆栈、设置 MySQL 数据库等),然后完成后创建该实例的 AMI。然后,我可以使用保存的 AMI 来启动更多使用我创建的保存的 AMI 的实例,并且我使用保存的 AMI 创建的所有未来实例将保留我用于创建 AMI 的 EC2 实例上的所有设置。
我的理解正确吗?如果我创建一个完全按照我的喜好配置的实例的 AMI(安装了 LAMP 堆栈、MySQL、phpMyAdmin 等),然后为其创建一个 AMI,我可以使用该 AMI 启动具有完全相同的新实例用于创建 AMI 的实例上存在的文件、选项、mysql 数据库等?
我运行一个使用 IIS 10 的 FTP 服务器的网站,并将其设置为使用基于 TLS 的显式 FTP,并且它在去年+中运行良好。我通过Digicert购买了服务器证书。
服务器证书已于 2019 年 1 月 4 日过期。我在 Digicert 更新了该证书,该证书在 2021 年有效。然后我将其安装在 Windows 服务器上,并更新了 FTP 站点以使用新证书。
但是,当我尝试连接 FileZilla 客户端时,日志报告以下内容:
Status: Connecting to xxx.xxx.xxx.xxx:21...
Status: Connection established, waiting for welcome message...
Status: Initializing TLS...
Run Code Online (Sandbox Code Playgroud)
但随后弹出警告,指出证书已于 2019-01-04 过期。
如果我单击“确定”,它会继续,但随后会显示:主连接和数据连接证书不匹配。这是“正在初始化 TLS...”之后的日志
Status: Verifying certificate...
Status: TLS connection established.
Status: Logged in
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is current directory.
Command: TYPE I
Response: 200 Type set to I.
Command: PASV
Response: …Run Code Online (Sandbox Code Playgroud) 我已经阅读了WireGuard 规范,看起来 WireGuard 本身并不支持任何类型的用户身份验证(例如 LDAP 或类似的东西)。任何拥有服务器公钥且其 IP 地址在服务器配置中列入白名单的客户端都可以连接。
有谁知道提供用户身份验证的任何 WireGuard 扩展或实现?
我正在尝试按照WireGuard 网站的说明在我的新香草 Ubuntu 18.04.1 机器上安装 WireGurad 。但是当我尝试执行第一个命令时:
sudo add-apt-repository ppa:wireguard/wireguard
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Cannot add PPA: 'ppa:~wireguard/ubuntu/wireguard'.
ERROR: '~wireguard' user or team does not exist.
Run Code Online (Sandbox Code Playgroud)
尽管 launchpad.net 上有 WireGuard 页面:https ://launchpad.net/~wireguard/+archive/ubuntu/wireguard 。
关于如何安装它的任何建议?
谢谢!
更新:问题出在代理设置中(正如已接受答案中的链接所暗示的那样)。导出 HTTP_PROXY 和 HTTPS_PROXY 环境变量后,一切正常。
我正在寻找有关安装 tmpfs 分区和同步选项的信息。同步使数据被转储到磁盘而不被保存在缓存中。这适用于 ext4 和其他文件系统。我想知道即使是 tmpfs 分区也需要指定同步选项,还是默认启用它,因为它是 RAM 分区。在我的选择中,如果将 ramdisk 缓存在 RAM 中会很奇怪。
tmpfs /tmp tmpfs defaults,sync,noatime,nosuid,nodev,noexec,mode=0777,size=400M 0 0
在 tmpfs 分区中是否默认启用同步?
我在 Debian 9 上通过 apt-get 安装了 PostgresQL 11。安装后,我删除了默认数据库集群,并删除了自动启动该集群的所有服务。我现在已经运行 initdb 在自定义位置初始化一个新集群,并编写并启用了 systemd .service 文件以自动运行该文件。
我遇到了一个问题,机器启动时服务成功启动,但随后数据库立即关闭,服务立即停止。当我使用 systemctl 手动启动服务时,也会发生同样的情况。
.服务文件:
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
[Service]
Environment=PGDATA=/home/(user)/.db
Environment=PGLOG=/home/(user)/postgres.log
Environment=PGSTARTTIMEOUT=270
Type=notify
User=(user)
Group=(group)
ExecStart=/usr/lib/postgresql/11/bin/pg_ctl start -D ${PGDATA} -l ${PGLOG} -t ${PGSTARTTIMEOUT}
ExecStop=/usr/lib/postgresql/11/bin/pg_ctl stop -D ${PGDATA} -m fast
ExecReload=/usr/lib/postgresql/11/bin/pg_ctl reload -D ${PGDATA}
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=300
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
手动启动集群的命令:
su (user) -c '/usr/lib/postgresql/11/bin/pg_ctl start -D /home/(user)/.db -l /home/(user)/postgres.log -t 270'
Run Code Online (Sandbox Code Playgroud)
通过 systemctl 启动时的 PostgreSQL 日志:
2019-01-13 11:36:16.506 EST [1469] 日志:监听 IPv4 地址“127.0.0.1”,端口 5432
2019-01-13 11:36:16.508 EST …
我想将任何api/*路由传递给 php-fpm。特别是index.php因为我使用 Symfony。这是唯一应该使用 php 的路径。其他任何内容都将从/usr/share/nginx/html/public(仅 HTML 文件和 CSS)加载。
我已经尝试过,但出现错误:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
Run Code Online (Sandbox Code Playgroud)
我的 nginx 配置如下:
upstream php {
server php:9000;
}
server {
listen 80 default_server;
server_name impressive.local;
index index.html index.php;
root /usr/share/nginx/html/public;
location /api {
root /usr/share/nginx/html/api;
try_files $uri /index.php;
}
location ~ \.php$ {
fastcgi_pass php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi.conf;
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
php_1 | [13-Jan-2019 23:22:54] NOTICE: fpm is running, pid …Run Code Online (Sandbox Code Playgroud) 几年来,我一直在 DigitalOcean droplet 上将一些服务作为 docker 容器运行,最近我认为是时候将其中一个更新到最新版本(有问题的服务是幽灵博客平台)。以前,我的工作设置使用caddy作为反向代理,因此我可以通过访问blog.mydomain.example. Caddyfile 设置如下所示:
blog.mydomain.example {
proxy / 192.0.2.5:1268
}
Run Code Online (Sandbox Code Playgroud)
其中 IP:port 是本地 ghost docker 容器的 IP:port。
但是,在将我的 ghost 实例更新到最新版本并保持相同的配置后,出现了一个奇怪的错误。导航到blog.mydomain.example会加载很长时间然后突然重定向到https://192.0.2.5:2368,这当然不起作用,因为这是我的 droplet 上的本地 IP。在网上搜索了很长时间后,我最终找到了修复程序,它需要像这样修改我的 Caddyfile:
blog.mydomain.example {
proxy / 192.0.2.5:1268 {
transparent
}
}
Run Code Online (Sandbox Code Playgroud)
代理的caddy 文档页面有一些关于透明的作用:
透明:从原始请求中传递主机信息,正如大多数后端应用程序所期望的那样。
简写:
header_upstream Host {host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}
我也阅读了关于代理类型的这篇文章,但我仍然对使反向代理透明意味着什么以及为什么在这种情况下需要它感到困惑。有人可以解释一下吗?
我无法连接到我的 Easy-RSA VPN 服务器。我可以使用 SSH 连接;在日志文件中,我读到“错误=CRL 已过期”。因此,根据使用 Google 找到的说明,我应该运行
./easyrsa gen-crl
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
Easy-RSA error:
Missing expected CA file: ca.crt (perhaps you need to run build-ca?)
Run easyrsa without commands for usage and command help.
Run Code Online (Sandbox Code Playgroud)
ca.crt 文件位于 /etc/openvpn/ca.crt。我应该把它放在哪里,这样我才能成功运行 gen-crl 命令。
我在 OpenShift 中配置了一个 cronjob。它的 crontab 条目如下所示:
spec:
schedule: "0 3 * * 1-5"
jobTemplate:
Run Code Online (Sandbox Code Playgroud)
所以它应该在工作日的早上 03:00 运行。所有集群节点都配置为使用我们的本地时区 CET,即 UTC+1。这可以通过date命令看到。OpenShift 文档说 cronjobs 是通过与主节点配置的时区匹配的 crontab 执行的,所以我希望 cronjobs 实际在欧洲中部时间 03:00 运行。
但是,根据日志,cronjobs 在 04:00 执行,即 UTC 时间的 03:00 CET。奇怪的部分是oc describe cronjob揭示:
Last Schedule Time: Mon, 14 Jan 2019 04:00:00 +0100
Run Code Online (Sandbox Code Playgroud)
因此,服务器实际上知道 cronjob 执行得太晚了一个小时。
我的问题是:为什么 cronjob 执行晚了一个小时,为什么服务器知道它,我该如何解决这个问题?
wireguard ×2
amazon-ami ×1
amazon-ec2 ×1
certificate ×1
cron ×1
ftps ×1
iis ×1
kubernetes ×1
linux ×1
nginx ×1
openvpn ×1
php-fpm ×1
postgresql ×1
systemd ×1
timezone ×1
tmpfs ×1
ubuntu ×1