[UPDATED] Guide: How to Deploy Course Builder from Any OS

1,782 views
Skip to first unread message

Augustine C

unread,
May 25, 2018, 6:45:46 PM5/25/18
to Course Builder Forum



HOW TO DEPLOY GOOGLE OPEN ONLINE EDUCATION FROM ANY OPERATING SYSTEM



[UPDATED on May 2018] This is a guide on how to deploy Course Builder on any operating system taking advantage of Google Cloud's Compute Engine (Virtual Machines). Special thanks to Mike Gainer and Adam Feldman from the Course Builder Team for helping me put this together so users don't struggle and anyone can deploy with a consistent environment regardless of your local environment. In RED are the parts that you may need to change.


THIS 2017 YOUTUBE VIDEO MAY HELP YOU AS A GENERAL GUIDE (the user interface has changed, but the process is the same): https://youtu.be/zfNQle_ZxLc


  • Create a new project.

    • Your project ID will be present in your Google Open Online Education website's URL, for example: "<project_ID>.appspot.com".

    • Make sure to press the Edit button while creating the project if you want to customize this ID.

  • Go to Google Compute Engine at console.cloud.google.com/compute/ (or, equivalently, by clicking on the upper left-hand menu button, and going to: Compute Engine).

    • Make sure your new project is selected in the upper-left hand corner dropdown

  • Create a Linux Virtual Machine (often referred to as simply an "instance" or “virtual machine”).

    • The Virtual Machine OS used in this guide is the current default one: Debian GNU/Linux 9 (stretch) - this will probably change, so just try to find one that has Debian in the name as an alternative.

    • When creating the virtual machine, select the option to: “Allow full access to all Cloud APIs” (this is under Identity and API access - doing this gives your VM special access/permissions to certain APIs offered by Google Cloud).

  • Once it is created, click on the SSH button to connect to that Virtual Machine.

  • Install prerequisites by copying and pasting and running the following command on the Virtual Machine (note that we did not have to install Python since it was already included in the OS):

sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get install unzip && sudo apt-get install -y python-dev && sudo apt-get install -y git && sudo apt-get install -y build-essential manpages-dev

  • Run common.sh to take care of dependencies:

bash coursebuilder/scripts/common.sh

  • Since CourseBuilder is no longer in active development, it has an outdated certificate, so we need to replace the old certificate with a new certificate by running the following command:

wget https://curl.haxx.se/ca/cacert.pem -O coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/cacerts.txt

  • Authorize gcloud to access your Google account:

gcloud auth login

  • After running the command, open your local computer's browser at the URL listed on your Virtual Machine's console to authorize gcloud, and then paste the code back into your instance.

  • Create an App Engine app within the current Google Cloud Project:

gcloud beta app create

  • Deploy the Course Builder application to Google App Engine (replace YOUR_PROJECT_ID with your project ID):

bash ./coursebuilder/scripts/deploy.sh YOUR_PROJECT_ID --noauth_local_webserver

  • After running the command, open your local computer's browser at the URL listed on your Virtual Machine's console to authorize App Engine, and then paste the code back into your instance.

  • Your app should now be running at https://your_project_id.appspot.com . You may now want to delete your Virtual Machine instance in Google Compute Engine so it does not consume any funds from your Google Cloud account.

Sunzid Hassan

unread,
May 27, 2018, 12:24:32 PM5/27/18
to Course Builder Forum
I don't have access to credit card, so I can't open google cloud account right now. However, I do have access to CS50 IDE (cloud9) VM. Can I deploy course builder in that platform? If not, is there any other free platform to deploy course builder?

Thank you

Augustine C

unread,
May 27, 2018, 1:03:15 PM5/27/18
to Course Builder Forum
Dear Sunzid,

