How to download my app source code from Google Cloud? - google-cloud-platform

I have ancient app on google cloud (google app engine)
In ancient times I was able to download from google cloud using appcfg.py
But with new cloud console can't.
Using debug url doesn't help. It shows only app.yml and 404.html
It says Debugger encountered a problem. Please view the side panel for more details.
On side panel The debugger could not find a debug target for the application default - 20170408t131011 .
I've turned on debugger from sidepanel and linked billing account, still - nothing helps =(
Storage is empty
here my app.yml
runtime: php55
api_version: 1
threadsafe: true
default_expiration: "24h"
handlers:
- url: /
static_files: public/index.html
upload: public/index.html
secure: always
- url: /(.*)
static_files: public/\1
upload: public/(.*)
secure: always

Related

Django app with Azure AD account identity provider deployment to Azure Web app service fails

Background
I am trying to deploy a Django web app with Azure AD as the account identity provider to Azure Web app services following the Microsoft tutorial.
My app is registered on the Azure AD portal. It works well in development on localhost.
Problem
However, when i deploy it to Azure Web app services, it fails because it requests a redirect URI starting with http while Azure AD requires that any non localhost server must have a redirect URI starting with https.
Specifically, it requests a redirect URI as http://myapp.com/auth/redirect. But, i am only allowed to register URI https://myapp.com/auth/redirect in Azure AD.
This problem was addressed in a related Stackoverflow question
The solution given was to "Run server with ./manage.py runserver_plus --cert /tmp/cert localhost:8000".
This works great on localhost, but i am having trouble deploying it to Azure web app service.
My deployment file stored in .github/workflows/deploy_on_<myapp>.yml has the deploy job defined as follows:
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact#v2
with:
name: python-app
path: .
- name: 'Deploy to Azure Web App'
uses: azure/webapps-deploy#v2
id: deploy-to-webapp
with:
app-name: 'fno-calculator'
slot-name: 'Production'
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_<secret> }}
Questions
How should i deploy my Django web app with the custom command ./manage.py runserver_plus --cert /tmp/cert localhost:8000 to Azure web app service?
Is there another way to deploy my Django web app using Azure AD that requests a redirect URI with https instead of http?
What i tried
Modified the deployment file to run:
- name: 'Deploy to Azure Web App'
run: ./manage.py runserver_plus --cert /tmp/cert <servername>:<port_id>
Expected result
Expected the deployment to succeed and the app to be active.
Actual result
Deployment failed with error Cannot assign requested address.
It seems that a custom startup command is not needed.
It will work simply by following the instructions posted in this answer.
For a production setting, only adding SECURE_SSL_REDIRECT will fix the problem.

Google cloud error : Cannot find module '/workspace/server.js'

I'm facing a very common issue on Google cloud after deployment. I'm getting Cannot find module '/workspace/server.js'. In local it's working fine but not on gcloud. Tried lot of solutions from google but not able to get it. Please do provide me if any suggestion to make it work.
Here is my directory and config:
Build directory
Yaml config
runtime: nodejs16 # or another supported version
instance_class: B1
service: adminoper
basic_scaling:
max_instances: 1
idle_timeout: 10m
handlers:
- url: /
static_dir: build
- url: /.*
secure: always
redirect_http_response_code: 301
script: auto
Google cloud error
I got few answers in google to add entrypoint path but that's not working. Please do suggest.

Nuxtjs dynamic routes doesn't work on page reload after deploying as a SPA on AWS Amplify console

I have deployed my Nuxtjs app as SPA on AWS using AWS Amplify console. Now my website has some dynamic routes which redirects to 404 page when reloaded or opened in a new tab. I know that when we generate a static site using nuxt generate the routes should be using routes() in nuxt.config.js. But in SPA mode it should be working on page refresh or reload. Even in Angular when run in SPA mode dynamic routes work fine. Its so strange that the dynamic routes doesn't work when the website is run as a single page application.
When used locally in production mode i.e npm run build && npm run start the routes work fine. But after deploying it to AWS Amplify it redirects to 404 page. What am I misssing here?
Here's the Amplify.yml config i used
version: 0.1
frontend:
phases:
preBuild:
commands:
- npm ci
build:
commands:
- npm run build
artifacts:
# IMPORTANT - Please verify your build output directory
baseDirectory: dist
files:
- '**/*'
cache:
paths:
- node_modules/**/*
test:
artifacts:
baseDirectory: cypress
configFilePath: '**/mochawesome.json'
files:
- '**/*.png'
- '**/*.mp4'
phases:
I wrote an article on how to deploy a Nuxt Application on Amplify here.
In a nutshell:
Go to App Settings -> Rewrites and redirects
Click on Edit and remove the existing rule
Add the following new rule:
Source Address:
</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>
Target Address:
/index.html
Type:
200 (Rewrite)
#lupas helped me in nuxt discord. You just need to set as below
1) On the Amplify console go to: Rewrites and redirects
2) Delete the existing entry
3) Add the following:
Source Address:
Target address: /index.html
Type: 200 (Rewrite)

trying to debug "502 Bad Gateway" error after deploying react app to gcp?

