Aumenta il tuo PHP al Cloud

Questo articolo ti guiderà attraverso il cloud hosting per la tua applicazione PHP con Pagoda Box. Descriverà dettagliatamente come gestire le dipendenze PHP, ottenere i database MySQL attivi e in esecuzione (e eseguire il debug in locale) e personalizzare con facilità vari aspetti di PHP.


introduzione

Come sviluppatore che ha giocato con PHP fin dall'età di 11 anni, è difficile ricordare molte cose che hanno assolutamente cambiato il modo in cui sviluppo. Nel 2007, ho scelto CodeIgniter, che mi ha fatto ripensare a come strutturare il mio codice e usare OOP per fare le cose. Nel 2010, ho iniziato a lavorare con Git e Git Flow per il lavoro di squadra e la ramificazione, ma, di recente, la cosa più importante per cambiare il mio flusso di lavoro di sviluppo è stata una "Piattaforma come servizio", denominata Pagoda Box.

Potresti essere uno sviluppatore rockstar che sa come impostare uno stack LAMP, ma quanto del tuo potenziale tempo di sviluppo ti rifiuti sprecandolo, ottimizzandolo, fissando cose, bloccandolo, ridimensionando le risorse e monitorando il traffico.

Ogni giorno, vedo uno sviluppatore che combatte per difendere il suo server da un gruppo di hacker o di script kiddies, trovando il porto inondato, avendo problemi a lavorare con patch di sicurezza casuali, faticando a migrare verso server più potenti, impazzendo nel tentativo di installare Capistrano , la lista continua. Servizi come Pagoda Box possono aiutarti a saltare tutto ciò; quindi vediamo come.


Step 1 - Registrati con Pagoda Box

Il primo passo è prendere un account. È gratis, quindi vai avanti.


Passaggio 2: crea la tua applicazione

Ogni applicazione deve avere un nome univoco, in quanto vengono utilizzati anche per gli URL di anteprima. Puoi chiamare questa applicazione come preferisci, dato che lo nasconderai dietro un dominio a breve, ma lo chiamerai qualcosa di ovvio e memorabile.


Passaggio 3: impostare Git

Git è un sistema di gestione delle versioni estremamente utile. Al momento, è molto popolare grazie a siti come GitHub che consentono l'hosting gratuito di codici social, ma è anche ottimo per l'implementazione del codice.

Se sei nuovo a Git, prova il corso accelerato.

Se non lo hai già fatto, configura Git. La loro documentazione ti aiuterà a iniziare. Gli utenti Windows lo troveranno un po 'più difficile rispetto agli utenti OSX o Linux, quindi se hai una macchina virtuale di Ubuntu in giro, ora sarebbe un ottimo momento per accenderlo.


Passaggio 4: creare la chiave SSH

Per spingere il tuo codice su Pagoda Box devi autorizzare il tuo computer ad avere accesso diretto alle applicazioni sul tuo account. Crea una chiave SSH e incollala qui.


Passaggio 5: distribuire il codice

Per prima cosa, configura una cartella per la tua applicazione e imposta i telecomandi Git. I telecomandi sono essenzialmente soprannomi per un URL di repository. Impostando questo telecomando, stiamo permettendo al nostro repo locale Git di sapere come spingere il codice nella Pagoda Box.

 $ mkdir my-awesome-app && cd my-awesome-app $ git init Archivio vuoto inizializzato Git in /Users/phil/Sites/my-awesome-app/.git/ $ git remote add pagoda [email protected] : my-awesome-app.git

Ora con tutte queste impostazioni di account e ambiente, possiamo iniziare a distribuire il codice. Per ora implementeremo una semplice app Hello World:

 $ echo ''> index.php

Questo è un piccolo trucco da riga di comando per inserire del testo in un file. In alternativa puoi creare questo file con il tuo editor di testo o IDE preferito.

 $ git add index.php $ git commit -m "OH HAI" [master (root-commit) 6aa23f4] File OH HAI 1 modificati, 1 inserzioni (+), 0 delezioni (-) modalità di creazione 100644 index.php

