Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Menyebarkan Permohonan PHP Anda Dengan Rocketeer

by
Length:LongLanguages:

Malay (Melayu) translation by Meyria (you can also view the original English article)

Sudah ada masa ketika pemaju PHP terpaksa menggunakan alat penyebaran yang ditujukan kepada aplikasi web umum. Anda dapat melihatnya dalam tutorial Johannes Schickling mengenai penyebaran aplikasi Laravel dengan Capistrano, contohnya. Ia adalah alat Ruby, dan anda perlu menulis kod Ruby. Alat ini mendapat kerja yang dilakukan tetapi mempunyai integrasi terhad dengan aplikasi PHP. Ini boleh menyebabkan penyelesaian hacky untuk senario tertentu.

Tetapi pada masa kini, kami diberkati dengan beberapa alat penempatan yang ditulis dalam bahasa kami yang membolehkan penyepaduan yang lebih mendalam. Salah satu alat ini ialah Rocketeer, alat yang mengambil inspirasi dari Capistrano dan rangka Laravel.

Rocketeer adalah alat moden yang membawa pendekatan yang hebat untuk keperluan penempatan anda. Itu adalah untuk menjalankan tugas dan mengurus aplikasi anda dalam persekitaran dan pelayan yang berlainan. Di samping itu, ia juga mempunyai beberapa sihir di dalamnya, seperti memasang dependensi Composer jika ia mengesan fail komposer.json. Anda mendapat lalai dan automasi tugas umum untuk aplikasi PHP moden. Dan anda mempunyai keupayaan untuk menyesuaikan dan memanjangkan segala-galanya.

Anda boleh menerangkannya sebagai pelari tugas SSH yang mengendalikan pelanggan. Perintah dilaksanakan pada pelayan melalui sambungan SSH. Sekiranya anda menggunakan pembekal hosting yang dikongsi bersama dengan akses FTP sahaja, anda tidak beruntung, malangnya. Apa yang anda perlukan adalah repositori jauh di mana alat itu boleh mengambil kod anda dari. Terdapat sokongan untuk Git dan SVN secara lalai. Perlu sokongan untuk sistem kawalan versi yang lain? Tulis pelaksanaan anda sendiri dengan antara muka yang disediakan.

Pemasangan

Anda boleh memasang Rocketeer dalam dua cara yang berbeza. Sama ada anda memuat turun fail phar dan menjadikannya dapat dilaksanakan atau anda memasangnya melalui Komposer. Saya penyokong kedua. Memandangkan ia sebagai kebergantungan membolehkan pemasangan mudah apabila mengklon repositori. Ini boleh memberi manfaat kepada sesiapa yang mengklon repositori untuk mendapatkannya dan berjalan.

Memasang dengan Komposer:

Saya tidak mengesyorkan supaya anda memasangnya secara global. Menyimpannya di peringkat repositori akan memastikan bahawa setiap orang yang menggunakannya menjalankan versi yang sama. Apa yang saya cadangkan ialah anda menambah vendor/bin ke PATH anda. Kemudian anda boleh menggunakan binari dengan menaip rocketeer dalam akar projek anda.

Pencucuhan

Mari kita mulakan! Pertama anda bootstrap direktori dan fail untuk konfigurasi. Anda melakukan ini dengan melancarkan rocketeer menyala di akar projek anda.

Apabila aplikasi anda menyala, alat itu membuat folder .rocketeer dalam projek anda. Kandungan direktori akan kelihatan seperti ini:

Ini adalah semua fail konfigurasi yang anda perlukan untuk memulakan penyediaan anda. Apabila saya merujuk kepada fail konfigurasi dari sini di luar, ia wujud dalam .rocketeer/ direktori.

Struktur Folder Jauh

