你好,我正在尝试部署一个WordPress的示例到一个虚拟机规模设置在Azure与应用网关使用Terraform和云init。
目前我得出的结论是,这个问题是如何'wordpress.conf'和'wp-config.php'文件被挂载的结果,而不是由于基础设施相关的配置,因为当命令被限制为只启动nginx的公共IP返回'欢迎使用nginx'消息在预期的端口80.
下面是当前正在使用的云init文件
#cloud-config
package_upgrade: true
packages:
- nginx
- php-curl
- php-gd
- php-intl
- php-mbstring
- php-soap
- php-xml
- php-xmlrpc
- php-zip
- php-fpm
- php-mysql
- nfs-common
write_files:
- path: /tmp/wp-config.php
content: |
<?php
define('DB_NAME', 'wordpressdb');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', 'w0rdpr3ss@p4ss');
define('DB_HOST', '${database_fqdn}');
$table_prefix = 'wp_';
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
require_once ABSPATH . 'wp-settings.php';
?>
- path: /tmp/wordpress.conf
content: |
server {
listen 80;
server_name _;
root /data/nfs/wordpress;
index index.html index.htm index.php;
location / {
try_files \$uri \$uri/ /index.php\$is_args\$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
log_not_found off;
access_log off;
allow all;
}
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
location ~ /\.ht {
deny all;
}
}
runcmd:
- mkdir -p /data/nfs/wordpress
- mount -t nfs ${wordpress_storage_account_name}.file.core.windows.net:/${wordpress_storage_account_name}/${client_tag}wpstorageshare${environment_prefix} /data/nfs -o vers=4,minorversion=1,sec=sys
- wget http://wordpress.org/latest.tar.gz -P /data/nfs/wordpress
- tar xzvf /data/nfs/wordpress/latest.tar.gz -C /data/nfs/wordpress --strip-components=1
- cp /tmp/wp-config.php /data/nfs/wordpress/wp-config.php
- cp /tmp/wordpress.conf /etc/nginx/sites-available/wordpress.conf
- ln -s /etc/nginx/sites-available/wordpress.conf .
- chown -R www-data:www-data /data/nfs/wordpress
- rm /etc/nginx/sites-enabled/default
- rm /etc/nginx/sites-available/default
- mkdir /etc/systemd/system/nginx.service.d
- printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf
- systemctl daemon-reload
- systemctl restart nginx
注意:上面的cloud-init文件被配置为解压缩WordPress nginx配置文件并将其放置在安装到Azure存储帐户的目录中,该帐户被配置为NFS。
我已经尝试修复它的一些事情如下:
- 更新“location /”块语法不正确(无变更)
- 已使用
sudo nginx -t
检查配置语法(返回OK) - 已尝试更改端口nginx服务器正在侦听(无更改)
- 在配置虚拟机时浏览串行日志以查找可能的错误(无错误)
- 运行“sudo systemctl status nginx”以检查服务器错误(状态为正在运行)
我的期望是wordpress安装程序会在第一次访问应用程序网关上的公共ip时显示出来。
1条答案
按热度按时间frebpwbc1#
我已经解决了我自己的问题。答案是将符号链接创建在一个sites enabled目录下的根目录中。对于这个例子,它看起来像:\
注意:这些问题特定于在带有Azure应用网关的Azure虚拟机规模集上部署WordPress。
另外,如果你这样做了,仍然得到502错误,请确保wordpress能够建立数据库连接,为此,你可以通过任何你喜欢的方法登录到服务器,运行
curl localhost:port
,看看nginx返回什么。建议您在服务器上对来自服务器的html响应进行 curl ,因为如果没有一个VM示例是健康的,ApplicationGateway将返回502。