Finora, abbiamo creato una nuova cartella per il nostro sito web, inizializzato Git, aggiunto un telecomando che dice a Git dove vive l'app Pagoda Box e aggiunto un nuovo index.php file, che dirà semplicemente Ciao mondo!. Il prossimo:

 $ git push pagoda master Conteggio oggetti: 3, fatto. Scrivere oggetti: 100% (3/3), 244 byte, fatto. Total 3 (delta 0), riutilizzato 0 (delta 0) :: Distribuzione automatica abilitata per 'master' +> per cambiare, visitare https://dashboard.pagodabox.com/apps/my-awesome-app/admin :: Distribuire a 6aa23f4 su master :: Parsing Boxfile :: Executing deploy +> Sottomoduli Init +> Avvio web1.1 - [22-Feb-2012 20:38:41] AVVISO: fpm è in esecuzione, pid 54 - [22-Feb-2012 20:38:41] AVVISO: pronto a gestire le connessioni +> Propagazione degli aggiornamenti di rete :: Pulizia fino a [email protected]: my-awesome-app.git * [nuovo ramo] master -> master

Qui è dove avviene la magia. Spingerai su un telecomando Git come qualsiasi altro repository, ma poi vedrai l'output di Pagoda Box prendere il sopravvento e creare una distribuzione. Questo genererà ogni volta una nuova istanza e passerà istantaneamente dall'istanza live a questa nuova istanza, il che significa aggiornamenti immediati, a differenza dei sistemi di distribuzione file basati su FTP lenti. Inoltre, a differenza di alcuni servizi simili, tutti i tuoi file temporanei (cache, log, upload di immagini, ecc.) Saranno presenti dopo ogni ridimensionamento o ricollocazione. Eccezionale!

Ora, se aggiorni la pagina Pagoda Box, vedrai una Dashboard con tutti i tipi di opzioni.


Passaggio 6: creazione di un file di caselle

Pagoda Box ha uno speciale file di configurazione: Scatola di documenti. Questo va nella radice della tua applicazione. Un esempio avanzato può assomigliare a questo:

 web1: ############################################################ ## IMPOSTAZIONI GENERALI ############################################## ## shared_writable_dirs: [/ system / cms / cache, / system / cms / logs, / uploads, / addons] ######################### ######################### IMPOSTAZIONI SPECIFICHE WEB ################################### ########################## index_list: [index.php] ################## ############################### ## IMPOSTAZIONI SPECIFICHE PHP ############## ################################## php_version: 5.3.8 php_extensions: [mysqli, curl, gd, mbstring] php_date_timezone: Europa / Londra php_max_execution_time: 30 php_max_input_time: 60 php_post_max_size: 25M php_file_uploads: su php_upload_max_filesize: 20M php_max_file_uploads: 20

Questo esempio ti dà la possibilità di creare cartelle scrivibili, imposta la tua index_list (che è index.php per impostazione predefinita) e modificare tutti i tipi di impostazioni PHP che normalmente si trovano in a php.ini file.

La linea più importante qui è:

 php_extensions: [mysqli, curl, gd, mbstring]

Pagoda Box consente di elencare le dipendenze delle applicazioni. Il "mysqli"driver è" MySQL Improved "che dovresti iniziare a usare, dato che" mysql "sarà deprecato in PHP 5.4" curl "e" gd "sono abbastanza standard e" mbstring "ti aiuta a lavorare con il codice UTF-8.

È bello sapere che sono disponibili - insieme a molti altri - ma per questo tutorial ci servirà solo quanto segue:

 php_extensions: [pdo, pdo_mysql]

Quindi, crea il nostro nuovo file Box e salvalo:

 web1: php_extensions: [pdo, pdo_mysql]

Lo useremo più tardi.


Passaggio 7: creare un database

Al momento della stesura di questo documento, Pagoda Box supporta solo i database MySQL, il che va bene in quanto è utilizzato dalla maggior parte degli sviluppatori.

