我使用 printf 来设置我的 Nginx 设置,它工作正常,但阅读和更改很尴尬; 有没有更好的方法来提高可读性?
config.vm.provision "shell", inline: <<-SHELL
sudo rm /etc/nginx/sites-enabled/default
sudo printf '%sn' 'server {' 'root /home/vagrant/web;' 'index index.php index.html index.htm;' 'location / {' 'try_files $uri $uri/ /index.php?$args ;' '}' 'location ~ .php$ {' 'fastcgi_split_path_info ^(.+.php)(/.+)$;' 'fastcgi_pass unix:/var/run/php5-fpm.sock;' 'fastcgi_index index.php;' 'include fastcgi_params;' '}' '}' >> /etc/nginx/sites-enabled/default
sudo service nginx start
SHELL
假设您的来宾计算机上有 Bash,您可以尝试在此处使用嵌套 bash 文档。不能保证可以与Vagrantfile一起使用,但无论如何都值得一试。
config.vm.provision "shell", inline: <<-SHELL
sudo /bin/bash << 'SCRIPT'
rm /etc/nginx/sites-enabled/default;
cat << 'EOF' >> /etc/nginx/sites-enabled/default
%sn
server {
root /home/vagrant/web;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args ;
}
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
EOF
service nginx start
SCRIPT
SHELL
请注意,EOF、SCRIPT 和 SHELL 必须放在行的开头。这些单词前面不得有任何制表符或空格。