Yes, it is possible to deploy from that platform - deploying Course Builder can be done from most operating systems including Windows, Linux, Mac (here is the guide: https://edu.google.com/openonline/course-builder/docs/1.11/set-up-course-builder/set-up-course-builder.html).

The problem you will have is that one of the first steps on that setup is to create a Google Cloud project, which requires you to have a Google Cloud account. I am not sure if this can be achieved without a credit card. However, they currently give new users a $300 free trial (https://cloud.google.com/free/), so deployment is free if you can take advantage of that offer. You also need to consider the cost of keeping Course Builder live on Google App Engine - recently, this may have been changed to be part of the free tier too so you may be in luck, but I cannot confirm. After all, Course Builder is just a web application that needs to be hosted.

This forum's guide for deploying Course Builder code makes use of Google Cloud's virtual machines to deploy Course Builder. Having tried deployment on different operating systems, in my opinion, this approach is the easiest way to deploy it. Since everyone that follows the process starts with the same environment, you are basically guaranteed quick success.

Thank you,
Augustine


It is not the only way to deploy Course Builder, it is 
You need a Google Cloud account in order to deploy Course Builder. This is  because it is deployed on Google App Engine

Mike Gainer

unread,
May 28, 2018, 11:11:32 AM5/28/18
to course-bui...@googlegroups.com
To expand on Augustine's already good response:

Can you install on a plain VM: Maybe.  Course Builder strictly requires the App Engine framework.  However, there is at least one project that aims to replicate that framework so that an app such as CB can feel at home.  I don't have any views on which of these are best suited, not having tried any, but see: https://alternativeto.net/software/google-app-engine/  You are, of course, on your own with trying to get any of those working on Cloud9 if your time is worth less than the App Engine fees.

App Engine fees will, if I'm remembering right, run around $500/year +/- about $250 -- for a full-bore online course with thousands to tens of thousands of students, if I'm remembering right from the last time I did the analysis.  CB is ... well, not a model of efficiency since it was mainly designed around modularity, extensibility, and some historical accidents relating to layers of caching and how we represent a course.  If, OTOH, you want to just horse around with it or run a course for a few sections of students for a semester, I would definitely look into what the freebie quota is like these days.  Last I remember, there was a daily max quota that was plenty big enough for experimentation, but not so big that you could start to make a commercial product.  If they've gone to a flat $300 credit as Augustine mentions, then you're still probably good to go for at least a semester, possibly two.  If it were me, I'd pilot it on App Engine for one semester, demonstrate efficacy, then take those results to whoever-it-is that funds your department and ask for $$.

General recommendations for a usable course builder install are to enable dedicated caching at 1..2 GB, and buy the best performing (F4?) instance.  You don't need an instance class with extra RAM, though, due to enabling the dedicated cache.  At the other end of the scale, if your prospective students can deal with slow page load times, you can save a lot by not enabling the cache, and living with F1 (the level CB defaults to for exactly this reason) performance.


--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/course-builder-forum/72628adc-76fc-497f-be8d-7a1ef69b26b0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Message has been deleted

Mike Gainer

unread,
May 28, 2018, 12:32:34 PM5/28/18
to course-bui...@googlegroups.com
For that error, the easiest thing is to go to https://appspot.com and look up your project, "digitalinclusionbd".  Once there, click on the 'hamburger' icon (three parallel lines) at the top left.  In the now-open left navigation pane, scroll down to App Engine.  Click on App Engine.  There are a few dialogs that will ask you what region and what programming language (Python) your app is in.  Once you've gotten a little way into the tutorial, it will automatically do the setup for having an App Engine app.  This takes a few minutes.

On Mon, May 28, 2018 at 9:20 AM Sunzid Hassan <sunzid...@gmail.com> wrote:
Hello Augustine,

I've created an google cloud account, and followed the instructions. But the site wasn't deployed. I think there is any problem with the last code that I ran. I've attached the screenshot of the last part. It'll be great if you give me any solution.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.

Sunzid Hassan

unread,
May 28, 2018, 12:38:47 PM5/28/18
to Course Builder Forum
Dear Mike,
Thank you for you note, I've successfully deployed the site :)

Aep

unread,
May 29, 2018, 12:55:12 AM5/29/18
to Course Builder Forum


On Monday, May 28, 2018 at 12:38:47 PM UTC-4, Sunzid Hassan wrote:
Dear Mike,
Thank you for you note, I've successfully deployed the site :)


Where is digitalinclusionbd 

Mike Gainer

unread,
May 29, 2018, 9:26:38 AM5/29/18
to course-bui...@googlegroups.com
@Aep: I don't quite understand your question; could you expand on that a little?  The easy answers are: In Google Cloud, as an App Engine application.  As a website, at https://digitalinclusionbd.appspot.com but until Sunzid adds some content and makes it public, it's probably just going to return a 404 Not Found error for anyone else except them.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.

Aep

unread,
May 31, 2018, 2:45:51 AM5/31/18
to Course Builder Forum
What does localhost 8080 refused to connect mean?


On Tuesday, May 29, 2018 at 9:26:38 AM UTC-4, Mike Gainer - Course Builder Team wrote:
@Aep: I don't quite understand your question; could you expand on that a little?  The easy answers are: In Google Cloud, as an App Engine application.  As a website, at https://digitalinclusionbd.appspot.com but until Sunzid adds some content and makes it public, it's probably just going to return a 404 Not Found error for anyone else except them.

On Mon, May 28, 2018 at 9:55 PM Aep <ihandlebusin...@gmail.com> wrote:


On Monday, May 28, 2018 at 12:38:47 PM UTC-4, Sunzid Hassan wrote:
Dear Mike,
Thank you for you note, I've successfully deployed the site :)


Where is digitalinclusionbd 

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

Mike Gainer

unread,
May 31, 2018, 10:31:00 AM5/31/18
to course-bui...@googlegroups.com
"localhost" is a special reserved name.  Whoever picked the name really should have thought about naming it something like "this.computer.org" or something similar, because it is evaluated as a hostname.  Just like, say, "www.disney.com" points at some specific computer somewhere, "localhost" also refers to a computer, but on any given computer, "localhost" always just means "this computer", whatever computer that is.

8080 is a port number.  Ports are a concept like post office boxes - places where things go that are all alike, except that they have an address number that they can be found by.  Just due to convention, port 80 is the usual port for web servers to listen on.  And by extension, port 8080 is typically used as the port for not-really-offical web servers to listen on.  Not-really-official, tends to mean servers where you're trying things out or experimenting, not The Official Website For The Organization.

"Refused to connect" is what happens when your browser or other tool tries to connect to a web server at a given port on a given machine, and there's no server connected to and listening on that port.

In this specific instance, since we're on a Course Builder forum, I'm going to go a little ways out on a limb: Normally, when you start Course Builder locally, it listens on port 8081 rather than port 8080.  So if your question is about Course Builder specifically, you'll want to point your browser to http://localhost:8081 (as opposed to http://localhost:8080) after you get the development version of the server started.  


On Wed, May 30, 2018 at 11:45 PM Aep <ihandlebusin...@gmail.com> wrote:
What does localhost 8080 refused to connect mean?

On Tuesday, May 29, 2018 at 9:26:38 AM UTC-4, Mike Gainer - Course Builder Team wrote:
@Aep: I don't quite understand your question; could you expand on that a little?  The easy answers are: In Google Cloud, as an App Engine application.  As a website, at https://digitalinclusionbd.appspot.com but until Sunzid adds some content and makes it public, it's probably just going to return a 404 Not Found error for anyone else except them.

On Mon, May 28, 2018 at 9:55 PM Aep <ihandlebusin...@gmail.com> wrote:


On Monday, May 28, 2018 at 12:38:47 PM UTC-4, Sunzid Hassan wrote:
Dear Mike,
Thank you for you note, I've successfully deployed the site :)


Where is digitalinclusionbd 

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/course-builder-forum/20b0d82f-4e99-4216-9f28-a08cb07d1dad%40googlegroups.com.

Jacob Atcher

unread,
Jun 28, 2018, 12:22:45 AM6/28/18
to Course Builder Forum
I followed a previous edition of this tutorial found here: https://groups.google.com/forum/#!category-topic/course-builder-forum/CAN84QThKyc which resulted in an error. I did some more research and located this thread with the updated step including replacing the old certificate with a new one. The Virtual Machine then said that it was successful at deploying my project but when I go to the URL, it displays the dreaded 404 error. I have started looking through other threads on the group to find a solution, but if anyone out there has had the same problem as me and has links to provide or if anyone is having the same problem as me I will post a link if/when I locate a solution.

Jacob Atcher

unread,
Jun 28, 2018, 1:00:13 AM6/28/18
to Course Builder Forum
I preformed the nuclear option and deleted the new project and started over. I assume the couple failed attempts at deploying via the downloaded script from my local PC had negatively affected my project. 

After marking that project for deletion (it takes a full month to delete the project) and creating a new one with a similar name (took out a "-" that the system had put in inplace of a space) and followed the Augustine's instructions, it worked wonderfully the first time!

arvind kiwelekar

unread,
Jun 28, 2018, 6:34:27 AM6/28/18
to course-bui...@googlegroups.com
Thanks a lot. With this information, I successfully deployed Course Builder.
awk

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/course-builder-forum/545b85a1-1fc3-44a2-ba35-8a60895cbb9a%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Associate Professor
Department of Computer Engineering
Dr. B. A. Tech. University Lonere 402 103
Dist. Raigad

akm.cou...@gmail.com

unread,
Jul 17, 2018, 7:41:52 PM7/17/18
to Course Builder Forum
Thanks Augustine!  I used your instructions to create and deploy my project.  It worked like a charm!  Great work and keep it up. 
Ramzan

manu_ginobili

unread,
Jul 26, 2018, 5:27:36 AM7/26/18
to Course Builder Forum
hi, I trapped in the last step when I paste the code back into my instance. I saw the following
File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appcfg.py", line 2401, in DoUpload self.error_fh) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appcfg.py", line 497, in GetResourceLimits resource_limits.update(_GetRemoteResourceLimits(logging_context)) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appcfg.py", line 467, in _GetRemoteResourceLimits yaml_data = logging_context.Send('/api/appversion/getresourcelimits') File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appcfg.py", line 1709, in Send result = self.rpcserver.Send(url, payload=payload, **kwargs) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appengine_rpc_httplib2.py", line 240, in Send self._Authenticate(self.http, auth_errors[0] > 0) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appengine_rpc_httplib2.py", line 465, in _Authenticate self.credentials = tools.run_flow(flow, self.storage, self.flags) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/oauth2client/oauth2client/util.py", line 137, in positional_wrapper return wrapped(*args, **kwargs) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/oauth2client/oauth2client/tools.py", line 225, in run_flow credential = flow.step2_exchange(code, http=http) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/oauth2client/oauth2client/util.py", line 137, in positional_wrapper return wrapped(*args, **kwargs) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/oauth2client/oauth2client/client.py", line 2000, in step2_exchange headers=headers) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/__init__.py", line 1584, in request (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/__init__.py", line 1332, in _request (response, content) = self._conn_request(conn, request_uri, method, body, headers) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/__init__.py", line 1268, in _conn_request conn.connect() File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/__init__.py", line 1037, in connect raise SSLHandshakeError(e)httplib2.SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)root@manu:~/gcloudstuff#