Possiamo attivare gratuitamente tutte le istanze di database di piccole dimensioni che ci piacciono; iniziamo a pagare solo quando diventano più grandi, quindi non ti sorprenderesti con una bolletta enorme solo per la costruzione di un sito web. Proprio come le istanze web, possono anche essere ridimensionate per crescere con il tuo sito web.

Per crearne uno nuovo, fare clic su + icona e dargli un nome. Vedrai una barra di avanzamento in alto mentre si costruisce; quindi la pagina si aggiornerà.


Passaggio 8: connessione dall'app

Connettersi tramite PHP è un gioco da ragazzi. Vi sono dati multipli $ _SERVER variabili, che contengono le credenziali per ogni database che hai. Ciò significa che puoi tenere le password codificate fuori dalla tua applicazione, il che è molto utile se non vuoi che tutti i tuoi sviluppatori vedano password live o se hai il tuo sito web completo su GitHub, come alcune persone stanno iniziando a fare.

 $ db = nuovo PDO (sprintf ('mysql: host =% s; dbname =% s; porta =% s', $ _SERVER ['DB1_HOST'], $ _SERVER ['DB1_NAME'], $ _SERVER ['DB1_PORT'] ), $ _SERVER ['DB1_USER'], $ _SERVER ['DB1_PASS']);

Questo è un esempio di base delle variabili in uso: connessione al database MySQL tramite l'estensione PDO. Se stai usando un framework, come CodeIgniter, puoi inserire tali variabili nel tuo database.php file di configurazione.


Passaggio 9 - Connessione remota

Alcuni server Web, in particolare quelli cPanel run-of-the-mill, hanno phpMyAdmin installato e possono essere configurati per consentire l'accesso remoto ai database MySQL.

Invece di questo approccio, Pagoda Box utilizza Ruby Gem per - tra le altre cose - la creazione di un tunnel SSH temporaneo sicuro. Ciò significa che i tuoi database MySQL sono bloccati dietro un firewall e sono accessibili solo tramite questa connessione SSH sicura.

Quindi, per installare la gem run:

 $ sudo gem install pagoda

Quindi per creare il tunnel, esegui semplicemente:

 $ pagoda tunnel db1

La prima volta che esegui questo (o qualsiasi altro comando gemma pagoda) ti dovrebbe essere richiesto un nome utente e una password. Questo è il nome utente e la password della casella Pagoda, ed è necessario affinché la gemma possa agire a tuo nome e non abbia nulla a che fare con il tuo database.

 $ pagoda tunnel db1 sembra questa è la prima volta che usi il nostro client Username: someguy Password: Tunnel Established! Accettazione delle connessioni su: ---------------------------------------------- - HOST: 127.0.0.1 (o localhost) PORTA: 3307 UTENTE: (trovato nel pannello di pagodabox) PASS: (trovato nel pannello di pagodabox) --------------------- -------------------------- (nota: ctrl-c per chiudere questo tunnel)

Vai alla tua dashboard e fai clic sul database, quindi fai clic su "Mostra credenziali" per visualizzare una finestra di informazioni come questa:

Usa queste credenziali per connetterti. Non dimenticare di specificare quale porta; è elencato nell'output della gemma sopra, non nella casella verde. Ricorda che ti stai collegando al tunnel locale, non direttamente al database.


Passaggio 10: creazione di un blog

Che tipo di tutorial sarebbe questo se non implicasse la creazione di un blog in 20 minuti?

Per tutto lo sviluppo dovresti davvero costruire le cose localmente usando MAMP, XAMPP, WAMP, ecc., Quindi distribuire le modifiche al codice e al database usando una sorta di "Migrazioni" o elementi di tracciamento delle modifiche dello schema, ma lo faremo alla vecchia maniera.

