On the other hand, if you don't anticipate hundreds of users, then a
cheaper option like Digital Ocean may meet your needs better.  There
minimal servers start at $5/month.

Don't get me wrong, I love Aws, and I use it all the time.  It just
sounded like your needs were modest, so thought that might be a better
fit.

Aws may have a bit better stability than DO in the long run, but for
the apps I run there, uptime has not posed a problem so far.

Good luck with your app, and have fun.  I know I certainly have with
this framework.

Aaron

On 4/29/16, Fred Stluka <[email protected]> wrote:
> Patrik,
>
> I host the servers of all my clients at AWS (Amazon Web Services).
>
> I'd suggest you start by running the DB server (MySQL, PostgreSQL
> or whatever) on the same Linux server as the Web server (Apache,
> nginx or whatever).  Have the Web server handle all the static files
> (HTML., JS, CSS, image) and forward the Django requests via WSGI
> or uWSGI to the Django server on the same Linux server.  You can
> do it all with one AWS EC2 micro instance, which is free for the
> first year, and only $0.02/hour ($15/month) after that.
>
> As your needs grow, you can scale vertically by converting your
> micro instance to a small, medium, large, XL, XXL, etc.  And/or
> you can scale horizontally, by moving the DB server to it's own
> EC2 Linux server or to the AWS RDS service.  And by using AWS
> ELB, Autoscale, ElasticBeanstalk, etc., to manage farms of web
> servers and DB servers, allocating and terminating servers as
> needed to handle the load.  It's a one-line change in the Django
> settings file to point Django to the IP address of an RDBMS on a
> different server.
>
> Or turn the entire ops business over to AWS and just use their
> AWS Lambda service to serve the HTTP requests.  I haven't yet
> done that with Django, so you'd have to look into how well it
> works.
>
> For security reasons, configure Django to use a non-root user
> at the DB server, ideally one with as few privileges as possible.
> And make sure that the DB server is running as a non-root Linux
> user.  It everything accesses everything as root, you have a big
> security risk.  If someone DID succeed in hacking your Django
> app, and became able to get it to execute arbitrary SQL calls,
> they could make an SQL call that causes the DB server to make a
> system call (as root), that could run arbitrary code on your Linux
> server.  So, lock it down at each level, just in case.
>
> For more info about AWS, see:
> - http://bristle.com/Tips/CloudComputing.htm
> - http://bristle.com/Talks/CloudComputing/current/
>
> For direct printer access from a web app, see:
> - http://google.com/search?q=direct+printer+access+from+a+web+app
> Lots of hits, so I'm thinking it must be possible.
>
> --Fred
> ________________________________
> Fred Stluka -- mailto:[email protected] -- http://bristle.com/~fred/
> Bristle Software, Inc -- http://bristle.com -- Glad to be of service!
> Open Source: Without walls and fences, we need no Windows or Gates.
> ________________________________
> On 4/29/16 2:40 PM, Patrik Mjartan wrote:
>>
>> Sorry, I miss-clicked post button and so I will reply twice now.
>>
>> Another important (rather obvious to you I guess) question would be - what
>> is the usual structure of the servers?
>>
>> What I mean is - I assume we don't want to have the actual DB on the same
>> server as where we host the website.
>>
>> Is it usually such that Web server is hosted by some hosting company (so
>> they can make sure it's up 24/7) while DB server is on the premises of the
>> company (ie. the one for which I work for) such that data can be retrieved
>> faster? Although I guess that doesn't make too much sense either, as the
>> data has to be retrieved by web-server first in order to be presented to
>> the user...
>>
>> Overall I'm quite sure that the company I work for would prefer paying
>> some hosting companies to host everything so they don't have to spend
>> money on (potentially) expensive hardware. Is this the standard approach?
>>
>> I'm a total newbie in this area so would appreciate some help ^_^.
>>
>>
>> On Friday, April 29, 2016 at 7:33:58 PM UTC+1, Patrik Mjartan wrote:
>>>
>>> Thank you very much for the reply!
>>>
>>> I went through the tutorial a few days ago and loved it.
>>>
>>> One, very important, question that I forgot to ask - one of the biggest
>>> advantages on having an actual desktop front-end app is having a direct
>>> access to media, such as printers. Hence a simple button click in the app
>>> would result in some document getting printed by default printer (or w/e
>>> printer is selected by code, not necessarily user). Is it possible to
>>> capture such functionality by web-app at all? Printing PDF documents is
>>> not a huge problem (users can just download the PDF invoice and print it
>>> manually), problem is for example receipts (in case of future expansion
>>> to include on-site sales).
>>>
>>> If it is not possible to do it directly, I guess it's always possible to
>>> make a small stand-alone app that communicates with the server and
>>> listens on when it should print certain documents.
>>>
>>> On Friday, April 29, 2016 at 7:05:52 PM UTC+1, Fred Stluka wrote:
>>>>
>>>> Patrik,
>>>>
>>>> Yes, Django can be used for that.
>>>>
>>>> The "ORM" features and the "templates" and "views" of Django
>>>> make it very easy to do a "CRUD" app for a users to create/
>>>> retrieve/update/delete data in any RDBMS.
>>>>
>>>> There are some built-in security features like logins, protection
>>>> against "CSRF" attacks, etc.
>>>>
>>>> Django "formsets" make it easy to show multiple rows with a
>>>> details panel for the row currently selected.
>>>>
>>>> With a web app, you won't have to re-distribute the front
>>>> end.  Just push a new version to the server.
>>>>
>>>> Django's templates and views both support "inheritance",
>>>> which should solve your problem of managing multiple
>>>> related forms.  And, there are many Open Source custom
>>>> widgets for Django and for JavaScript that will give you all
>>>> the sub-grouping and tree-views that you need.
>>>>
>>>> Django scales very well to large amounts of data, large
>>>> numbers of screens, and large numbers of users.  There
>>>> are many performance tuning options, including "caching"
>>>> of templates, and of fully-constructed pages, and of DB
>>>> data.  Also, lots of other "middleware" for security,
>>>> performance, logging, and other "aspects" of the software.
>>>>
>>>> Yes, you can run a Django server locally, behind a "firewall",
>>>> or can expose it to the world, securing various parts as
>>>> needed.
>>>>
>>>> To make it as secure as possible, I'd put in on a Linux server
>>>> that is protected by tools like Logwatch, Fail2ban, and
>>>> Tripwire.  See:
>>>> - http://bristle.com/Tips/Unix.htm#unix_security
>>>> And be sure to redirect all page requests from HTTP to
>>>> HTTPS.
>>>>
>>>> I do all of this and more, including processing financial
>>>> transactions and supporting "multitenancy", restricting
>>>> access by thousands of different users, each to his own data,
>>>> plus "attribute based access control" for cases where data is
>>>> shared, at the Web site I'm currently working on:
>>>> - http://HelpHOPELive.org
>>>>
>>>> Sorry for all the terms and acronyms, but if you're considering
>>>> writing such an app, you'll need to be aware of them and they're
>>>> all pretty easy to Google.  Feel free to reply with more questions.
>>>>
>>>> Also, you'll quickly get a feel for Django's power if you go
>>>> through the on-line tutorial at:
>>>> - https://docs.djangoproject.com/en/dev/intro/
>>>>
>>>> Enjoy!
>>>> --Fred
>>>> ________________________________
>>>> Fred Stluka -- [email protected] -- http://bristle.com/~fred/
>>>> Bristle Software, Inc -- http://bristle.com -- Glad to be of service!
>>>> Open Source: Without walls and fences, we need no Windows or Gates.
>>>> ________________________________
>>>> On 4/29/16 12:57 PM, Patrik Mjartan wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I work for a very small company that I developed an application for,
>>>>> all using MS Access (it has back-end MS Access db - although this is
>>>>> planned to change to some more robust RDBMS, and a front-end app built
>>>>> in MS Access). Currently this app is used to calculate the exact wages
>>>>> of some employees (sorry, English is not my native language so I don't
>>>>> know how that type of wage is called here, but basically we look at how
>>>>> many products they produced and calculate it based on that. It's not a
>>>>> hourly wage). However, this summer I would like to expand it to do some
>>>>> order management too (ie. each order has specific products that need to
>>>>> be produced... each of those can be produced by our employees and so
>>>>> it's directly linked to the wages).
>>>>>
>>>>> However, it is very hard to manage everything using MS Access.
>>>>> Basically each time I make any change to FE or BE, I have to
>>>>> re-distribute the FE to all of the front-users. This is not a HUGE
>>>>> problem, the big problem, however, is within the MS Access itself, that
>>>>> is, it's very hard to manage all the forms as they are listed as simple
>>>>> names (ie. you cannot sub-group them efficiently to make a tree-view).
>>>>> Overall I cannot see myself working with MS Access in 5 years time as I
>>>>> can already see the scalability problems after a few months of working
>>>>> with it.
>>>>>
>>>>> What I thought of, however, is making a website that is only for local
>>>>> use, but is it possible to have the same functionality as a regular
>>>>> front-end app? Is this good idea to begin with? I had a brief look at
>>>>> Django (I'm VERY new to web-dev, but I'm a fast learner I like to
>>>>> think) and I really like it so far. But is it possible to have the same
>>>>> level of functionality MS Access offers? That is, for example a
>>>>> sub-form on a form that gives more details about the current record
>>>>> selected in the main form? Ie. main form consists of overview of 10
>>>>> recent orders and the lower portion of the main form is a subform that
>>>>> displays some detailed info about a selected order.
>>>>>
>>>>> How does it stand from security-perspective if the app is changed from
>>>>> local to public? Obviously even on local I'd imagine I'd put a login
>>>>> requirement there, similar to how the admin page has it, but how safe
>>>>> is it regardless if put to public? Are there pre-determined measures
>>>>> that if taken, it will be 100% secure? As you'd imagine I wouldn't be
>>>>> very happy if someone deleted all of our inventory records because they
>>>>> could bypass the logging system.
>>>>>
>>>>> Is there any good literature I can read up on doing some similar
>>>>> exercises/examples? For instance: orders/inventory management web app?
>>>>>
>>>>> Thanks a lot in advance!
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Django users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/django-users/fdee3fe0-6f3e-4d5b-862c-3a875b04035b%40googlegroups.com.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at https://groups.google.com/group/django-users.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/af709945-ddab-4e9b-97bb-ffc6d36f34dc%40googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/0f85786b-242c-3cdf-83a3-593634cdf603%40bristle.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAERFoOg6M-ciVeefbjnXfEzhe%2BB1htnEVMkHwz7eTO1D3s7VGA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to