Mike Gainer

unread,
Jul 26, 2018, 9:48:05 AM7/26/18
to course-bui...@googlegroups.com

On Thu, Jul 26, 2018 at 2:27 AM manu_ginobili <asdfghj...@gmail.com> wrote:
hi, I trapped in the last step when I paste the code back into my instance. I saw the following
File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appcfg.py", line 2401, in DoUpload self.error_fh) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appcfg.py", line 497, in GetResourceLimits resource_limits.update(_GetRemoteResourceLimits(logging_context)) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appcfg.py", line 467, in _GetRemoteResourceLimits yaml_data = logging_context.Send('/api/appversion/getresourcelimits') File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appcfg.py", line 1709, in Send result = self.rpcserver.Send(url, payload=payload, **kwargs) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appengine_rpc_httplib2.py", line 240, in Send self._Authenticate(self.http, auth_errors[0] > 0) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/google/appengine/tools/appengine_rpc_httplib2.py", line 465, in _Authenticate self.credentials = tools.run_flow(flow, self.storage, self.flags) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/oauth2client/oauth2client/util.py", line 137, in positional_wrapper return wrapped(*args, **kwargs) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/oauth2client/oauth2client/tools.py", line 225, in run_flow credential = flow.step2_exchange(code, http=http) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/oauth2client/oauth2client/util.py", line 137, in positional_wrapper return wrapped(*args, **kwargs) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/oauth2client/oauth2client/client.py", line 2000, in step2_exchange headers=headers) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/__init__.py", line 1584, in request (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/__init__.py", line 1332, in _request (response, content) = self._conn_request(conn, request_uri, method, body, headers) File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/__init__.py", line 1268, in _conn_request conn.connect() File "/root/coursebuilder_resources_1_11_001/runtime/google_appengine/lib/httplib2/httplib2/__init__.py", line 1037, in connect raise SSLHandshakeError(e)httplib2.SSLHandshakeError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)root@manu:~/gcloudstuff#

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/course-builder-forum/4768ab6a-5d16-4c2e-bfaa-9d14fe320f32%40googlegroups.com.

