Elastic Beanstalk上Wordpress部署的多个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elastic Beanstalk上Wordpress部署的多个问题相关的知识,希望对你有一定的参考价值。
我开始使用AWS部署,主要是出于必要,在Elastic Beanstalk,Elastic Filesystem,Amazon RDS(MariaDB)和Route 53 plus证书上安装Wordpress。我跟着一对夫妇开始并把所有东西放在一起,到目前为止我做得很好,但现在我面临着一些问题。
- 在设置Route 53和证书之后,我想强制使用HTTPS,所以我做了我以前在WP安装上做的事情:安装Really Simple SSL。到目前为止,它进展顺利。然后我通过EB CLI部署了一些更改,然后我进行了重定向循环地狱,迫使我删除该插件。我尝试了几次,结果相同。
- 我发现重新部署Wordpress会重置一些应该保存在数据库中的配置。到目前为止,我注意到在部署新版本的应用程序后,会重置永久链接,语言和其他次要设置。也许这会导致我提到的重定向循环。
寻找解决方案,我遇到了我实施的this answer,但我不知道它是否真的有效。
我能做什么?
更新
我尝试了this answer提出的解决方案无济于事,问题得到了重复。进一步搜索让我到find someone with exactly the same issue as mine。
从这里我认为可能真正简单的SSL是罪魁祸首,并开始寻找替代品而不使用插件。所以我登陆this AWS Developer Forums thread,其中有些事情很顺利,因为我设法将主页和WP管理员重定向到HTTPS。但该网站的其余部分没有。
以下内容多次适用于我。这假设您拥有AWS Certificate Manager的SSL证书。
1. Configure your certificate
使用以下内容在secure-listener.config
目录中创建文件.ebextensions
:
option_settings:
aws:elb:listener:443:
SSLCertificateId: replace:with:your:arn
ListenerProtocol: HTTPS
InstancePort: '80'
将Qazxswpoi文本替换为您的证书的ARN。以上内容告诉Elastic Beanstalk将您的SSL证书与端口443上的请求一起使用,并将这些请求转发到EC2实例上的端口80。
2. Set up redirects and environment variables
使用以下内容在replace:with:your:arn
目录中创建文件ssl-rewrite.config
:
.ebextensions
files:
"/etc/httpd/conf.d/ssl_rewrite.conf":
mode: "000444"
owner: root
group: root
content: |
RewriteEngine On
<If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L=301]
</If>
SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS=on
子句检查由Elastic Beanstalk设置的<If></If>
头是否等于https。如果不是,则将请求重定向到https。如果原始请求超过https,则X-Forwarded-Proto
语句会创建一个SetEnvIfNoCase
环境变量。 WordPress需要此环境变量设置为正确行为。
3. Update your WordPress configuration
假设您的网站是HTTPS
,请将以下内容添加到您的www.example.com
文件中:
wp-config.php
此回复基于define('WP_HOME', 'https://www.example.com');
define('WP_SITEURL', 'https://www.example.com');
,这可能有助于获得更多细节。
尝试在wp-config.php中设置RELOCATE
this tutorial
来自define('RELOCATE',true);
注意:当RELOCATE标志设置为true时,站点URL将自动更新为您用于访问登录屏幕的任何路径。这将使管理部分在新URL上运行并运行,但它不会更正设置的任何其他部分。您仍然需要手动更改。
另请检查以下表格的一致性:
Changing the Site URL
如果您使用负载均衡器(ELB),我没有从您的评论中获得。但即便如此,Really-simple-ssl也应该检测出来。
永久链接的问题可归因于您实际上忽略了本地.htaccess文件,或者它与服务器上的文件不同。确保在更新时包含它。更新时,您的数据库未重置或更改。请注意,使用EB CLI进行部署时,它基本上会拍摄本地版本的快照,将其拉上并上传到新的应用程序版本,因此它会完全忽略服务器上以前版本中的任何内容。
select * from options where option_name = 'siteurl';
select * from options where option_name = 'home';
select domain from site;
select * from sitemeta;
select * from blogs;
select * from sitemeta where meta_key = 'siteurl';
以上是关于Elastic Beanstalk上Wordpress部署的多个问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Amazon Elastic Beanstalk 上安装 Anaconda
如何在 aws elastic beanstalk 环境实例启动上运行 shell 脚本
如何在 AWS Elastic Beanstalk 上修改 Nginx 配置
让 django celery worker 在 elastic-beanstalk 上启动的问题