Penting untuk memahami bagaimana Rocketeer menguruskan struktur foldernya di sisi pelayan, kerana ia agak berbeza dengan persediaan biasa. Ia menggunakan beberapa direktori untuk menguruskan aspek tertentu dari penggunaan, supaya ia dapat berkesan pada apa yang dilakukannya. Anda menentukan jalan ke mana anda ingin menggunakan aplikasi anda pada pelayan anda, dan alat itu akan menjaga yang lain. Folder itu akan kelihatan seperti ini, jika anda mempunyai /var/www/aplikasi sebagai direktori aplikasi anda.

Folder yang paling penting adalah semasa, yang menunjuk kepada pembebasan terkini anda. Itulah di mana root dokumen pelayan web anda harus ditetapkan. Jadi apa yang berlaku apabila anda menggunakan?

  1. Alat ini membuat folder masa yang dicap dalam direktori siaran.
  2. Menyelesaikan semua tugasan untuk membuat siaran siap.
  3. Kemas kini pautan simbol semasa ke siaran baru.

Proses ini menjadikan penggunaan anda telus kepada pengguna. Suis antara siaran hampir hampir serta-merta, biasanya dirujuk sebagai penyebaran atom.

Sesetengah data harus berterusan antara penggunaan anda. Ini boleh menjadi muat naik fail, sesi pengguna dan log, contohnya. Fail atau folder tersebut masuk ke direktori kongsi. Alat ini mewujudkan pautan simbolik dalam setiap pelepasan untuk yang telah anda konfigurasikan.

Peristiwa

Peristiwa menggerakkan alat ini, dan semua strategi dan tugas membakar peristiwa sebelum dan selepas ketika mereka menjalankan. Mereka juga hanya menyediakan acara penghenti khas apabila tugas gagal. Ini boleh menjadi contoh dependencies.halt, atau deployment.halt untuk kegagalan umum. Ini membolehkan kita memasuki proses di mana kita perlu.

Peristiwa lalai yang berlaku semasa penggunaan adalah:

  • deploy.before: sebelum sesuatu berlaku.
  • buat-release.before: sebelum ia membuat direktori pelepas baharu.
  • buat-release.after: selepas mencipta direktori pelepas baharu.
  • dependencies. sebelum: sebelum memasang atau mengemas kini dependencies.
  • dependencies.after: selepas memasang atau mengemas kini dependencies. Mungkin pastikan bahawa binari dalam folder penjual anda boleh laku.
  • test.before: sebelum menjalankan ujian.
  • test.after: selepas menjalankan ujian.
  • berhijrah sebelum: sebelum menjalankan migrasi pangkalan data. Mungkin anda ingin membuat cadangan pangkalan data anda?
  • berhijrah: selepas: selepas menjalankan migrasi pangkalan data.
  • deploy.before-symlink: sebelum menyiarkan pembebasan sebagai pelepasan semasa kami.
  • deploy.after: selesai. Anda boleh memaklumkan kepada orang bahawa semuanya berjalan lancar atau sebaliknya.

Kita juga boleh mencipta peristiwa sendiri yang boleh kita api dan mendengar. Buat masa sekarang, kami akan tetap dengan acara-acara yang disediakan untuk kami. Mereka akan cukup untuk kita sekarang.

Tugas

Di tengah-tengah Rocketeer, kita dapati konsep yang dipanggil tugas. Kebanyakan apa yang berlaku di bawah hud adalah tugas utama. Takrif tugas boleh menjadi satu set arahan untuk melaksanakan sebagai langkah dalam penempatan. Sekiranya kita melihat beberapa kelas yang disediakan oleh alat ini, kita dapat merasakan tugas-tugas umum: kelas seperti Deployment, Setup, Migrasi, Rollback, dan Dependencies. Apabila anda menggunakan, arahan yang digunakan sendiri adalah tugas dengan sub-tugas.

Jenis Tugas

Di sinilah anda akan mula melihat bagaimana bersepadu alat ini dengan PHP, kerana anda akan menulis tugas dalam bahasa. Anda boleh membuat tugas anda sendiri dalam tiga cara yang berbeza:

Perintah terminal sewenang-wenangnya. Ini adalah satu-liner yang anda mahu jalankan pada pelayan anda. Boleh menjadi berguna untuk banyak perkara, seperti menanam gulp membina --- produksi misalnya.

Penutupan. Sekiranya anda memerlukan sedikit kelonggaran atau kerumitan, anda boleh menulis tugas sebagai penutupan (fungsi tanpa nama). Katakan anda ingin menghasilkan dokumentasi untuk API semasa penggunaan anda.

Kelas. Untuk tugas yang lebih kompleks, anda harus menggunakan pilihan untuk membuat kelas untuk tugas. Anda membuat kelas dan meluaskan Rocketeer Abstracts AbstractTask. Kemudian anda mesti menyediakan sekurang-kurangnya keterangan dan kaedah eksekusi(). Berikut adalah contoh yang sama sekali tidak berguna untuk menunjukkan struktur kelas tugas:

Perhatikan bahawa anda perlu mendaftar kelas tugas sendiri. Sama ada anda melakukan ini melalui fail hooks.php dan menambahkannya ke custom array ...

... atau anda boleh melakukan ini melalui fasad:

Sebaik sahaja anda mendaftarkannya, anda boleh melaksanakannya:

Menetapkan Tugas

Kami membincangkan peristiwa pertama kerana kami menyambung tugas di mana kami memerlukannya dalam proses. Anda boleh melakukan ini dalam beberapa cara. Pergi dengan yang anda suka dan yang memenuhi keperluan untuk tahap kerumitan anda.

Cara paling mudah untuk menentukan tugas anda adalah dalam fail hooks.php. Ia menyediakan dua baris untuk ini, menentukan pelaksanaan tugas sebelum atau selepas peristiwa tertentu.

Strategi

Anda mungkin dapat memberitahu sudah bahawa tugas-tugas yang disediakan agak generik. Ambil Dependencies, contohnya. Apakah jenis kebergantungan yang kita bincangkan dan pengurus pakej mana?

Di sinilah strategi dimainkan. Strategi adalah pelaksanaan khusus tugas, seperti menjalankan ujian dengan Behat atau menggunakan Gulp untuk membina front-end anda. Tugas mempunyai strategi lalai dengan pilihan untuk menjalankan strategi lain melalui CLI. Kami boleh menyenaraikan strategi yang ada seperti ini:

Mewujudkan Strategi Sendiri

Katakan anda sedang melakukan BDD Dengan Behat untuk permohonan anda dan bukannya TDD. Kemudian anda ingin menjalankan ujian anda dengan Behat bukannya PHPUnit. Oleh kerana ia merupakan pelari ujian, sudah ada ruang nama strategi untuk itu, tetapi tiada pelaksanaannya. Buat direktori .peringkat/strategi/ dan letakkan BehatStrategy.php baru anda di sana.

Anda kini boleh mengalihkan strategi ujian anda ke pelaksanaan baru dalam strategies.php.

Sambungan & Tahap

Tidak mengapa jika anda mempunyai infrastruktur di tempat atau mengingatnya. Tidak kira jika aplikasi anda menggunakan banyak persekitaran di banyak pelayan. Rocketeer akan berada di sana untuk anda. Anda juga boleh mempunyai banyak lokasi yang berlainan di pelayan yang sama. Di sinilah istilah sambungan dan peringkat masuk.

Sambungan adalah pelayan di mana anda menggunakan aplikasi anda. Ini sering dipanggil environment, dan pengeluaran dan pementasan adalah contoh ini. Mengkonfigurasi sambungan ini adalah mudah dalam alat ini. Sama ada anda melakukannya melalui array bersarang atau dengan menyimpan fail berasingan bagi setiap sambungan. Setiap sambungan juga boleh mempunyai pelbagai pelayan di dalamnya.

