vcs-test: fix deployment and systemd socket association

Quoting https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances
under "Best Practices":

> Grant the instance the https://www.googleapis.com/auth/cloud-platform
> scope to allow full access to all Google Cloud APIs, so that the IAM
> permissions of the instance are completely determined by the IAM roles
> of the service account.

Updates golang/go#27127

Change-Id: Icceb3b17a12223199efd67d27f6bca2b71f8fadc
Reviewed-on: https://go-review.googlesource.com/130475
Reviewed-by: Andrew Bonventre <andybons@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/vcs-test/rebuild-server.sh b/vcs-test/rebuild-server.sh
index 7fe2f0c..e41a56c 100755
--- a/vcs-test/rebuild-server.sh
+++ b/vcs-test/rebuild-server.sh
@@ -11,6 +11,7 @@
 	--image-project debian-cloud --image-family debian-9 \
 	--machine-type n1-standard-1 \
 	--service-account=vcs-test@symbolic-datum-552.iam.gserviceaccount.com \
+	--scopes cloud-platform \
 	--tags=allow-ssh,http-server,https-server
 
 while sleep 5 && ! gcloud compute ssh vcs-test -- date; do
@@ -20,7 +21,7 @@
 gcloud compute ssh vcs-test -- sudo -n bash -c \''
 	mkdir -p /home/vcweb/svn
 	chown -R uucp:uucp /home/vcweb
-	chown -R 777 /home/vcweb
+	chmod -R 777 /home/vcweb
 	apt-get update
 	apt-get install -y mercurial fossil bzr git apache2 ed subversion libapache2-mod-svn
 	perl -pie 's/80/8888/' /etc/apache2/ports.conf
diff --git a/vcs-test/redeploy-vcweb.sh b/vcs-test/redeploy-vcweb.sh
index 38f9675..5ea6144 100755
--- a/vcs-test/redeploy-vcweb.sh
+++ b/vcs-test/redeploy-vcweb.sh
@@ -6,13 +6,14 @@
 set -e
 
 info="$USER $(date)"
-CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build "-ldflags=\"-X=main.buildInfo=$info\"" -o vcweb.exe ./vcweb
+GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build "-ldflags=\"-X=main.buildInfo=$info\"" -o vcweb.exe ./vcweb
 trap "rm -f vcweb.exe" EXIT
 
 gcloud beta compute scp vcweb.exe vcs-test:
 
 gcloud compute ssh vcs-test -- sudo -n bash -c \''
 	mv vcweb.exe /usr/bin/vcweb
+	chmod a+rx /usr/bin/vcweb
 	systemctl restart vcweb.service
 	systemctl status -l vcweb.service
 '\'
diff --git a/vcs-test/vcweb/main.go b/vcs-test/vcweb/main.go
index a3d6028..0425192 100644
--- a/vcs-test/vcweb/main.go
+++ b/vcs-test/vcweb/main.go
@@ -69,17 +69,12 @@
 	handler := logger(http.HandlerFunc(loadAndHandle))
 
 	// If running under systemd, listen on 80 and 443 and serve TLS.
-	if listeners, _ := activation.Listeners(); len(listeners) == 2 {
-		// Want listeners[0] is port 80, listeners[1] is port 443.
-		// There's no guaranteed order of the listeners!
-		// Sometimes we get 80, 443; other times we get 443, 80.
-		names := strings.Split(os.Getenv("LISTEN_FDNAMES"), ":")
-		if strings.Contains(names[0], "https") {
-			listeners[0], listeners[1] = listeners[1], listeners[0]
-		}
+	if listeners, _ := activation.ListenersWithNames(); len(listeners) == 2 {
+		httpListener := listeners["vcweb-http.socket"][0]
+		httpsListener := listeners["vcweb-https.socket"][0]
 
 		go func() {
-			log.Fatal(http.Serve(listeners[0], handler))
+			log.Fatal(http.Serve(httpListener, handler))
 		}()
 		dir := acme.LetsEncryptURL
 		if *staging {
@@ -115,7 +110,7 @@
 				daemon.SdNotify(false, "WATCHDOG=1")
 			}
 		}()
-		log.Fatal(s.ServeTLS(listeners[1], "", ""))
+		log.Fatal(s.ServeTLS(httpsListener, "", ""))
 	}
 
 	// Local development on :8088.