Prima connettiti al tuo database in remoto tramite il tunnel, quindi esegui questa query per creare una nuova tabella:

 CREATE TABLE posts ('id' int (11) NOT NULL AUTO_INCREMENT, 'title' varchar (255) NOT NULL, 'slug' varchar (255) NOT NULL, testo 'summary' NOT NULL, 'body' text NOT NULL, ' created_at 'int (11) NOT NULL,' updated_at 'int (11) NOT NULL, PRIMARY KEY (id)) ENGINE = InnoDB; INSERISCI I post VALUES ('1', 'Le donne amano i ragazzi che usano FuelPHP', 'donne-amano-ragazzi-che-usano-fuelphp', 'E' un fatto provato che le ragazze amano gli sviluppatori, ma le cose non sono mai state così buono per gli sviluppatori PHP Tutti quelli che iniziano a utilizzare FuelPHP ricevono il 150% in più di donne entro il primo mese. "" È un fatto provato che le ragazze amano gli sviluppatori, ma le cose non sono mai state così buone per gli sviluppatori PHP. usando FuelPHP arriva il 150% in più di donne entro il primo mese.Fact. ',' 1322825332 ',' 1322934052 '), (' 2 ',' Le persone che echeggiano HTML dalle app muoiono più giovani ',' cattive pratiche ',' Gli scienziati hanno provato che gli sviluppatori PHP che echeggiano l'HTML direttamente i nostri file PHP muoiono più giovani Spesso accade mentre lo sviluppatore è in ufficio, mentre seduti alle sedie subiscono più ferite, ma a quanto pare non ci sono testimoni, anche se i loro colleghi erano nel office \ "refactoring male code \" all day. ',' Important body text ',' 1322826479 ',' 1322826479 ');

Con alcuni post di test in atto possiamo creare questo index.php:

 query ('SELECT * from posts') come $ row) echo "

$ Row [ 'title']

"; eco "

Inserito: ".date ('l jS \ di F Y', $ row ['created_at'])."
"; echo $ row ['summary']."

";

Con quel file salvato e il nostro nuovo file Box (dal punto 6) in atto, possiamo implementare queste nuove modifiche:

 $ git add Boxfile index.php $ git commit -m "Aggiunti file Boxpile e modifiche index.php" $ git push pagoda master

Vai su "http://my-awesome-app.pagodabox.com" e guarda l'output:

Questo chiaramente non è qualcosa che vorrete eseguire sul vostro sito Web, ma lo fa abbastanza. Puoi vedere che il tuo contenuto del database viene trasmesso al browser e il tuo URL demo funziona. Puoi sostituirlo con il tuo CMS preferito o creare qualcosa di personalizzato.


Passaggio 11: utilizzare un dominio reale

Non ha senso avere il tuo nuovo meraviglioso blog su a pagodabox.com sottodominio; quindi parcheggiamo un dominio su di esso.

Innanzitutto, nella scheda DNS / SSL della tua dashboard, aggiungi alcune voci per il tuo dominio:

Ora che la tua applicazione è pronta ad accettare un dominio, devi rivolgerti a chi gestisce il DNS per il tuo dominio. Vai all'area di gestione DNS e imposta un UN registrare per "Myawesomedomain.com" essere "50.97.141.37" - qual è l'indirizzo IP elencato nell'interfaccia per la tua app. Questi indirizzi IP non sono univoci per applicazione, ma non saranno sempre gli stessi. Imposta un record CNAME per "Www.myawesomedomain.com" alias "Myawesomedomain.com" e dovresti essere tutto pronto.


Sommario

Tutto ciò potrebbe sembrare alquanto diverso da come lavori in questo momento, ma iniziare a pensare a quanto lavoro ti stai risparmiando a lungo termine. Usare PaaS è la stessa ragione per cui utilizziamo jQuery su JavaScript nativo, o framework PHP su come scrivere PHP nativo. Perché scherzare con dettagli minori quando puoi concentrarti invece sulla creazione di un'app fantastica?

Altre alternative che potresti considerare sono PHPFog e Orchestr.io, che offrono entrambi servizi simili. Buon divertimento e grazie per la lettura!