How to launch grunt automatically from webserver - gruntjs

I want to deploy a nodejs application.
This app comes with a Gruntfile.js file.
I have to run grunt command in order to launch my application in background.
I have setup an nginx web server with a proxypass configuration.
Everything works.
But, if i kill grunt process, the application stop.
What should i do in order to run properly this grunt command ?
Is there a way for nginx to automatically start this app in case of crash ?
Thanks

Related

How to deploy laravel and vuejs serparately in apache server

I have an application laravel as backend and vuejs as frontend separately. The problem is I don't know how to deploy this app to the server separately using apache server. I need help please provide me a detail instructions on how to do it. I have successfully deploy the laravel application api but I'm having trouble with the vuejs frontend also I'm using one ip address for this two application.
Thanks for your help.
Donnie.
It is very simple to deploy Vue SPA on the apache server.
Run this command in your project for production build
npm run prod
OR
yarn build
This command will create a dist folder in your Vue project.
project/dist/spa
spa folder contains index.html and other files (images,css and compiled js filed)
Give path of this index.html in your apache environment.
/etc/apache2/sites-available/your_project.conf
In ubuntu look like this.
eg /var/www/dist/spa
In ubuntu how we make the symbolic link
ln -s /your_project/dist /var/www/dist

Batch File: Wait until multiple dotnet run commands are finished before launching browser shortcut

I have a batch file that executes:
start cmd /k dotnet run -p projectName
For two separate projects and then launches a shortcut link to the angular project in browser. The only (semi) problem is that the shortcut launches before the dotnet run commands have finished and so the browser believes the site cannot be reached until the dotnet run commands are complete.
I'm trying to not launch the shortcut link until both projects have finished executing the dotnet run command so the "This site can't be reached" dialog never shows up. I don't personally mind it, but it's rather confusing to anyone thinking the application should just open without the need for a reload.
EDIT:
The projects I'm running are a .NET Core Web API & .NET Core (Angular) Web App. The angular app get's compiled and served via dotnet run, but both projects need to remain running in order to listen to their specific ports. And the shortcut link executed at the end of the batch file is just to open the browser at localhost:AngularPort#. I understand a desktop app would have probably been the way to go from the start but for v2, the plan is to host in azure and allow customers to access the site as well instead of just being an internal app.
I found a solution on npm with a package called 'wait-on' which in my case will wait until an http(s) request on that url returns a response with a status code in the 200 range before completing. There's a whole other assortment of use-cases with this package but I only needed it for that.
Here's a link to the package if anyone else runs into this problem:
https://www.npmjs.com/package/wait-on
Edit:
Honestly this was only a problem because the laptop I needed to put the application on didn't have the best CPU stats, so it got hung up trying to serve a local api and angular application simultaneously.

Update ASP.NET Core site with Kestrel Server

I have configured reverse proxy to kestrel with nginx. When I redeploy the new DLLs using a bash script the site is not getting updated. I can see only the old site. When I try to kill dotnet process also it doesn't work. Even I tried restarting nginx, still no luck. I have to restart the server(linux) to see the changes. Why is it happening?
I want kestrel to detect changes when I update the files and automatically restart itself (or do something to publish the new site). Is there any other way to do it?

Trying to run meteor up mup setup

It appears mup setup can't run without a mup.json file. But, it appears the mup.json file is primarily used for mup deploy. Reason I ask is I'm trying to execute mup setup on the host server and it fails without the server credentials but considering that I'm already logged onto the server executing the setup I don't understand why the mup.json is being required in the first place? I'm not deploying an application so none of the application-specific settings would apply, right? If I don't have a mup.json on the server then mup setup throws an error that the mup.json file does not exist. It didn't seem really clear on the meteor up web site. Thanks!
You should run Meteor Up from your local machine as that's what it's designed for. I wrote about how to deploy with meteor up a while back and that should help you.
In a nutshell I believe you're thinking about this the wrong way. With mup, meteor deploy and soon galaxy deploy, you no longer need to "upload" your files and then go and manage them from the server. Instead your files stay local, you deploy (which will upload them) and deployment sets up your server and file structure.
Misunderstanding on my part. mup setup is something you run on your remote machine, not the host machine.

How does Meteor Up work?

I recently created a droplet on Digital Ocean, and then just used Meteor Up to deploy my site to it.
As awesome as it was to not have to mess with all of the details, I'm feeling a little worried and out of the loop about what's happening with my server.
For example, I was using the console management that Digital Ocean provides, and I tried to use the meteor mongo command to investigate what was happening with my database. It just errored, with command not found: meteor.
I know my database works, since records are persistent across accesses, but it seems like Meteor Up accomplished this without retaining any of the testing and development interfaces I grew used to on my own machine.
What does it do??? And how can I get a closer look at things going on behind the scenes?
Meteor Up installs your application to the remote server, but does not install the global meteor command-line utilities.
For those, simply run curl https://install.meteor.com | /bin/sh.
MUP does a few things. Note that this MUP is currently under active development and some of this process will likely change soon. The new version will manage deployment via Docker, add support for meteor build options, and other cool stuff. Notes on the development version (mupx) can be found here: https://github.com/arunoda/meteor-up/tree/mupx.
mup setup installs (depending on your mup.json file) Node, PhantomJS, MongoDB, and stud (for SSL support). It also installs the shell script to setup your environment variables, as well as your upstart configuration file.
mup deploy runs meteor build on your local machine to package your meteor app as a bundled and zipped node app for deployment. It then copies the packaged app to the remote server, unbundles it, installs npm modules, and runs as a node app.
Note that meteor build packages your app in production mode rather than the debug mode that runs by default on localhost when you call meteor or meteor run. The next version of MUP will have a buildOptions property in mup.json that you can use to set the debug and mobileSettings options when you deploy.
Also, since your app is running directly via Node (rather than Meteor), meteor mongo won't work. Instead, you need to ssh into the remote server and call mongo appName.
From there, #SLaks is right about how it sets things up on the server (from https://github.com/arunoda/meteor-up#server-setup-details):
This is how Meteor Up will configure the server for you based on the given appName or using "meteor" as default appName. This information will help you customize the server for your needs.
your app lives at /opt/<appName>/app
mup uses upstart with a config file at /etc/init/<appName>.conf
you can start and stop the app with upstart: start <appName> and stop <appName>
logs are located at: /var/log/upstart/<appName>.log
MongoDB installed and bound to the local interface (cannot access from the outside)
the database is named <appName>

Resources