Elastic Beanstalk上Wordpress部署的多个问题

时间:2017-12-11 19:27:31

标签: wordpress amazon-web-services redirect url-rewriting elastic-beanstalk

我开始使用AWS部署,主要是出于必要,在Elastic Beanstalk,Elastic Filesystem,Amazon RDS(MariaDB)和Route 53 plus证书上安装Wordpress。我跟着一对夫妇开始并把所有东西放在一起,到目前为止,我做得很好,但现在我面临着一些问题。

  1. 设置Route 53和证书后,我想强制使用HTTPS,所以我做了我以前在WP安装上做的事情:安装Really Simple SSL。到目前为止,它进展顺利。然后我通过EB CLI部署了一些更改,然后我进行了重定向循环地狱,迫使我删除该插件。我尝试了几次,结果相同。
  2. 我发现重新部署Wordpress会重置一些应该保存在数据库中的配置。到目前为止,我注意到在部署新版本的应用程序后,会重置永久链接,语言和其他次要设置。也许这会导致我提到的重定向循环。
  3. 寻找解决方案时,我遇到了this answer我已经实施过,但我无法判断它是否真的有效。

    我该怎么办?

    更新

    我尝试this answer提出的解决方案无济于事,问题重复了。进一步搜索让我find someone with exactly the same issue as mine

    据此我认为,真正简单的SSL可能是罪魁祸首,并开始寻找替代品而不使用插件。所以我登陆this AWS Developer Forums thread,其中有些事情进展顺利,因为我设法将主页和WP管理员重定向到HTTPS。 但网站的其余部分没有。

3 个答案:

答案 0 :(得分:1)

以下内容多次适用于我。这假设您拥有AWS Certificate Manager的SSL证书。

1。配置证书

使用以下内容在MemberSignIns ID MemberID UTC Lat Long 11 4 6/23/17 16:23 40.736999 -73.875247 12 4 6/23/17 16:32 40.782117 -73.980739 13 5 6/23/17 16:40 40.643339 -73.977714 14 6 6/23/17 16:48 40.760262 -73.993287 15 7 6/23/17 16:56 40.722414 -73.992452 16 4 6/23/17 17:04 40.692259 -73.766641 目录中创建文件secure-listener.config

.ebextensions

option_settings: aws:elb:listener:443: SSLCertificateId: replace:with:your:arn ListenerProtocol: HTTPS InstancePort: '80' 文本替换为证书的ARN。上面告诉Elastic Beanstalk将您的SSL证书用于端口443上的请求,并将这些请求转发到EC2实例上的端口80.

2。设置重定向和环境变量

使用以下内容在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。更新WordPress配置

假设您的网站为HTTPS,请将以下内容添加到www.example.com文件中:

wp-config.php

此回复基于this tutorial,这可能对其他详细信息有所帮助。

答案 1 :(得分:0)

尝试在wp-config.php中设置RELOCATE

define('RELOCATE',true);

来自Changing the Site URL

  

注意:当RELOCATE标志设置为true时,将显示站点URL   自动更新到您用于访问的任何路径   登录界面。这将使管理部分启动并运行   新网址,但不会更正设置的任何其他部分。那些   你仍然需要手动改变。

同时检查以下表格是否一致:

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';

答案 2 :(得分:0)

如果您使用的是负载均衡器(ELB),我没有从您的评论中获得。但即便如此,Really-simple-ssl也应该检测出来。

永久链接的问题可归因于您实际上忽略了本地.htaccess文件,或者它与服务器上的文件不同。确保在更新时包含它。更新时,您的数据库未重置或更改。 请注意,使用EB CLI进行部署时,它基本上会拍摄本地版本的快照,将其拉上并上传到新的应用程序版本,因此它会完全忽略服务器上以前版本中的任何内容。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

尝试将所有重要的环境值保留在EBS中,然后选择look here。我还在这些ENV变量中包含了WP_HOME和WP_SITEURL,因此可以轻松调整它们。如果您无法通过Phpmyadmin或类似软件更新数据库,请在functions.php中使用以下内容以更新为HTTPS!

update_option( 'siteurl', 'https://example.com' );
update_option( 'home', 'https://example.com' );

在任何情况下,你都需要这个插件来你的wp-config.php

if (($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] ==
'https') OR ($_SERVER['HTTP_X_FORWARDED_PROTO'] ==
'https'))
 {$_SERVER['HTTPS']='on';}

如果您尚未安装EBS,我建议使用此step-by-step guide安装EBS。

如果您之前尝试过这些事情,请告诉我,我还有其他一些技巧。另请注意,我假设您在各处使用正确的安全组设置!

干杯!