Beryl Hoffman

unread,
Sep 9, 2018, 9:56:27 PM9/9/18
to Course Builder Forum
Hi,
Thanks for these great directions on using the cloud VM! I was able to deploy but now I'm trying to use "sh coursebuilder/scripts/etl.sh upload course" from a zip file to upload our course from the old to the new GCB version, but it's giving a "coursebuilder/scripts/etl.sh: 26: coursebuilder/scripts/common.sh: shopt: not found" error. I tried running it with bash instead of sh since shopt is in bash, but that gave a "File "/home/hoffmanb/coursebuilder/tools/etl/etl.py", line 171, in <module>
    import yaml
ImportError: No module named yaml" error. 

Any suggestions?
Thanks,
Beryl

Mike Gainer

unread,
Sep 10, 2018, 8:29:46 AM9/10/18
to course-bui...@googlegroups.com
Sorry about that; it looks like the default Google desktop environment comes with yaml, and (now?)[1] the standard Cloud VM doesn't.  I think the easy thing to do would be to install the Python yaml library, and try again.  Unfortunately, I'm not so familiar with installing packages locally that I feel like I can give guaranteed-working instructions on that.  It does look like you can start with the suggestions on this StackOverflow thread about how to get that done.  (Here, I'm inferring that since you're up on the difference between sh and bash, you're more than familiar enough with the Unix environment to find that discussion useful)


1] I think that's got to be a new development - this is the first I've heard of that particular issue.  (As best I recall, which is not too far back these days.  :-7 )

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.

Stephanie Kline

unread,
Oct 7, 2018, 2:00:05 PM10/7/18
to Course Builder Forum
What do I do if it tells me "no such file or directory" when launching into the project id section?  I have checked and double checked that I have it write and it still won't do anything 

Mike Gainer