Tahap adalah seperti sambungan di dalam sambungan, sejenis "capaian sambungan". Anda boleh menyediakan pementasan dan persekitaran pengeluaran pada pelayan tunggal dengan menggunakan peringkat. Oleh itu, bukannya mempunyai dua sambungan berasingan, anda mempunyai satu sambungan dengan dua peringkat di dalamnya.

Plugins

Ciri yang menarik ialah kami dapat memperluaskan proses kami menggunakan pemalam. Terdapat beberapa rasmi untuk integrasi dengan Laravel, Slack, HipChat dan Kemarau. Kemudian ada beberapa, tetapi tidak banyak, pada Packagist. Memasang plugin adalah tugas mudah melalui CLI:

Walaupun ada sejumlah plugin yang terhad, ia meninggalkan ruang untuk membangunkan plugin pada masa akan datang. Ia menceritakan falsafah yang baik. Dan kenapa tidak membina salah satu dari anda sendiri?

Menyediakan Penyebaran Anda

Untuk mendapatkan permohonan anda dari tanah, anda memerlukan beberapa konfigurasi asas. Anda perlu memberitahu Rocketeer di mana untuk mencari aplikasi anda dan di mana ia perlu digunakan. Mari mulakan dengan menetapkan nama aplikasi dan mengkonfigurasi pelayan pengeluaran dalam config.php.

Anda kini mempunyai nama aplikasi dan pelayan untuk menggunakan aplikasi anda. Persediaan ini menggunakan pengesahan utama SSH, tetapi anda boleh berhubung dengan nama pengguna dan kata laluan juga. Untuk mendapatkan nama pengguna dan kata laluan, atur 'kunci' => ''. Alat ini akan menyimpan kelayakan pada mesin tempatan anda dan menggunakannya setiap kali nanti. Saya tidak mengesyorkan untuk menetapkan nama pengguna dan kata laluan dalam fail konfigurasi, kerana anda tidak mahu maklum balas yang dilakukan ke repositori anda.

Apa yang perlu anda buat sekarang ialah menukar sambungan lalai yang anda gunakan. Mempunyai seting lalai untuk pengeluaran tidak sesuai. Anda tidak mahu menggunakannya secara tidak sengaja. Jadi dalam fail yang sama, cari kekunci lalai dan ubah nilai untuk staging sebaliknya.

Nama aplikasi itu sendiri tidak begitu penting. Tetapi jika anda tidak menentukan folder untuk digunakan, ia akan menggunakan ini sebagai nama folder dalam direktori root. Secara lalai, root ditetapkan ke /home/www. Dengan nama permohonan ini, ia akan menggunakannya ke /home/www/my-deployable-app. Jika anda ingin menukar direktori root anda, anda boleh mengubahnya dalam remote.php.

Dalam fail yang sama, anda mempunyai keupayaan untuk menimpa nama aplikasi dan menentukan direktori untuk aplikasi anda.

Sekarang anda mempunyai penghujung penggunaan, tetapi anda juga perlu menyediakan lokasi kod anda supaya dapat diambil. Anda melakukan ini dengan menyediakan repositori jauh anda di scm.php. Secara lalai ia menggunakan Git, tetapi ia mempunyai sokongan untuk SVN juga. Anda menceritakan alamat repositori kami dan kelayakan bekalan jika perlu. Saya cadangkan anda menggunakan pengesahan utama SSH di sini juga, dan biarkan nama pengguna dan kata laluan kosong.

Oleh kerana anda menambah sambungan ke pelayan pengeluaran, anda ingin menggunakan cabang induk.

Sambungan & Tahap Konfigurasi Khusus

Dalam kebanyakan kes, anda tidak mahu pilihan konfigurasi yang sama untuk semua sambungan atau peringkat anda. Katakanlah, sebagai contoh, anda mahu menggunakan satu lagi cawangan untuk persekitaran pementasan. Rocketeer membolehkan anda mengatasi nilai konfigurasi untuk sambungan dan peringkat menggunakan config.php. Untuk menggunakan cawangan yang dipanggil pementasan pada sambungan pementasan anda, lakukan ini:

Ia menggunakan array bersarang untuk mengatasi nilai konfigurasi. Di bawah kekunci pementasan, cari kekunci yang sepadan dalam fail yang anda hendak ubah. Dalam kes ini, ia cawangan di scm.php.

Menyebarkan, Angkat!

Sekarang anda mempunyai semua yang ditetapkan untuk membuat penempatan yang berjaya. Anda belum memenuhi keperluan anda untuk penyebaran lengkap, tetapi sudah cukup untuk mendapatkan aplikasi anda diklon ke server anda dan dihidangkan kepada pengguna akhir. Mula-mula anda boleh melaksanakan strategi semakan untuk melihat apakah pelayan anda memenuhi keperluan.

Jika semuanya baik-baik saja, anda boleh menggunakan dengan berjalan:

Oleh kerana ini adalah penyebaran pertama anda, Rocketeer akan memastikan semuanya sudah hampir. Alat ini membuat direktori yang diperlukan dan aplikasi kami akan hidup. Sekiranya semuanya berjalan lancar, anda harus mempunyai pembentukan lengkap aplikasi anda di pelayan.

Jika anda mengubah sambungan lalai ke pementasan pada bahagian sebelumnya, ia akan sentiasa digunakan untuk pementasan. Itulah, sudah tentu, melainkan jika anda memberitahu ia untuk digunakan di tempat lain. Apabila anda mahu menggunakan sambungan yang berbeza atau lebih daripada satu, anda menggunakan --on suis.

Ingin melihat apa yang akan berlaku pada pelayan anda apabila anda menekan butang? Gunakan bendera --pretend untuk membiarkan alat memberitahu anda apa yang akan dilaksanakan pada pelayan.

Houston, Kami Ada Masalah. Kami Perlu Rollback.

Sayangnya, kita perlu mengurus penyebaran yang memecah fungsinya atau merosakkan infrastruktur. Kemudian anda perlu membuat pengembalian semula cepat ke pembebasan terkini anda. Nasib baik itu operasi mudah-hanya jalankan arahan:

Oleh kerana ia menyimpan sejumlah binaan, melakukan rollback cepat. Ia mengubah pautan simbol semasa ke pelepasan sebelumnya.

Direktori Dikongsi

Menyediakan direktori yang dikongsi adalah mudah-hanya menambahnya ke array dikongsi yang terdapat di remote.php. Rocketeer akan membuat dan menghubungkan folder ini untuk anda dalam penyebaran selepas. Laluan yang ditentukan harus relatif kepada folder root anda.

Direktori Writable

Kebanyakan direktori yang dikongsi juga memerlukan pelayan web untuk dapat menulis kepada mereka. Menulis log, sesi atau muat naik fail sering tugas yang dilakukan oleh mana-mana aplikasi. Ini anda menambah keizinan.files array dalam remote.php.

Pasang atau Mengemaskinikan Ketergantungan

Memasang atau mengemas kini dependensi adalah sesuatu yang anda perlukan jika aplikasi bergantung kepada sebarang jenis dependensi. Alat ini dilengkapi dengan sokongan untuk pengurus pakej yang paling popular. Mengkonfigurasi apa-apa tidak perlu jika anda mempunyai persediaan lalai untuk mereka. Ia akan mengesan dan memasang atau mengemas kini dependensi untuk Komposer, Npm, Bower dan Bundler. Strategi lalai untuk ketergantungan ditetapkan ke Polyglot. Ini adalah cara alat untuk mengesan dan memasang dependensi untuk pengurus pakej yang berbeza.

