wordpress and node.js - mysql

Is it possible to install wordpress and node.js server on same server maschine and use wordpress mysql database also from node.js? Also is it possible to have noSql also installed on thah server to use with node.js? I want to use wordpress for frontend for my portal, but all asynchronous work to do with node.js and reading some data from wordpress mysql and writing some to noSql. Can someone please help me with steps how to achive this for testing purposes.
Thank you for your time and best regards!

If you're planning on using node for being accessed asynchronously by JavaScript that's being served by wordpress, then it will make your life considerably easier to have them running on the same host and port. What I've done in the past is set up the following:
Apache + PHP + Wordpress running on some port (8000?)
Node + npm + ever other package you'll want running on some other port (9000?)
HAProxy with some rules listening on port 80 which will decide based on the path which of the two servers to send requests to.
A normal installation of MySQL and whichever NoSQL DB you pick.
Recent versions of HAProxy can also terminate SSL, if you want to do the same with HTTPS on port 443.
Here's a sample HAProxy configuration:
defaults
log global
maxconn 4096
mode http
option http-server-close
timeout connect 5s
timeout client 30s
timeout server 30s
frontend public
# HTTP
bind :80
use_backend node if { path_beg /services }
# Everything else to Apache.
default_backend apache
backend node
server node1 127.0.0.1:9000
backend apache
server apache1 127.0.0.1:8000

Right, it's possible. The only catch is that Apache (running Wordpress) and Node.JS can't bind to the same port. In other words, you'll need to have Wordpress running on port 8080 and Node running on 80 (or other different ports).
Install Apache, PHP, Node, NPM, MySQL, NoSQL...
Configure Apache to listen on the desired port. (8080?)
Install Wordpress & Start Apache.
Start your Node application.
As for the precise steps involved to install those services, there are hundreds of guides online.

Yes it's possible, try express-php-fpm package.
You can use WordPress as backend only and Node.js for frontend.

Related

How can I port forward in openshift without using oc client . Is there a way we can usejava client to portforward in a pod just like“oc port forward”

