SlickStackisafreeLEMPstackautomationscriptwritteninBashdesignedtoenhanceandsimplifyWordPressprovisioning,performance,andsecurity.
Matrix/Elementroom(public)DiscordserverSkypegroupchatWhatToExpectPageSpeedGTMetrixPingdomSecHeadersSSLLabsWebPageTestImmuniWebAAAAAAACoreModulesLastupdated:Sep9,2021
LEMPModuleMirrorsVersionWhatdoesSlickStack[ss]customize?UbuntuLTSmirrors20.04crontab+gai.conf+sshd_config+sudoers+sysctl.confNginxmirrors1.18.xnginx.conf+serverblocksOpenSSLmirrors1.1.1xslickstack.crt+slickstack.key+dhparam.pemLetsEncryptmirrors0.40.xcert.perm+chain.pem+fullchain.pem+privkey.pemMySQLmirrors8.0.xmy.cnfPHP-FPMmirrors7.4.xphp.ini+php-fpm.conf+www.confRedismirrors5.0.xredis.conf+object-cache.phpWordPressmirrors5.8.1someWPCorejunkfilesareremovedbyss-cleanWP-CLImirrors2.5.0defaultconfigAdminermirrors4.8.1defaultconfigGitmirrors2.25.xdefaultconfigUFWFirewallmirrors0.36ufw+ufw.conf+user-rulesClamAVmirrors0.102.xfreshclam.confRclonemirrors1.50.xrclone.confChangelogNEW!ss-sync-staginghasnowbeenfixedtoworkproperlywiththenewsubdomainanddedicateddatabaseapproachwe'vesettledonforstagingsites.So,nowthisscriptwillbrieflyduplicatetheMySQLdatabasedump(thatss-dump-databasegenerates)anduploadittothestagingdatabase.ThenthisscriptwillrsyncallfilesfromproductiontostagingdirectorybutNOTthemediauploads,whichstagingautomagicallyloadsfromtheproductiondirectoryusingNginxmagic.
NEW!ss-dump-filescannowexport/archiveyourdev/stagingsitesifyouenableinss-config(alongwithproductionsite).
NEW!Staginganddevsites(subdomains)cannowbepasswordprotectedandanewuserGUEST_USERandGUEST_PASSWORDissupportedwhocanloginandvieweithersite.
NEW!Youcannowpreventss-clean-filesfromdeletingorcleaningWordPressfilesifyouprefernotusingthenewss-configoptionsSS_CLEAN_FILES_WORDPRESS_PLUGINSandSS_CLEAN_FILES_WORDPRESS_THEMESandSS_CLEAN_FILES_WORDPRESS_CONTENT...
NEW!ss-optimize-fileswillnowstripEXIFdatafromallpublicJPEGandJPGfilesunder/var/www/htmlforsecurityandprivacyreasons.
NEW!Staging/devsitesarenowworking!Thisisstillexperimentalandneedsmorereviewofallsettingssopleasekeepthatinmindandpleaseofferyourdetailedfeedbacktoourteaminthechatroomssowecangetthisfeaturetotallystable...woohoo!
NEW!Dedicatedscriptss-install-mysql-databasebeingcreatedforbetterstaging/dev/prodclarity.Willupdatethisdescriptionsoon.
NEW!Staging/Devpreparationcontinues:ss-install-clean-fileswillnowdeletenon-productionNginxserverblocksifstaging/devaresettofalseinyourss-configandwillalsodelete/stagingand/devdirectorieswithinthoseconditions,too.ss-install-nginx-configwillonlyinstallstaging/devblocksgoingforwardifstag/devareexplicitysettotrueinyourss-config.ss-install-wordpress-corewillonlyinstallWordPresstostaging/devdirectorieswithinthoseconditions,too.Likewisethestaging/devdirectorieswillbeauto-createdfromavarietyofmethodsifsettotrueinyourss-config.
NEW!Amajornew(experimental)featureiscalledtheSlickStackpilotfile.Thisfilecanbespecified(linked)duringnewinstallationsusingthesetupwizard,and/orwithinyourss-configfile.Thepurposeofthepilotfileistoallowteamstoeasily/rapidlycustomizesettingsacrossalltheirSlickStackserversusingafilethatcanberetrievedfromthepublicwebe.g.viaSecretGistfilesonGitHub,etc.ForexampleyourteamcouldchangeaPHPsettingacross100+serverswithin5-10minutesorlessbyusingthepilotfile.Weareexcitedaboutthisfeaturebutalsocautiousaboutsecurity,sopleaseofferyourfeedbackregardingwhichsettingsyouthinkweshouldsupportornotsupportwhenitcomestothenewpilotfileconcept.
NEW!Thescriptss-dump-filesisnowfunctional,andwillTARgzipyourentirehtmldirectoryto/var/www/backups/html/export.tar.gzwheneverrun...bydefaultwewillnotenablethisscriptonanycronschedulebecausemanyserversmightnothavethespaceforit.
NEW!SSHkeysarenowfinallyworking!Weareusinga"centralized"authkeysfiletoavoiddatalossandforeasiermanagementandbackuppurposes.Thepublickeyfileislocatedunder/var/www/auth/authorized_keysandaprivate/publickeypairwillbegeneratedautomaticallyforyouduringss-installand/orss-install-ubuntu-ssh...theprivatekeywillautomaticallybedeletedafterafewhours,andthepublickeyisautomaticallyinstalledforyou.Attheendofthess-installprocess(whenitrunsss-stack-overview)theshellwilldisplayyourprivatekeyhashbrieflysoyoucancopyittoyourlocalcomputer.Pleasenotethatyoucanuseadifferentkeypairifyouprefer,justbesuretouploadyourpublickeyfileto/var/www/auth/id_rsa.pubbeforess-installruns.Wearelookingforfeedbackonourcurrentdefaultsettingsinsshd_configsopleaseletusknowifyou'reanSSHguru!
NEW!Supportforthird-partySSLcertificatesishere,bypopulardemand!Wehavenottestedthis,butitshouldnowwork.Forthoseinterestedinusingthird-partySSLpleasetestthefeatureandofferusyourfeedback.Youwillneedtouploadyourcertbundleto/var/www/certs/thirdparty.pemandyourprivatekeyto/var/www/certs/keys/thirdparty.key...ifanyconflictsorproblemspleasetellussowecanexpandfeatureshereasrequired.
NEW!Earlysupportforwhitelabelbrandingnowexists,atleastforchangingtheWPAdminmenunamefrom"SlickStack"toanameyouchoose,suchasyouragency'sname,usingthenewss-configvariableWHITELABEL_BRAND...thisvariablewilllikelybeusedelsewhere,inthefuture.
NEW!ss-install-php-packageswillnowverifythatyour"custom"PHPextensionsarethecorrectversioninss-configbeforeinstallingthem,otherwiseitwillreverttousingourdefaultPHPextensions.We'vealsocleanedupthescripttobeginourgoalofautomaticcompatibilitywithanyUbuntuLTS(andPHP)versionsothatSlickStackwillautomaticallyinstallthedefaultPHPversionpreferredbyeachUbuntuLTSversion.Atthistime,wehavenoplanstosupportmultiplePHPversionsperserverornon-standardPHPversionsperserver,sincepredictabilityisamajorgoalforus.
NEW!Moregenericfilenamesnowexistbydefaultfordatabasedumps,andwehaveprepared(notfullysupportedyet)tosupportdumpinganyofthe3databasese.g.production.sql,staging.sql,anddevelopment.sqlintothe/var/www/backups/mysql/directorywheneverss-dump-databaseruns.Keepinmindthatbydefaultonlytheproductiondatabasewillbedumpedatscheduledintervals.Forlargedatabases,besureyouhavediskspace!
NEW!WehavedecidedtonotproceedwithsupportforPostfix(emailmodule)atthistime,probablyindefinitely.Therearetoomanysecurityandconfigurationissuestoworryaboutandmaintain.Also,moderncloudplatformshavetheirownemailalertsystemsinplaceforserverresources,sothereislessreasontosupporttheserverOStobeabletosendoutemailalerts(whichwasthemainreasonwewereconsideringPostfixsupport).Alternatively,wewillcontinuetoimprovetheSlickStackpanelinWPAdminwhichmayeventuallysupporthavingWordPresssendingoutemailalertsbasedonSLickStackstatusreports.
NEW!Theself-signedOpenSSLcertificatehasbeenmodernizedtouse4096bitkey(previouslyonly2048)andtosupportthefullarrayofdomainnamesrequiredbyatypicalSlickStackserverincludingexample.com,www.example.com,staging.example.com,anddev.example.com(previouslyjustasingleFQDN).ThisimprovementiscrucialtopreparingSlickStacktoproperlyandsecurelyhandlestagingsites,etc.GoingforwardSlickStackwillassume:nosubdirectoryinstalls,staging/devsubdomainsareALWAYSsub-FQDNmeaningifyouinstallSSonasubdomainlikeblog.example.comthestagingsitewillONLYsupportstaging.blog.example.com.ItwillbeyourresponsibilitytoupgradeCloudflare(etc)toensurepropersupportforsub-subdomainsattheproxylevel.TheabilityforSlickStacktoproperlyredirecte.g.reverseIPaddressor(non)wwwqueriestocanonicalwilldependonyourteamconfiguringtheproperDNSrecords.
NEW!AnewvariableSS_DATABASE_REMOTEinthess-confignowindicateswhetheryouroriginserverisusingaremoteMySQLdatabaseornot.Ifthisvariableissettotruethanss-installwillskipinstallationofMySQLmoduleontheoriginserver.
NEW!AllNginxserverblocksarenowinstalledunder/var/www/sitesinsteadofthedefaultDebianfolder/etc/nginx/sites-availableand/or/etc/nginx/sites-enabled...thismeansthatyoucannoweasilybackupyourserverblocksbysettingyourremoteSFTPbackupservicetosynceverythingunderthe/var/www/parentdirectory...italsomeansonemorethingyoudon'tneedtocdaroundLinuxtofindanymore...sinceSlickStackonlysupportsasingledomainandeverythingisautomatedusingourss-configsettings,therewasnoneedtokeeptheDebianapproachtoNginxserverblocksanymore.
NEW!DuetotimeoutsfromGitHubservers,somewgetcallshaveresultedinbrokenSSfilesinrecentmonths,oftentotallybreakingwebsitesthatarehostedonSSservers.Wearebeginningaprocessofimplementingfail-safefeaturesinallourcronjobsandscriptssothatiffilesareretrievedfromGitHubthatdonotcontainaspecificstringSS_EOFthenthefileisassumedcorruptandtheinstalltask(etc)isskipped.Pleaseofferyourfeedbackforhowtobestimplementthisprocessoralternativeideasforavoidingfilecorruptionduetowgettimeoutsandrelatedissues,thanks!
NEW!OrganizationofourGitHubrepoisnowcompletewithamucheasierstructuretounderstand.Allbashscriptsareunderthebashfolderandallcronjobsareunderthecronsfolder...customcronjobtemplatescanbefoundunderthe/crons/custom/folder.TherestofLEMPstackmoduleconfigboilerplatescanbefoundintherelevantchildfoldersundermodulesfolder...thisshouldmakethingsmuchsimplertobrowsegoingforward.
NEW!Ifyouhavenoticedproblemsbeforewithsscorecronjobsorsscorebashscriptsbeingsuddenly"null"(emptyofcontent)andthusyourentirestackbecomingfrozenoutofreceivingupdates...fearnot,wehavediscoveredthisisbecauseGitHubserverssometimestimeoutandresultinwgetoverwritingcorescriptswithblankfiles...tosolvethisproblempermanently,SlickStackcrontabwillnowforcefullyretrievesscorecronjobsafewtimeseachday,regardlessofsettingsinss-configandregardlessofifallyourotherfilesaredamagedormissing...amassiveimprovementtoyourSSserver'slongevity.
NEW!IfyouhavestruggledwithMySQL8.0performanceonsmallerservers,werealizedthatbinarylogging(nowenabledbydefault)sometimescreatesamassiveamountoffilesandexhaustsdiskspaceandotherwisehurtsperformance.Wehavenowdisabledthisfeaturebydefault,pleaserunss-install-mysql-configorreinstallyourSlickStackserverwithss-installifyouhaveproblemswithdiskspace.
NEW!Wehavechangedthewaycustomcronjobscanbeadded.Insteadofaddingtoss-configwhichwasratherjanky,youcannowcreateaseparatebashscriptunderthe/var/www/crons/custom/folderforeverysinglecustomcronjobyouwishtoactivate.Muchcleanerandstablewaytoruncustomjobs!
NEW!A2GBswapfileisnowinstalledbydefaultduetoissueswithMySQL8.0wehaveseenonlowmemoryVPSservers.ThenewswapfileshouldhelpguaranteestabilityandkeepMySQLfromcrashingduetointensiveprocesseslikeremotebackupandrestore(e.g.CodeGuard),etc.
NEW!Anotherlong-requestedfeatureishere,customWPcronschedulesusingtheserver...inourcase,youcanchangeWP_CONFIG_METHODtobeserverandthenSlickStackwilldisablewp-croninthewp-config.phpfilenexttimeyourunss-install-wordpress-configandourcorecronjobswillthentakeoverrunningWP-CRONontheintervalyouhavechosenusingWP_CRON_INTERVALinsideyourss-configfile...phew!
NEW!PHPextensionscannowbefullycustomizedusingthePHP_EXTENSIONSoptioninss-config.Remembertoincludethephp7.4-fpmextensionasitisNOTincludedbydefaultinourinstallationprocess(norareanyotherPHPextensions).Alsorememberthatphp7.4shouldNOTbeinstalledonLEMPstackservers,becauseallyouneedisthefpmextensionwhichincludesarerelevantdependencies.IfthePHP_EXTENSIONSoptionismissingorcommentedout,ourinstallerwillsimplychoosethemostcommonrequiredPHPextensionsforWordPressthatSlickStackrecommendsusing.
NEW!Customcronjobsarehere!Amuchrequestedfeatureisfinallyhere,andsimplerthanweexpected.SimplyedittheSS_CUSTOM_CRON_optionsinyourss-configfileinanicecentrallocationforallediting.ThesecustomcommandsshouldbewritteninnormalbashstyleandNOTcrontabsyntax,becausethesevariablesaresimplysourcedintooursscorecronjobfiles(bashscripts).
NEW!Defaultbashprompthasnowbeenprettifiedtoanicepinkcoloranddisplaysuser@hostname(FQDN)alongwiththecurrentworkingdirectory.Thishelpsimproveconsistencyacrosscloudnetworks,assomeproviderswillaltertheprompttosomethingunrecognizable.Wehavealsointroducedssaliascommands(notyetfullycomplete)sothatspaced-out-commandsnowwork.Insteadoftypingsudobash/var/www/ss-checkyoucannowsimplytypesscheckwhenloggedintoyourserverasthesudoorrootuser.Otherlongerexampleswillworksoonsuchasssinstallwordpressorsspermsnginx.
NEW!Wecontinuetosplitss-installandss-permsandss-purgeintosubscriptsforeasiermanagement,andwillprobablysplitafewothercorebashscriptsintosubscriptsaswelltocontinuefine-tuningscriptorganizationandnaming.Wealsocontinuetoaddmoreandmore"intervals"toss-configmeaningthatyoucanchoosewhentorunanyofthecorebashscriptsonthecronschedules(ornot)...therearetoomanytolisthere,sojustreviewthelatesttemplateforss-configtoseeallthelatestoptionsthatcanbeconfigured.Anewscriptss-reboothasalsobeenlaunchedtoautomateandscheduleserverreboots,ifdesired.
NEW!AnewvariableSS_PLUGIN_BLACKLISThasbeenaddedtoss-configoptionsthatcanbesetto"true"or"false"inordertoNULL(empty)theblacklist.txtfiletoeffectivelyturnoffthepluginblacklistfeature.WestillconsiderthatfiletobeacorefileforSlickStack,however,andthePluginBlacklistisadefaultMUpluginforSlickStackaswell,sowearenotgoingtoprovideadefaultwaytodeletethatfileforthetimebeing.InanycasethisnewoptionshouldmakeiteasierfordeveloperstosetupnewSSserverswithouthavingtoworryaboutmodifyingthedefaultMUpluginlist(ordefaultsourceURLforblacklist.txt).Thischangeisabitjanky,admittedly,andwewelcomeallfeedback...butfornow,itisasimpleandeasywaytoaddressthiscommonquestion.
NEW!WordPressCorewillnowbereinstalledautomaticallyevery2monthsasperthedefault"sometimes"cronjob...modifythisscheduleinss-configbyuseingtheSS_INTERVAL_INSTALL_WORDPRESS_COREvariable(ordisableitcompletely).WewillcontinuetoaddmoreintervalschedulessothateverycoreSSscriptcanbesettoautomaticallyrunonanyofour12corecronjobschedules!
NEW!Weareexperimentingwithanew"dashboard"thatletsadmin-levelWOrdPressuserseasilyreviewtheirSlickStackrelatedsettings...ifyouwanttodisablethisnewfeaturefornow,youcanrunss-updatetogetthelatestboilerplatethensetSS_DASHBOARDto"false"inss-configthenrunss-install-wordpress-configagainandthefeatureshouldthendisappear.
NEW!ThereisnowaninteractiveBashwizardwhenyourunss-installonSlickStackservers(newservers)thatdon'tyethavess-configfiles.ThishelpsadminssavetimeinsettingupnewLEMPstacksbysimplyrunningthruafewoptionsusingthewizardandproceedingwiththeinstallationprocesswithouthavingtospendanytimeconfiguringthess-configfilemanuallyaswaspreviouslyrequired.Thiswizardnowalsohas"defaults"forallprompts,meaningthatformostoptionsyoucansimplyhittheENTERkey(besidescriticalfieldslikeSITE_DOMAINorSITE_TLDandsoforth,whichalwaysrequireuniquevaluestobeinput).
NEW!WecontinuetobetterorganizeSlickStackfilenamesincludingvariousnewsub-scriptsthatcanberunindendentlyand/orsourcedwithinotherCorescripts.Forexample,ss-installhasbeenbrokendownintovariousscriptssuchasss-install-phpetc.ThismeansthatourGithubrepo(orthirdpartysysadmins)caneasilyreinstallthePHP-FPMmodulewithouthavingtogothroughtheentireinstallationprocess.ForbetterscalingandorganizingofCorecronjobs,wehavealsomovedtoadouble-digitprefixforallcronjobsstartingfrom00forcrontabandgoingupfromtheree.g.01-cron-...etc.ThismeansthatcronjobswillremainclearlyorderedwhileviewingthemintheshellterminalabovethecoredirectoriesandcoreBashscriptsinstalledbySlickStack.
NEW!Stagingsitesarenowincludedbydefaultonthe/staging/subdirectoryasaseparateWordPressinstallation...bydefault,weincludespecialMUpluginslikeDisableEmailsandDisableDefaultRunner(WooCommerceScheduler)andwealsodisableWPCronaswellaspartofourdistinctwp-configboilerplateforstagingsites...runningss-muplugsnowmanagesMUpluginsforbothproductionandstagingsites...andthenewss-syncscriptiswhatduplicatesallcontentfromproductiontostaging(includingthedatabasetohardcodedstaging_tables)...bydefaultss-syncwillrunevery12hours(half-dailycron)...stagingsitesarenowliveandactiveforallSlickStackenvironmentsbutstillconsideredBETAsopleaseofferfeedbackinourFacebook/Spectrumgroups...
NEW!ss-optimizeconvertsallMyISAMtablestoInnoDB,removesjunkSQLdata,andmore.Werecommendrunningthisscriptmanually,oronlyoccassionally,toavoidconfusionandtoallowforeasilyrestoringpotentialdataloss(althoughweareextremelycareful/limitedaboutremovingSQLdata).
NEW!(Experimental)SSHkeysarenowsupported(savepublickeyinto/var/www/meta/.ssh/authorized_keys)
NEW!WebrieflydisabledSQL_MODEinthemy.cnfboilerplateduetoaconflictwithss-configdefaultsettingsfortherecommendedMySQLmode.AfterrealizingthatMySQL8.0nolongersupportsNO_AUTO_CREATE_USER,weremovedthatsubmodefromthedefaultSQL_MODEinthess-configboilerplatedefaultsettings,andre-enabledSQL_MODEinthemy.cnfboilerplate.
NEW!SlickStackisnowconsideredBeta(nolongerAlpha)andhasbeenmovedtosupportingUbuntu20.04LTSonly,alongwithPHP7.4andMySQL8.0whicharethenewUbuntudefaults.Wehaveensurednocriticalconflictsexist,butsomeofthedocumentationandconfigurationarestillbeingfullyoptimizedfortheseupdatedmoduleversions.
NEW!Toavoidpotentialconflictswe'veaddedaSS_MU_PLUGINSvariablethatshouldbesettoeitherdefaultorcustominordertoactivatethecustomlistofMUpluginsthatyoucaneditinyourss-configfile...
NEW!ss-updatenowperformsa"safety"checkbeforerunningtoensurethatitiscompatiblewiththelatestversionofss-configinordertoavoidoverwritingthecurrentss-configversionwithanoutdatedboilerplate...
NEW!SlickStacknowsupportsfullycustomizingtheMU(Must-Use)pluginsthatareinstalled.ThiscanbedoneeasilybydefiningthedownloadlinkanddesireddirectorynameofeachMUplugininthess-configadvancedsettings(incasethesevariablesaremissing,SlickStackwilldefaulttotheLittleBizzyplugins).KeepinmindthattheAutoloader,ObjectCache,CustomFunctions,andXXXNoticespluginsarerequiredandcannotbedisabledatthistime.
NEW!SlickStacknowhasself-healingfunctionsintherootCrontaband1-cron-oftenand2-cron-regulartoensurethatCoreCronJobswillbereinstalledfreshincasetheyaremissingordamaged.Thisself-healingfunctionalsoensuresthatthecriticalCoreBashScriptsss-checkandss-workeralsoexistandareintacteverysingleday!
NEW!Runningss-updatewillnowautomagicallyupdateyourss-configtolatesttemplate...anyvariablesthataremissingorundefinedwillsimplybesetupusingthedefault(recommended)valuesforthosevariables...
NEW!Long-awaitedLet'sEncrypt(Certbot)supportisnowliveusingSSL_TYPEoptioninss-config...thosewhodonotwishtouseCloudFlarecannowusethisapproachinstead...OpenSSL+CloudFlareisstillalwaysourrecommendedapproachhowever...also,keepinmindthatduringinitialsetup(thefirsttimethatyourequestanSSLcertviaCertbot)youwillstillneedtohaveCloudFlareactivefor.well-knowndomainverificationtoworkproperlyoverHTTPS(otherwiseCertbotwillcomplainre:theself-signedOpenSSLcert)...
NEW!AllNginxfunctionalityisnowviaTCP-only(127.0.0.1)includingFastCGIcacheformorerobustscaling...manyNginxsettingscannowbecustomizedusingss-config...checkbackformoreoptionssoon...
NEW!AllMySQLfunctionalityisnowviaTCP-only(127.0.0.1)includingduringsetupandwhenpurgingtransientcacheviass-purgeforbetterdatabaseperformanceandsmoothertrafficscaling...
NEW!Ournewdefaultobjectcache(forkedfromPressJitsu)supportsaOBJECT_CACHEdefinedconstantsettoeithertrue(default)orfalsetoeasilydeactivateobjectcachingwithoutneedingtodeletetheobject-cache.phpfile...
NEW!SlickStacknowsupportscustompluginblacklistsusingPLUGIN_BLACKLIST_SOURCEvariable...
NEW!SlickStacknowdoesinclude_oncewithinwp-config.phpontheCustomFunctions(MUplugin)file/var/www/html/wp-content/functions.phpmeaningmuchmorereliablePHPfunctions...
Abstract[readmore]Mostofmoderncomputinghistorycanbetracedbacktoonething:Unix.Indeed,oneoftheonlythingsaboutwebserversthathasn'tchangedmuchinseveraldecadesistheUnixshell(Bash)commandlanguage.KeepingthesamepragmatismandsimplicityinmindthatinspiredLittleBizzy'smanagedhosting,SlickStack[ss]iscodedentirelyinBash.
WhilethereareclearbenefitstoprogramminglanguageslikePythonorRuby,provisioningaserverwithWordPressisn'tverycomplicated,andeveryLinuxmachinecomeswithBashbuiltintoit.Plus,let'snotforgetwhathappenswhentypicalwebagenciesrelyonadvanceddependencieslikeAnsible...yikes!Onward,then...
Requirements(Compatibility)[readmore]NOTE:SlickStack[ss]willneversupportinstallingmultipleTLDdomainsonasingleserver.Thisistoensuretopspeed,stability,andsecurity(i.e.technicalSEO).WewillalsoneverincludeanytypeofUIinterface,toallowthirdpartyapplicationstointegrateSlickStack[ss]withmanagementtoolsastheybestseefit.
SlickStack[ss]worksbestoncloudserverswithKVMvirtualizationthathaveatleast2GBRAMfromqualitynetworkproviderssuchasDigitalOcean,Vultr,Hostwinds,andAWSLightsail.TheunderlyingLEMPstackconfigurationismeantprimarilyforhigh-trafficsingle-siteWordPressinstallations,althoughsupportforMultisiteinstallationsisbeingplanned.SlickStack[ss]supportsWordPress,WooCommerce,bbPress,andBuddyPress"outofthebox"withoptimizedsettingsthatscale--whatthismeansisthatyoucanupgradeyourcloudservertoabiggerorbetterinstance,andrunss-installagain,andmostsettingswill(re)optimizethemselves.
Currently,SlickStack[ss]ismeantforasingleoriginserverwithasingle127.0.0.1database,althoughremotedatabasesshouldalsoworkfine.Server"clustering"or"loadbalancing"hasnotbeentested,andisnotthegoalhere;complexenterprise-styleconfigurationsforWordPressarerarelyneeded(andcanbeexpensiveanddifficulttomanage),thusSlickStack[ss]aimstotoprovideasimplesolutionforthe99%ofWordPresssitesthatdon'tneedsuchcomplexity.
ItshouldalsobenotedthatSlickStack[ss]isHTTPS-only,andthatHSTSisenabledbydefault,meaningthatHTTPsitesarenotsupported.BecauseOpenSSLgeneratesself-signedcertificates,SlickStack[ss]serversrequireCloudFlaretobeactiveinfrontofyourserverinorderforSSLcertificatestobeproperlyCA-signedandloadedbyyourbrowser,atleastuntilthefirstss-installhasbeencompleted(afterthat,youcanswitchtoCertbot/Let'sEncrypt).
Installation[readmore]Becauseit’swrittenpurelyinBash(Unixshell),SlickStack[ss]hasnodependenciesandworksonanyUbuntuLinuxmachine.UnlikeheavierprovisioningtoolslikeEasyEngineorAnsible,therearenothirdpartylanguagesrequiredsuchasPythonorDocker,meaningalighterandsimplerapproachtolaunchingWordPressservers.
Thebelowinstallationstepsassumethatyou'vealreadyspunupadedicatedUbuntuLinuxVPSserver(KVM)withatleast2GBRAMmemoryandthatyouarenowloggedinviaSSH:
cd/tmp/&&wget-Ossslick.fyi&&bashss
NOTE:SlickStack[ss]requiresCloudFlaretobeactivatedonyourdomainbeforeSSL(HTTPS)willberecognizedasafullysecureandCA-signeddomain,becauseofitsself-signedOpenSSLcertificate.
Fromthispointforward,youcanmanageyourSlickStack[ss]serverbysimplyusingthesudobashcommandonanyoneoftheincludedssscriptslocatedwithinthe/var/www/directory,asneeded.However,inmostcasesthereshouldn'tbeanyneedformuchhands-onmanagementastheserverwillintelligentlyrunvariouscronjobswhichconnecttothisGitHubrepo(orwhicheverforkofthisrepothatyourteamhassetup...besuretomodifyallwgetsources).
Youcansafelyre-installSlickStack[ss]anytimeviasudobash/var/www/ss-installwithoutcausinganyconflictsordatalosssincetheinstallationprocessiscompletelyidempotent.
PhilosophyOutsideoftheso-calledApplicationLayer,somuchofthewaycomputersandserversnowworkhasbeenmovedawayfromin-houseteamsandspecialistsandonto"thecloud"thattermslikeDevOpshavebecomestandardamongrecruiters,companies,anddevelopersalike.Modernwebdevelopmenttrendshavebeguntorevolveentirelyaroundconceptssuchasautomation,APIs,cloudservices,andbeyond—aphenomenonwemightrefertoasWeb3.0.
Whilethisshiftisexciting,thereisnowamassiveandgrowingdisconnectbetweentheseemergingtechnologiesandthehumansthatareexpectedtoimplementorbenefitfromthem.Typicalsmallbusinessowners(SMBs),alongwithindependentagenciesorfreelancers,nowfaceavirtuallyimpossiblelearningcurveiftheywishtomaintainacompetitive"webdev"edge,letalonekeepupwithbasicstandardsinwebsiteperformanceandsecurity.
WhileSiliconValley"gurus"andcorporationspumpoutnewSaaSservices(orincrediblycomplexConfigurationManagementtoolslikeAnsible)onadailybasis,thetypicalsmallbusinesswebsiteisstilltryingtofigureouthowtomaketheircontactformsworkcorrectly.The"legacy"sharedwebhostingmonopolies—thinkEIGorGoDaddy—alsohavelittlemotivationtoeducationtheiraudience,asperpetuatingconfusionseemstobeacorepillaroftheirbusinessmodel.
Thus,beforethelikesofGoogleandAmazonandShopifyandWixtakeovertheentirewebandturnitintoWallStreet-backedwebsitebuildersthatfeedintotheirprivateecosystems,SlickStackhopestobridgetheknowledgegapbetweenemergingtechnologyandold-schoolwebdevelopmenttoempowerSMBstoachievetopnotchwebsiteperformanceandsecuritybyofferinga"controlled"LEMP-stackenvironmentwithlimitedoptionsthatisperfectlysuitedtotheworld'smostpopularopen-sourceCMS:WordPress.
评论