Tetapi katakan bahawa anda mahu memasang semua kebergantungan pada pementasan, dan alat menggunakan bendera --no-dev secara lalai. Mungkin anda mahu memasang PHPUnit untuk menjalankan ujian, yang merupakan kebergantungan pembangunan. Dalam strategies.php, anda boleh mencari kunci komposer, yang memberitahu alat bagaimana untuk melaksanakan Komposer. Anda kemudian boleh mengatasi ini dalam config.php:

Migrasi Pangkalan Data

Mengalihkan pangkalan data seringkali sesuatu yang anda mahu lakukan apabila anda mempunyai pelepasan lengkap, sebelum symlinks ke semasa. Apa sahaja alat yang anda gunakan, anda boleh memberitahunya untuk berjalan sebelum deploy.before-symlink. Cangkuk ini tidak biasa, tetapi cangkuk dalaman. Anda perlu mendaftar di tempat lain daripada hooks.php. Anda boleh melakukan ini dalam events.php, yang boleh anda buat jika ia tidak wujud.

Ujian Menjalankan

Ujian lari dalam proses penyebaran adalah cara yang baik untuk memastikan tiada kod atau ujian yang pecah melalui keretakan. Secara lalai, alat ini menggunakan PHPUnit, dan anda boleh menyambung runner ujian untuk dijalankan selepas dependencies dipasang atau dikemas kini.

Sekarang kita akan melihat ia menjalankan PHPUnit pada setiap penggunaan, dan dalam hal sebarang ujian yang gagal akan dibatalkan. Pastikan anda melihat output daripada itu, jika tidak, ia mungkin mempunyai masalah dengan mencari biner PHPUnit atau suite ujian anda.

Alat Binaan Depan

Selalunya aplikasi kami bukan hanya hujung belakang, melainkan mereka adalah contoh REST API. Alat binaan berjalan untuk hujung depan kami adalah tugas biasa dengan alat seperti Grunt, Gulp atau Webpack. Membuat bahagian ini dari proses penyebaran kami tidak lebih menarik daripada menggunakan cangkuk untuk menjalankan arahan seperti:

Ujian depan sering bergantung kepada dependensi juga, jadi jalankan alat setelah memasang atau mengemas kininya.

Petua & Trik

Kemas kini Running

Jika anda tidak mahu membuat pembebasan baru apabila anda menggunakan, anda mempunyai pilihan untuk menjalankan kemas kini. Berhati-hati ketika melakukan ini kerana anda tidak akan dapat kembali ke versi terdahulu, hanya pelepasan sebelumnya. Tetapi ia adalah cara cepat dan mudah mengemaskini permohonan anda dengan perubahan terkini dengan:

Tugas Tempatan

Kadang-kadang dapat menyenangkan menjalankan tugas di lingkungan setempat anda. Katakan anda ingin menjalankan pemeriksaan PHPCS atau membina aset statik anda dan memuat naiknya ke pelayan, menghapus keperluan binari tertentu pada pelayan. Jika anda membuat kelas tugas, anda boleh menetapkan pemboleh ubah yang dilindungi $setempat kepada benar.

Kesimpulan

Proses penyebaran adalah bahagian penting dalam kitaran hayat aplikasi. Alat seperti Rocketeer membolehkan anda dengan mudah untuk membuat perkara ini tidak rumit. Ini benar terutamanya apabila menggunakannya untuk aplikasi PHP kerana ia terintegrasi dengan baik dengannya.

Menulis tutorial pengenalan kepada Rocketeer ternyata menjadi tugas yang sukar. Alat ini sangat fleksibel yang menggariskan garisan di mana hendak berhenti tidak mudah. Saya harap saya mendapat peluang menggunakan alat ini dan bagaimana ia dapat memberi manfaat kepada anda dan permohonan anda. Jika anda ingin menggali lebih mendalam, saya cadangkan membaca dokumentasi penuh. Terdapat banyak lagi alat ini daripada apa yang boleh saya sampaikan dalam artikel ini.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.