flask_redditisanextendable+minimalistRedditclone.
ThiswasbuiltsobeginnerswhowantastandardCRUD+reddit-likeapplicationcanquicklygettowork.
Weutilize:
flaskasthewebframework.nginxastheHTTPserverguniconasthewsgiserver.MySQLforourdatabaseflask-sqlalchemyasourORM.bootstrap-journalthememakesusbeautiful.virtualenvemcompasseseverything.supervisordmakessureourservicenevercrashes.Andthatsprettymuchit!
Alloftheconfigutationsareinthisrepository.Deploymentinstructionswillbeoutsoon.
FeaturesthreadedcommentsupvotingsubredditsuserkarmasearchratelimitingajaxformpostinguserprofilesBuildInstructionsSetupaninstanceofMySQLonyourserver.Noteyourusernameandpassword.sudoapt-getupdatesudoapt-getupgradesudoapt-getinstallmysql-serverlibmysqlclient-devSetupaninstanceofnginxonyourserver.I'veprovidedthe.confscriptsneededforourserversinthe/serverdirectory.sudoapt-getinstallnginx
Configureyournginxsettingslocatedinflask_reddit/server/nginx.conf.
Addyoursettingsintoyourglobalconffilelocatedin/etc/nginx/nginx.conf
Restartnginxtorecognizeyoursettingssudoservicenginxrestart
Setupsupervisordtomonitoryourprojecttomakesureitnevercrashes.Supervisorisalsoconvenientforsimplyrestarting/startingyourprojectwithease.
sudoapt-getinstallsupervisor
WhenSupervisorisinstalledyoucangiveitprogramstostartandwatchbycreatingconfigfilesinthe/etc/supervisor/conf.ddirectory.I'veprovidedtheconffilewhichweuseintherootdirectoryofthisrepoassupervisor.conf.AnexamplesupervisorcommandwouldberunningsupervisorctlrestartYOUR_APP_NAMEtorestartgunicornandbringupnewchanges.
Installvirtualenvandsetupaprojectrootwhereeveryouwant.
sudoapt-getinstallpython-virtualenv;cd/path/to/project;virtualenvreddit-env;cdreddit-env;sourcebin/activate;#viola,youarenowinanenclosedpythonworkspace.Downloadtherepositoryandinstallalloftherequiredpythonmoduleswhichthisserveruses.gitclonehttps://github.com/codelucas/flask_reddit.git;cdflask_reddit;pipinstall-rrequirements.txtDuetosensitiveconfigurationinformation,Ihavehiddenmypersonalconfig.pyfileinthegitignore.But,Ihaveprovidedacleanandeasytouseconfigtemplateinthisreponamedapp_config.py.
Fillouttheflask_reddit/app_config.pyfilewithyourowninformationandthenrenameittoconfig.pysoflaskrecognizesitbyusingmvapp_config.pyconfig.py.Pleasebesuretofilloutthemysqldbsettingssimilarlytohowyousetitup!,username,pass,etc
Runthekickstart.pyscripttobuildthefirstuserandsubreddits.
python2.7kickstart.py
flask_reddithastaskswhichmustoccuronregulartimeintervals.Tomakethishappen,weusethecrontab,whichispresentonUNIXsystems.Acrontabisadashwhichallowsyoutospecifywhatprogramstorunandhowoften.I'veprovidedflask_reddit'sexamplecrontabintherootdirectoryasjobs.cron.
Toviewyourcurrentcrontab,runcrontab-l.Toedityourcrontab,runcrontab-e.
Pastethecontentsofjobs.cronintoyourcrontabbyrunningcrontab-eandpasting!Moredirectionsarepresentinthejobs.cronfile.
Runthegunicornserver.Youwon'thavetodothiseveragainifsupervisorissetupproperly.
sudoshrun_gunicorn.sh
Notethatwehavenowdeployedtwoservers:nginxandgunicorn.nginxisourinternetfacingHTTPserveronport80whilegunicornisourwsgiserverwhichisservingupourflaskpythonapplicationlocally.nginxreadsclientrequestsanddecideswhichrequeststoforewardtoourgunicornserver.Forexample,nginxservesstaticcontentlikeimagesverywellbutitforwardsurlroutestothehomepagetogunicorn.
Forafulllistofdetails,viewourconfigsatserver/nginx.confandserver/gunicorn_config.py.
Note,forthisbuildtoworktherearepathsthatyoumustchangeinthewsgi.pyfile,theserverconfigslocatedinserverdirectoryandtherun_gunicorn.shfile.
Refertotheflaskprojectconfigurationoptionstounderstandwhattoputinyourownconfig.pyfile.
Donothesiatetocontactmeforhelporconcerns.
评论