================
Web Server for FieldDB corpus pages, and the project website.
You need Node.js to run this webserver.
Mac:
$ brew install nodeLinux:
$ sudo apt-get install nodejsWindows:
You can download node from http://nodejs.org
$ npm install
You can create a config/local.js file to point to the corpus service you want to contact. By default it contacts your localhost.
To turn on the server:
$ npm run watchTo develop offline with fixture data:
$ OFFLINE=true npm start --offlineThen open https://localhost:3182 and accept the security certificate warning since you are developing locally with a self signed certificate.
To debug the client side code as well, in another tab turn on the webpack server:
$ node webpack.server.jsThen open https://localhost:3001/ and accept the security certificate warning since you are developing locally with a self signed certificate.
Running in production isn't much different from running while developing, except you will probably want to do some more customization of the configuration.
However, if you specified a port in the config, you might need someone with sudo privilges to open the port to the outside world so it will be accessible to the other machines who want to contact this service. Some universities and companies block non-standard ports so if you might have users who might be affected, you could request that someone with sudo priveleges set up a proxy such as Nginx or Apache to serve using a virtual host (eg https://www.example.org) rather than through a port (eg https://example.org:3182);
You should copy the config/local.js to config/production.js
$ cp config/local.js config/production.jsSuggested changes:
- change the
portto the port you want to use - change
sslto have the path of your ssl certificates and key, - change
corpusto the corpus service you want to contact, and
Production mode is controlled by an environment variable. Here is how you would set the environment variables if you are running the server via a non-privileged user fielddb.
$ echo FIELDDB_HOME=/home/fielddb/fielddbhome >> ~/.bashrc
$ echo NODE_ENV=production >> ~/.bashrcFinally turn on the service in a way that it will restart even in the case of errors:
$ gulp build
$ ./start_serviceThis project uses server-side rendering with the React library so that component code can be shared between server and browser, as well as getting fast initial page loads and search-engine-friendly pages.
Try viewing the page source to ensure the HTML being sent from the server is already rendered (with checksums to determine whether client-side rendering is necessary).
Redux server side render is based on from mz026.
- Universal rendering, with async data support
- Server side redirect
- Separate vendor and app js files
- Use Immutable as store data
- react@15.4.2
- react-router@2.8.1
- Immutable.js
- Webpack@2.2
- Babel@6
- Express as isomorphic server
npmas package manager
- Mocha as testing framework
- Chai as assertion library
- Rewire and Sinon to mock/stub
- Enzyme to do React rendering
Assign static folder linking /assets to the folder above
Use a gulp task (gulp build) to handle it:
- A set of
[rev](https://github.com/smysnk/gulp-rev-all)-edassets with hash code appended would be built intodist/public/assets - A static middleware mapping root url to the folder mentioned above is configured in
server.js - A set of
[revReplace](https://github.com/jamesknelson/gulp-rev-replace)-edserver code would be built intodist/server-build, so that the rev-ed assets can be used when doing server rendering
To test your production build:
$ gulp build
$ NODE_ENV=production npm startTo deploy this app to production environment:
-
Run
$ NODE_ENV=development npm installon server- After the installation above, then run
$ npm run build:productionwhich will build the front-end related assets and rev-ed server code underdist/folder.
- After the installation above, then run
-
Kick off the server with:
$ npm run start:production
- Once you're sure the server is operational, start the service with forever:
$./start_service
- v1.62 activity heat map
- v1.72 display of terms of use and elastic search integration
- v3.19 refactored server.js into routes and updated express 2.x to 4.x
- v3.21.15 migrated public urls from jade to handlebars
- v5.4.21 migrated public urls from handlebars to react
- v5.168.15 upgraded to node 12
Licensed under the Apache, 2.0 licenses.