unread,
Oct 8, 2018, 7:45:56 AM10/8/18
to course-bui...@googlegroups.com
I'm not sure what you mean by "it", and "when launching into the project ID section".  Is that the CB installer, or the yaml package installer, or something else?   If this is happening on install or from the command line, could you please copy everything from where you type in the command down to the last line of output.  I'd also help if you could include the result of running the 'pwd' command.  If this is after you've got CB installed (unlikely, I believe), a screenshot would help.

To start with, when you're running the command, be sure that you're in the directory where coursebuilder was unpacked.  E.g.:

/usr/home/mgainer> unzip ~/Downloads/coursebuilder_1.11.001.zip
/usr/home/mgainer> cd coursebuilder
/usr/home/mgainer/coursebuilder> ./scripts/deploy.sh my-project-name

On Sun, Oct 7, 2018 at 11:00 AM Stephanie Kline <04step...@gmail.com> wrote:
What do I do if it tells me "no such file or directory" when launching into the project id section?  I have checked and double checked that I have it write and it still won't do anything 

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.

Augustine C

unread,
Oct 8, 2018, 8:43:19 AM10/8/18
to Course Builder Forum
Dear Stephanie - To add to Mike's response, I suspect you are referring to this occurring while running this command on the guide above:

bash ./coursebuilder/scripts/deploy.sh YOUR_PROJECT_ID --noauth_local_webserver

Just to be sure that you understand what is occurring: the command above is looking for the folder structure "./coursebuilder/scripts/deploy.sh". That means that - in the current directory in the command line, the command is looking for a folder called "coursebuilder" - inside that folder it then looks for a folder called "scripts", and inside that scripts folder, it looks for a file called "deploy.sh". If that structure is not found, it will tell you "no such file or directory." Following the guide in order should avoid this problem.

As Mike suggested, it would absolutely help diagnose the problem if you could provide more information about what you typed in - you may have deviated from the guide at one point. If you feel that this is your first time with the command line, and want a simple solution, I would suggest deleting the Google Cloud project entirely, and carefully following the guide above again (making a new project with a new project id).

-Augustine

kenb...@gmail.com

unread,
Oct 9, 2018, 10:10:33 AM10/9/18
to Course Builder Forum
I have a similar problem, this is the last lines of command:

 Creating App Engine application in project [grundlaeggende-okonomistyring] and region [europe-west3]....done.
Success! The app is now created. Please use `gcloud app deploy` to deploy your first app.kenbrijen@instance-1:~$ bash ./coursebuilder/scripts/deploy.sh YOUR_PROJECT_ID --noauth_local_webserverbash: ./coursebuilder/scripts/deploy.sh: No such file or directorykenbrijen@instance-1:~$ kenbrijen@instance-1:~$ kenbrijen@instance-1:~$ kenbrijen@instance-1:~$ bash ./coursebuilder/scripts/deploy.sh YOUR_PROJECT_ID --noauth_local_webserverbash: ./coursebuilder/scripts/deploy.sh: No such file or directorykenbrijen@instance-1:~$ bash: ./coursebuilder/scripts/deploy.sh grundlaeggende.okonomistyring --noauth_local_webserver-bash: bash:: command not foundkenbrijen@instance-1:~$ bash ./coursebuilder/scripts/deploy.sh grundlaeggende-okonomistyring --noauth_local_webserverbash: ./coursebuilder/scripts/deploy.sh: No such file or directorykenbrijen@instance-1:~$ gcloud app deployERROR: An app.yaml (or appengine-web.xml) file is required to deploy this directory as an App Engine application. Create an app.yaml file using the directions at https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml (App Engine Flexible Environment) or https://cloud.google.com/appengine/docs/standard/python/config/appref (App Engine Standard Environment) under the tab for your language.ERROR: (gcloud.app.deploy) [/home/kenbrijen] could not be identified as a valid source directory or file.kenbrijen@instance-1:~$ gcloud app deploy grundlaeggende_okonomistyringERROR: (gcloud.app.deploy) [/home/kenbrijen/grundlaeggende_okonomistyring] does not exist.kenbrijen@instance-1:~$ bash ./scripts/common.shbash: ./scripts/common.sh: No such file or directorykenbrijen@instance-1:~$ D-bash: D: command not foundkenbrijen@instance-1:~$

Mike Gainer

unread,
Oct 9, 2018, 10:13:32 AM10/9/18
to course-bui...@googlegroups.com
CouldIMaybeGetThatWithTheAcutalNewlinesIncludedItsPrettyHardToReadAsSent.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.

kenneth jensen

unread,
Oct 9, 2018, 11:17:28 AM10/9/18
to course-bui...@googlegroups.com
What is acuta newline? I will send the whole command line tomorrow. I am out og office now. BR Kenneth

Mike Gainer