I've deployed a React app via "gcloud app deploy". The "gcloud app browse" command opens a browser which tries to load for a while but then displays a browser title of "502 Bad Gateway." I found the following troubleshooting page:
https://cloud.google.com/endpoints/docs/openapi/troubleshoot-response-errors#gae_errors
The following info on the troubleshoting page appears to be a good match for my scenario:
"An error code 502 with BAD_GATEWAY in the message usually indicates
that App Engine terminated the application because it ran out of
memory. The default App Engine flexible VM only has 1GB of memory,
with only 600MB available for the application container."
But I don't see any "out of memory" error reference in my logs for this. I think I probably need to ensure that I "gcloud app deploy" with a proper app.yaml file. I'm having problems identifying what is a valid minimum yaml file for my React app for which I can be assured that my "gcloud app deploy" will have the expected result. I found the following reference which appears to be a good starting point:
https://cloud.google.com/endpoints/docs/openapi/get-started-app-engine
^^^ This page refers to the following yaml sample code:
https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/endpoints/getting-started/src/main/appengine/app.yaml
But the url refers to "java-docs-sample" so not sure if this is a vaid yaml file for a React app deployment. Can you provide some guidance on this? I'm really just looking for the minimum yaml file that I can use for a successful deployment. This is the structure of the yaml file that I used for my initial "gcloud app deploy", and the deployment process appeared to indicate success, but not sure if there is any type of fatal flaw here or anything else that may be missing:
runtime: nodejs
env: flex
manual_scaling:
instances: 1
resources:
cpu: 1
From what I understand, you just want a minimal good app.yaml for react apps as the out of memory seems to be the issue if everything else is correct.
A sample app.yaml for react is the following:
# [START runtime]
runtime: nodejs
env: flex
# [END runtime]
# [START handlers]
handlers:
- url: /
static_files: index.html
upload: index.html
# [END handlers]
But you need to modify your handlers according to your needs/ configuration.
502 error sometimes indicates that your app has an issue itself. So it's better to test locally first and make sure your app is working.
Then for the memory part, you can try specifying the instance type to be one with a higher memory. If it still throws the same error then most likely the issue is within your app or dependencies.
I think there is something about react-scripts start that google cloud doesn't like; I've had trouble with this (react app + google cloud deployment) twice in completely different environments (one had docker and one did not); but the first time I never posted anything to stack overflow so I had to go through the pain again :p
Try changing the package.json file to not use react-scripts start when you run npm run start.
Note that this will overwrite the npm run start and npm start command, so if you use this, you can also update the package json with another keyword such as local and change your local running process to involve writing npm run local
"scripts": {
"start": "serve -s build",
"local": "react-scripts start",
"build": "react-scripts build",
...
},
A working repo

Custom runtime for non-flexible environment app?

I don't think that my gae python app has a flexible environment because I created it many years ago. Now I want to try and create a module that has another runtime than python and keep the python app running python alongside a new runtime, custom or just another. Maybe mix PHP and python or similar. I don't need it but I want to learn and explore the possibilities. I'm also interested in learning Erlang and deploy Erlang code with appengine. I see there is questions about it already
erlang on google app engine?
And issue 125 in the tracker.
But how should we actually do it? If we make our own runtime provided that is allowed.
My app.yaml looks like
application: montaoproject
version: newsearch
runtime: python27
api_version: 1
threadsafe: true
module: default
instance_class: F1
automatic_scaling:
min_idle_instances: 5
max_idle_instances: automatic
min_pending_latency: automatic
max_pending_latency: 30ms
max_concurrent_requests: 50
default_expiration: "14d 5h"
env_variables:
GAE_USE_MONTAO : 'anyvalue'
KOOL_VERSION : '17a'
includes:
- br.yaml # Brazil
- in.yaml # India
- us.yaml # USA
- pk.yaml
- search.yaml # search pages
- admin.yaml # admin pages
- providers.yaml # auth providers
- statics.yaml # static content
handlers:
- url: /(business|ai|newindia|insert-ad.html)
script: montao.app
- url: /blobview.*
script: kool_update.app
login: admin
- url: /market.*
script: main.app
- url: /
script: montao.app
- url: /(index.html|sign-up.html|login.html)
script: montao.app
- url: /(login.*|login|googlogin|googlogout|create/)
script: login.app
- url: /(customer_service.htm|contactfileupload|support.html|faq.html)
script: customer_service.app
- url: /stats.*
script: google.appengine.ext.appstats.ui.app
# All other URLs use main.app
- url: /.*
script: main.app
inbound_services:
- mail
builtins:
- remote_api: on
- deferred: on
#- appstats: on
error_handlers:
- file: default_error.html
libraries:
- name: webapp2
version: latest
- name: jinja2
version: latest
- name: setuptools
version: latest
- name: markupsafe
version: latest
- name: django
version: latest
- name: PIL
version: latest
- name: webob
version: latest
- name: lxml
version: latest
- name: ssl
version: latest
Yes, your app.yaml file is a standard env one (it doesn't have vm:true or env:flex in it).
Yes, it's possible to mix and match services/modules in different languages and with different environments inside the same app. You can even switch the language and environment of the same module in a different version of that module. That's because modules offer complete code isolation, see Comparison of service isolation and project isolation. Related post: Upload a Java and node.js project to Google AppEngine at once
I always try to structure a multi-service/module app with each service in its own subdir, as described in Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?
So first I'd create a default subdirectory of your app dir and move all your existing default module specific files into it, with the exception of the app-level config, which I'd keep at the top level and symlink inside the default dir as described in that post. Then I'd verify that the default module still works as expected.
Then I'd create a new subdirectory for every new module I need to add and add the code for it as needed.
Side note: sharing code via symlinks as described in the post mentioned above works for standard env modules, but it probably doesn't work with flexible ones, see Sharing code between modules in a GAE project