So I'm looking to develop a business with a compatriot of mine.
Essentially the structure will be something like this for our product:
We'll have multiple customers being separate businesses, we want to use vagrant to easily set up and tear down VMs running ubuntu + apache + mysql + php5.5. Vagrant was a bit of a bitch to set up (I'm newish to unix, completely new to apache/mysql/php.. but not OOP nor web design). Once I got everything set up the syncing of folders to my windows machine was kinda wonky, I got it working fine with php files.. until I tried to setup a database because I wanted to build user management modules first.. since it would make things easier. Well apparently mySQL dir in var/lib/mysql cannot be shared.. as the sync wiped it out. I found this out after an inordinate amount of bullshit dealing with sudo disappearing to mysql.sock not working/existing etc..
So I figure I'll point the datafile for mySQL to another location so I don't have this issue.. except I find out that the .frm files are the only thing being generated.. and that mySQL uses an InnoDB which is all databases sit in one file.... URGH - I won't be able to separate them if I want to make VMs from them.. so I have to design ONE customer setup and disregard plans to build the login during dev until we replicate another VM..otherwise how will we test it?
Anyway.. I'm trying to make sure there are no huge concerns and will be like OH MAN that was stupid when designing this thing.
The workflow looks as such:
Customer hits a web page where they login (companyname.username) and password are checked against a backend database (mysql), which database it is checked against (and which VM) are determined based on the companyname portion of the companyname.username.
From here the user hits a portal with a bunch of forms that have functions based on a role. Those php pages (forms) read and write against the mySQL database.
I want to make sure this design of front end to page to database isn't retarded and I won't run into any issues.
The whole concept is the functions and pages will be very similar between customers, if not exactly the same.
I don't have enough experience to know if its smarter to have separate vm + database on that VM for each customer.
The scalability could run up to the point where each database is a few gigs, so we're trying to build it that we can bring environments up pretty rapidly.
Also don't want to re-invent the wheel.
Any advice would be greatly appreciated.
Essentially the structure will be something like this for our product:
We'll have multiple customers being separate businesses, we want to use vagrant to easily set up and tear down VMs running ubuntu + apache + mysql + php5.5. Vagrant was a bit of a bitch to set up (I'm newish to unix, completely new to apache/mysql/php.. but not OOP nor web design). Once I got everything set up the syncing of folders to my windows machine was kinda wonky, I got it working fine with php files.. until I tried to setup a database because I wanted to build user management modules first.. since it would make things easier. Well apparently mySQL dir in var/lib/mysql cannot be shared.. as the sync wiped it out. I found this out after an inordinate amount of bullshit dealing with sudo disappearing to mysql.sock not working/existing etc..
So I figure I'll point the datafile for mySQL to another location so I don't have this issue.. except I find out that the .frm files are the only thing being generated.. and that mySQL uses an InnoDB which is all databases sit in one file.... URGH - I won't be able to separate them if I want to make VMs from them.. so I have to design ONE customer setup and disregard plans to build the login during dev until we replicate another VM..otherwise how will we test it?
Anyway.. I'm trying to make sure there are no huge concerns and will be like OH MAN that was stupid when designing this thing.
The workflow looks as such:
Customer hits a web page where they login (companyname.username) and password are checked against a backend database (mysql), which database it is checked against (and which VM) are determined based on the companyname portion of the companyname.username.
From here the user hits a portal with a bunch of forms that have functions based on a role. Those php pages (forms) read and write against the mySQL database.
I want to make sure this design of front end to page to database isn't retarded and I won't run into any issues.
The whole concept is the functions and pages will be very similar between customers, if not exactly the same.
I don't have enough experience to know if its smarter to have separate vm + database on that VM for each customer.
The scalability could run up to the point where each database is a few gigs, so we're trying to build it that we can bring environments up pretty rapidly.
Also don't want to re-invent the wheel.
Any advice would be greatly appreciated.