I need to access a postgres database from my java code which resides in openshift cluster. I need a way to do so. without initiating port forwarding manually through oc port forward command.
I have tried using openshift java client class openshift connection factory to get the connection by passing server url and username password through which I log in to the console but it dint help.
(This is mostly just a more detailed version of Will Gordon's comment, so credit to him.)
It sounds like you are trying to expose a service (specifically Postgres) outside of your cluster. This is very common.
However the best method to do so does depend a bit on your physical infrastructure because we are by definition trying to integrate with your networking. Look at the docs for Getting Traffic into your Cluster. Routes are probably not what you want, because Postgres is a TCP protocol. But one of the other options in that chapter (Load Balancer, External IP, or NodePort) is probably your best option depending on your networking infrastructure and needs.

Redirect FTP requests

I have an application that connects to a domain using port 3306 (MySQL) and port 21 (FTP).
I've had to move the MySQL hosting to another server (AWS) and need to keep the FTP server as is.
Now the problem I have is that the application doesn't allow you to specify a different server name for each service so it's trying to connect via FTP to the MySQL server in AWS.
Is there any way to setup Windows to redirect certain ports only to a different IP?
Is there a way to set up the new server to bounce FTP requests back to the older server?
Alternatively is there a way to setup the domain DNS to point MySQL port requests to the MySQL server?
One of the ways to fix this is, install a TCP proxy server (Eg. nginx, haproxy) on the new server and pass the request to the old server based on the request type.

Express/NodeJS application on Cpanel

Ok so I have an app with a Node/Express API and everything works fine on localhost. I'm trying to figure out how to make everything work on CPanel that's running on Apache. The client side stuff but I am unable to fetch any data from the backed. I've searched and looked, yes, but I'm still quite unsure on how to approach this. Do I have to use a Virtual Host and if so what are the specific steps I need to do?
NodeJS doesn't run on Apache or Nginx. Most you can do in these web servers is to set a reverse proxy.
NodeJS has its own web-server. cPanel won't help you in that regard, since you only need to install NodeJS on your server (you must have SSH access-root), and run it from there. You can daemonize your Node process to keep running installing PM2 or Forever (NPM Packages).
Here's a good answer (search before asking, the issue might be solved by then).
Run node.js on cpanel hosting server
cPanel typically runs Apache or another web server that is shared among all the cPanel/unix accounts. The web server listens on port 80. Depending on the domain name in the requested URL, the web server uses "Virtual Hosting" to figure out which cPanel/unix account should process the request, i.e. in which home directory to find the files to serve and scripts to run. If the URL only contains an IP address, cPanel has to default to one of cPanel accounts.
Ordinarily, without root access, a job run by a cPanel account cannot listen on port 80. Indeed, the available ports might be quite restrictive. If 8080 doesn't work, you might try 60000. To access a running node.js server, you'll need to have the port number it's listening on. Since that is the only job listening on that port on that server, you should be able to point your browser to the domain name of any of the cPanel accounts or even the IP address of the server, adding the port number to the URL. But, it's typical to use the domain name for the cPanel account running the node.js job, e.g. http://cPanelDomainName.com:60000/ .
Of course port 80 is the default for web services, and relatively few users are familiar with optional port numbers in URLs. To make things easier for users, you can use Apache to "reverse proxy" requests on port 80 to the port that the node.js process is listening on. This can be done using Apache's RewriteRule directive in a configuration or .htaccess file. This reverse proxying of requests arguably has other benefits as well, e.g. Apache may be a more secure, reliable and manageable front-end for facing the public Internet.
Unfortunately, this setup for node.js is not endorsed by all web hosting companies. One hosting company that supports it, even on its inexpensive shared hosting offerings, is A2Hosting.com. They also have a clearly written description of the setup process in their Knowledge Base.
Finally, it's worth noting that the developers of cPanel are working on built-in node.js support. "If all of the stars align we might see this land as soon as version 68," i.e. perhaps early 2018.
References
Apache Virtual Hosting -
http://httpd.apache.org/docs/2.4/vhosts/
Apache RewriteRule Directive - http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
A2Hosting.com Knowledge Base Article on Configuring Node.js - https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts
cPanel Feature Request Thread for node.js Support - https://features.cpanel.net/topic/nodejs-hosting
Related StackOverflow Questions
How to host a Node.Js application in shared hosting
Why node.js can't run on shared hosting?
Is worth to point out that the NodeJS support hasn't yet come to cPanel (as early 2019)

Can I deploy mysql in the openshift and access from the outter

I create a diy Appliation and add a mysql cartridge and bind it to the port 8080.Is it possible to access outside the network through domain? I have a little idea about the routing
system.
I am not very sure what you want here. But you can use putty in your local machine to connect to Openshift mysql.
Thank you
You can use port forwarding using the 'rhc' command line or using the OpenShift Tooling in JBoss Tools. In both case, you'll have a set of local sockets to connect to, and it will forward commands to the remote 3306 port on your OpenShift gear, so you can run MySQL/SQL commands on your database.

django mod_wsgi, nginx MySQL or Postgres

I am looking to find out from the community which you think is best?
Django running with the following.
Django, mod_wsgi and MySQL
Django, mod_wsgi and Postgres
Django, nginx and MySQL
OR
Django, nginx and Postgres
?
I use nginx because it's faster and I like how the configuration is set up. I have never run into any trouble using it so I can't see why one should rather use Apache + mod_wsgi.
Also, using fastcgi, you can restart your django site without restarting the whole nginx server, which I like.
And Postgres because:
If you're not tied to any legacy system and have the freedom to choose a database back-end, we recommend PostgreSQL, which achives a fine balance between cost, features, speed and stability. (The Definitive Guide to Django, p. 15)
Copied from: MySQL vs PostgreSQL? Which should I choose for my Django project?
EDIT:
I now think that uwsgi running behind a load balancer (varnish) is the best solution. nginx can then be used to serve static content.
See "Varnish and nginx, the best way (0.9.8.4)" # http://projects.unbit.it/uwsgi/wiki/Example
You can use Emperor ( http://projects.unbit.it/uwsgi/wiki/Emperor) for managing apps in uwsgi. This will allow you to restart individual apps by simply touching their config files.
According to this benchmark Django+ uWSGI wins.
You can use nginx as a proxy and have apache run on localhost.
To start a single django project, you'd touch the wsgi file for that project and it will only reload that instance of django. You don't need to restart/reload apache