unread,
Oct 9, 2018, 11:42:11 AM10/9/18
to course-bui...@googlegroups.com
Sorry, I'm being a bit flippant.  Expanding, "with the actual newlines"  I can kind of work out what's going on, but it'd be nice to not get the output all balled together on one big line.

Mike Gainer

unread,
Oct 9, 2018, 11:48:35 AM10/9/18
to course-bui...@googlegroups.com
OK, having teased things apart: The main problem is that you're trying to run a script named coursebuilder/scripts/deploy.sh

If you're not in a directory where 'coursebuilder' is an immediate subdirectory, that command isn't going to work.  The easiest thing to do is to work out where you unpacked CB.  That would have been with an 'unzip' command at some point.  (If you haven't done that, then none of this is going to work.)  Once you've worked out where the unpack is,  go down into that directory.

E.g.:

cd where/ever/you/unpacked/coursebuilder
bash ./scripts/deploy.sh grundlaeggende.okonomistyring --noauth_local_webserver

Replacing "where/ever/you/unpacked" with the actual directory where you were when you issued the unzip command.  The word 'coursebuilder' in that first line is really just the actual word 'coursebuilder' -- the directory that should have been created as the result of the unzip command.

kenneth jensen

unread,
Oct 9, 2018, 3:42:49 PM10/9/18
to course-bui...@googlegroups.com
Ok, that makes sense. Repeating that i am a rookie, i am really not sure that i have unpacked the zipfile, since that was not given to me as an option when i right-clicked the downloaded file. I have though dragged the file to a different directory, and it took some time, and i assumed that unpacking had happened. I can show you the file tomorrow emwhen i access the PC again. BR, Kenneth

Mike Gainer

unread,
Oct 9, 2018, 4:00:42 PM10/9/18
to course-bui...@googlegroups.com
OK, assuming that "coursebuilder_1.11.001.zip" is in your $HOME/Downloads folder, your commands would be something like:

cd 
mkdir projects
cd projects
unzip $HOME/Downloads/coursebuilder_1.11.001.zip
cd coursebuilder
bash ./scripts/deploy.sh grundlaeggende.okonomistyring --noauth_local_webserver

(I'm not 100% about the --noauth_local_webserver, but try and see)

kenneth jensen

unread,
Oct 10, 2018, 3:28:47 AM10/10/18
to course-bui...@googlegroups.com

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extentpermitted by applicable law.Last login: Tue Oct 9 13:08:39 2018 from 74.125.73.160kenbrijen@instance-1:~$ cdkenbrijen@instance-1:~$ mkdir projectskenbrijen@instance-1:~$ cd projectskenbrijen@instance-1:~/projects$ unzip Users/kbj.om/Users/Desktop/coursebuildercd coursebuilderunzip: cannot find or open Users/kbj.om/Users/Desktop/coursebuildercd, Users/kbj.om/Users/Desktop/coursebuildercd.zip or Users/kbj.om/Users/Desktop/coursebuildercd.ZIP.kenbrijen@instance-1:~/projects$ cd coursebuilder-bash: cd: coursebuilder: No such file or directorykenbrijen@instance-1:~/projects$ cd Users/kbj.om/Desktop/coursebuilder-bash: cd: Users/kbj.om/Desktop/coursebuilder: No such file or directorykenbrijen@instance-1:~/projects$ unzip Users/kbj.om/Downloads/coursebuilder_1.11.001unzip: cannot find or open Users/kbj.om/Downloads/coursebuilder_1.11.001, Users/kbj.om/Downloads/coursebuilder_1.11.001.zip or Users/kbj.om/Downloads/coursebuilder_1.11.001.ZIP.kenbrijen@instance-1:~/projects$ unzip C:/Users/kbj.om/Downloads/coursebuilder_1.11.001unzip: cannot find or open C:/Users/kbj.om/Downloads/coursebuilder_1.11.001, C:/Users/kbj.om/Downloads/coursebuilder_1.11.001.zip or C:/Users/kbj.om/Downloads/coursebuilder_1.11.001.ZIP.kenbrijen@instance-1:~/projects$

Augustine C

unread,
Oct 10, 2018, 7:52:56 AM10/10/18
to Course Builder Forum
Dear Kenneth,
Thank you for your questions! On your original comment, you have "YOUR_PROJECT_ID" as part of your command. This should not be there - as stated in the guide, this part of the command should have been replaced with your own project id, which should have been collected in the third step of the guide above.
Hundreds of people have been able to deploy following the guide, and if there is a problem with the guide, Mike has been very helpful and a huge asset in the past to resolve those complex problems (thank you again Mike!). Having said that, I can guarantee that if you follow the guide carefully, you will be successful in deploying Course Builder successfully. At this point, since you mentioned that you are a rookie, I recommend deleting the Google Cloud project entirely, and carefully following the guide above again (making a new project with a new project id).
Please let us know if you have any additional problems, as you have been doing.
Kind regards,
Augustine
CouldIMaybeGetThatWithTheAcutalNewlinesIncludedItsPrettyHardToReadAsSent.

To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

kenb...@gmail.com

unread,
Oct 10, 2018, 8:39:49 AM10/10/18
to Course Builder Forum
Dear Augustine,

I deleted everything and did it all over. And it worked! Thanks again. BR Kenneth

Khadijah Omar

unread,
Jun 5, 2019, 7:39:25 AM6/5/19
to Course Builder Forum

I have barely any technical knowledge and managed to deploy the app by following your instructions. Thanks, Augustine!

Lokesh Adhikari

unread,
Aug 3, 2019, 1:50:05 AM8/3/19
to Course Builder Forum
Error 404: --- begin server output ---This application does not exist (project_id=u'********'). To create an App Engine application in this project, run "gcloud app create" in your console.--- end server output ---

How can I resolve this problem?

Thank You in anticipation. 

Augustine C

unread,
Aug 3, 2019, 7:51:48 AM8/3/19
to Course Builder Forum
Dear Lokesh,

Make sure, when you are following the guide above, that you did not accidentally copy the words "YOUR_PROJECT_ID" anywhere - those are supposed to be replaced by your project ID.

In addition, when you are doing this step:
bash ./coursebuilder/scripts/deploy.sh YOUR_PROJECT_ID --noauth_local_webserver
Make sure you are using the project ID instead of the project name - Google Cloud sometimes adds some characters to the name to create the ID when your name coincides with the name already used by a different user. There are details about this in the YouTube video in the guide.

It looks like the images I put together are no longer visible above, one image showed that you need to press the "Edit" button when creating your project name. The video shows this.

If you cannot resolve it quickly after these suggestions, and you created the project specifically for this purpose, I recommend deleting the Google Cloud project entirely, and carefully following the guide above again (making a new project with a new project id).

Kind regards,
Augustine

Iosif Cadelina

unread,
Apr 9, 2020, 5:16:31 AM4/9/20
to Course Builder Forum
HELP! I am stuck with this one

bash coursebuilder/scripts/common.sh

i copy pasted that command and it says no such file or directory. is there something i should edit on the command?

Augustine C

unread,
Apr 9, 2020, 7:46:29 AM4/9/20
to Course Builder Forum
Iosif,

If you are getting no such file or directory on this command, then one of the previous commands did not run or did not run properly. Is it possible that you missed a command?

This previous command is supposed to download and unzip the folder that is then used by the command that you typed:

If it was not run, then your command will fail with that error.

If you reach more errors while trying to fix the previous error, I recommend deleting the Google Cloud project entirely, and carefully following the guide above again (making a new project with a new project id).
Please let us know if you have any additional problems.
Kind regards,
Augustine

Carlos Terrazas

unread,
Apr 20, 2020, 12:39:36 PM4/20/20
to Course Builder Forum


On Friday, May 25, 2018 at 6:45:46 PM UTC-4, Augustine C wrote:

Hello,

I keep recieving this message everytime for the last command:
 04:34 PM Application deployment failed. Message: Deployments using appcfg are no longer supported. See https://clou
d.google.com/appengine/docs/deprecations2020-04-20 16:34:31,174 ERROR appcfg.py:2577 Application deployment failed. Message: Deployments using appcfg are no longer supported. See https://cloud.google.com/appengine/docs/deprecations 04:34 PM Rolling back the update.
Could not start serving the given version. 
- I have deleted and restarted with two different project accounts already and no luck. I also changed the project id to the one I named it as well but no luck each time.
Thank you.

Augustine C

unread,
Apr 21, 2020, 6:11:50 AM4/21/20
to Course Builder Forum
Carlos,

You have stumbled upon a new issue with the CourseBuilder deployment code. The functionality that CourseBuilder uses to deploy itself is no longer supported by Google Cloud. Your message, including the error, was very helpful to figure this out quickly. I have unlisted the YouTube video so it cannot be found on YouTube, and this deployment guide no longer works until this issue is resolved.

I looked through the deployment code. If we are going to fix this in a nice way, we might need help from Mike Gainer or Adam Feldman or someone from the CourseBuilder team.

This is happening at line 72 of coursebuilder/scripts/deploy.sh, where we are using this to deploy, using the update action of appcfg.py
python "$GOOGLE_APP_ENGINE_HOME/appcfg.py" ... update ...
As Carlos's link shows, this may need to be migrated (modified in the CourseBuilder code base) to use something like "gcloud app deploy ..." instead.

Thank you for sharing this, and kind regards,
Augustine C

Carlos Terrazas

unread,
Apr 21, 2020, 7:19:53 AM4/21/20
to course-bui...@googlegroups.com

Thanks for the update Augustine. Please when you guys fix the updated command, could you send me an email? 

Thank you again,
Carlos 

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-f...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/course-builder-forum/35d9ae72-6266-45c2-9130-f7eaf0cd902f%40googlegroups.com.

Mike Gainer - Course Builder Team

unread,
Apr 21, 2020, 7:04:29 PM4/21/20
to Course Builder Forum

Answer #1 - I believe this is now a job for "gcloud --project=your-project-name app deploy".  Which means fetching down the gcloud binaries to your Unix command line.  That's going to be A Lot Of No Fun At All for Windows folks, and possibly also Mac folks?  In principle it should work from a Google Cloud shell, but I haven't tried.

Mike Gainer - Course Builder Team

unread,
Apr 21, 2020, 7:10:15 PM4/21/20
to Course Builder Forum
Answer #2:

Officially, support for Course Builder ended in Q4 2016.  To the extent that I've had spare time to answer questions since, I have, but only on a best-effort basis.  Currently, a few factors are combining to make it worthwhile to take a look at making installation a lot more turnkey:
  • App Engine has accumulated a lot of changes (e.g, this latest requirement to use gcloud to do deployments), and CB hasn't kept up
  • There are a lot of dependencies on third party open source libraries, and CB is very much in danger of getting so old there just won't be any compatible versions available
  • Python 2 reached its final sunset date for support at the beginning of the year.
  • Course Builder just can't be an ongoing part of my day job; the older it gets, the harder this kind of thing gets.  I'd like to do one last effort to buy as much time as possible.  


My tentative plan is to try to make a packaged version that is as simple as possible to deploy.  I expect there may be some hurdles with bundling open source libraries, so I'll likely need to check with Legal on what's do-able and what's just not.  None of this will happen soon; I have near-term commitments for at least the next few weeks.

Finally, a reminder that this is at best a stopgap.  Official App Engine support for Python2 really will end at some point.  No, I don't know when.  No, I don't even have an educated guess.  Longer term, Porting CB to Python3 is going to be pretty ugly for a few reasons.  If you want to take that on, I'm happy to point out which closets have skeletons, which spiders, and which merely dust and cobwebs.


Carlos Terrazas

unread,
Apr 23, 2020, 12:26:25 PM4/23/20
to course-bui...@googlegroups.com
Understandable Mr.Gainer, I just had one more question. What would be the as close to universal way to create courses right now. I work with the GED and am trying to create a video guide for teachers. I say universal since most teachers don't have efficient machines or technical understanding of programming and commands. Thank you.

Mike Gainer

unread,
Apr 23, 2020, 12:36:18 PM4/23/20
to course-bui...@googlegroups.com
The ultimate goal would be to find a way to deploy an entire new Cloud project with just instructions like "Next, click <this> button".  I haven't done enough research to find out if that's possible technically, as well as possible from a legal standpoint, though.  If it happens at all, it won't be for another maybe four to five weeks before I can steal the time for that from my regular projects.

My suggestion would honestly be to find something that's got a bit more of an expected lifetime than Course Builder.  There's no official word on specifically _when_ App Engine and Google Cloud will totally stop supporting Python 2 deployments, but it _is_ going to happen at some point.  If I were taking bets, I would bet you a carrot that it'll be less than five years, but more than one year.

Augustine C

unread,
Apr 24, 2020, 12:34:09 AM4/24/20
to Course Builder Forum
Carlos, I understand where you're coming from - this is how I came to CourseBuilder as well - while not open-sourced, I can recommend the following free Learning Management System options:

-Augustine
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

Augustine C

unread,
Apr 24, 2020, 12:48:35 AM4/24/20
to Course Builder Forum
Mike, I completely hear you here. It is only going to get worse from here I appreciate your prompt input, your offer to guide me through some of this migration (although it may be too large of a project for me to take on), and I really like the idea of facilitating this deployment. For the time being, I think more users will reach this dead end until there is a fix here - would it be appropriate to indicate that CourseBuilder needs some repairs on the deployment website or repository?
I really appreciate your kind advice and guidance all of this time!
Augustine
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Course Builder Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to course-builder-forum+unsub...@googlegroups.com.

Visionary Global

unread,
Sep 2, 2020, 10:59:36 AM9/2/20
to Course Builder Forum
Dear. Agustin and Mike,
I hope you are well.
Is there already a solution to deploy the Course Builder?
Thanks in advance

Visionary Global

unread,
Sep 7, 2020, 5:04:58 AM9/7/20
to Course Builder Forum
...a gentle reminder

TRACY BELIVIA

unread,
May 19, 2024, 10:40:58 AM5/19/24
to Course Builder Forum
Thank you very much for the guide "Guide: How to Deploy Course Builder from Any OS." I would like to add the web3NewsDesk website so our learners can access it easily. Could you please advise me on how to do this?
Reply all
Reply to author
Forward
0 new messages