Saya berharap pasukan EZ akan menangani isu -isu yang saya nyatakan di bawah, dan seperti yang mereka lakukan (jika mereka lakukan) saya akan mengubah jawatan ini dengan sewajarnya. Diberikan, persekitaran saya sangat spesifik: vagrant pada tingkap. Walau bagaimanapun, ini tidak penting. Setiap CMS, App, dan Rangka Kerja yang saya cuba boot dengan cara yang sama boleh dilancarkan dalam masa beberapa minit. Tidak ada sebab dalam dunia web moden hari ini untuk ini tidak berfungsi dengan cara yang sama pada segala -galanya.
Takeaways Key
mari kita tentukan tujuan vagrant. Tujuan Vagrant adalah perpaduan pasukan, dan pariti pengeluaran / pembangunan tanpa mengira sistem operasi tuan rumah. Dengan kata lain, tujuan Vagrant dua kali ganda:
dapat menyediakan setiap ahli pasukan dengan persekitaran pembangunan
yang samamelalui percubaan dengan prosedur pemasangan di bawah, saya dapati bahawa EZ Publish tidak tidak membuat ini mudah. Pada tahun 2014, kebanyakan pemaju profesional dengan pelbagai pelanggan dan/atau projek menggunakan vagrant walaupun semasa soloing - mempunyai persekitaran yang berdedikasi, berasingan, boleh dimusnahkan dan dibina semula untuk setiap projek tidak ternilai apabila mempertimbangkan banyak pilihan, alat, dan versi alat tersebut pelupusan.
Saya kecewa kerana tidak melihat lebih banyak aplikasi mengamalkan pendekatan pertama yang pertama. Sama seperti kita perlu berfikir Mobile terlebih dahulu ketika membangunkan hujung depan, kita harus berfikir VM-pertama ketika membangunkan perpustakaan, rangka kerja dan aplikasi akhir-jika tidak, seluruh kisah pemisahan docker / vagrant yang ditumpukan kepada dunia, dan aplikasi yang gagal Untuk menyesuaikan diri akan ditinggalkan ketika dunia bergerak ke Heroku, Gae, Amazon dan lain -lain.
mari kita mulakan prosedur pemasangan sekarang.
Nota penting: Jika anda tidak berada di Windows, langkah 5 mungkin tidak akan berlaku kepada anda. Jika anda berada di Windows, anda boleh mengelakkan Langkah 5 dengan menjalankan keseluruhan prosedur dalam "tinggi" gitbash / command prompt (dengan menjalankan sama ada sebagai pentadbir). Pengguna admin adalah satu -satunya yang mempunyai kebenaran untuk membuat symlinks pada Windows 8. Terdapat khabar angin yang boleh diperbaiki, tetapi tidak ada yang boleh dipercayai. Menjalankan persekitaran dev anda sebagai admin membuka cacing baru, jadi lakukan itu dengan risiko anda sendiri. Sekiranya ada yang berjaya memberikan kebenaran pengguna Windows 8 biasa untuk membuat symlink melalui Gitbash, sila beritahu saya.
Mempunyai homestead laravel yang lebih baik kotak yang disediakan dan berfungsi. Sekiranya anda melakukan vagrant untuk melihat apakah ia berfungsi, lakukan hancur vagrant supaya kami dapat mengkonfigurasinya.
Buka fail homestead.yaml, dan tambahkan laman web baru:
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
Tambah EZ.App ke fail tuan rumah mesin tuan rumah anda, seperti yang diterangkan di Homestead Laravel meningkatkan tip cepat. Pada asasnya, pastikan fail tuan rumah anda mengandungi 127.0.0.1 ez.app. Sememangnya, juga memetakan folder kongsi.
boot vm dengan vagrant up dan masukkan vm dengan ssh vagrant.
Projek ini memerlukan PHP untuk mempunyai sambungan PHP-INTL dan PHP-XSL yang dipasang. Ia juga akan meminta anda untuk Sendmail di seluruh Wizard Persediaan. Di Homestead, anda boleh memasang semua ini dengan:
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>
<span>cd Code </span><span>composer create-project ezsystems/ezpublish-community ezpub</span>
di atas akan membuat projek EZ untuk digunakan, bukan untuk pembangunan. Untuk mendapatkan versi pembangunan, rujuk halaman GitHub mereka.
Perhatikan bahawa EZ Publish adalah sangat besar, dan akan mengambil sedikit masa untuk melakukan ini. Ia hampir dijamin anda akan memukul had kadar API GitHub "60 permintaan per jam", jadi anda mungkin perlu memasukkan nama pengguna dan kata laluan anda semasa proses pemasangan untuk mendapatkan halangan itu.
Proses ini mungkin gagal beberapa kali disebabkan oleh masa tamat dan jumlah data yang perlu dimuat turun. Jika itu berlaku, keluarkan keseluruhan folder EZPUB dengan RM -RF EZPUB dan menjalankan semula arahan membuat projek di atas-ia akan lebih cepat setiap kali, kerana setiap kali pakej dimuat turun, ia dihidangkan dari cache tempatan pada permintaan berikutnya , bukannya dimuat semula.
Pemasang akan meminta anda untuk beberapa data berhampiran akhir (rahsia, lokasi sandaran, dll). Isi keluar atau tekan hanya masukkan setiap untuk menggunakan lalai.
Sebab mengapa kami tidak menggunakan arkib tar yang disediakan yang dimuat turun dari laman web EZ Publish adalah kerana arkib yang disediakan dibungkus dengan symlinks - dan mereka tidak berfungsi jika VM anda dihoskan pada mesin Windows. Dalam usaha untuk menjaga pelbagai platform mesra, saya telah memilih pendekatan membuat komposer komposer.
kerana ia berdiri, EZ Publish tidak benar -benar halus untuk kes VM atau kelebihan dan ada banyak pasukan yang tidak dipertimbangkan - sebagai contoh, menjalankannya dalam VM pada kotak Windows. Dengan semua kebergantungan, ia dijamin akan pecah di suatu tempat semasa pemasangan. Bagi saya, dan mungkin untuk anda juga, ini akan menjadi skrip pemasangan pos yang memasang aset. Pasang aset sebenarnya adalah sebahagian daripada Symfony yang, di dalam kelas yang melakukannya, sebenarnya memberi amaran terhadap Windows dan Symlinks, tetapi tidak mengambil kira jika projek induk memaksa Symlinks, seperti EZ Publish.
Jika ini berlaku (anda akan mendapat ralat mengenai Symlinks dan beberapa seperti itu), Open Composer.json dan padam garis:
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
salin aset reka bentuk dan bukannya symlink mereka.
Kemudian, lari semula skrip pasca pemasangan dengan melaksanakan:
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>
Langkah 6: Buat pangkalan data
Langkah 7: Sediakan Kebenaran Folder
<span>cd Code </span><span>composer create-project ezsystems/ezpublish-community ezpub</span>
Langkah 8: Jalankan Wizard Persediaan
Lawati Ez.App:8000 dan lihat skrin berikut.
Ini adalah di mana ia menjadi sangat pelik. Tidak ada sebab, ini berlaku. Ya, itu masalah yang masih belum disusun selama dua tahun sekarang - dengan serius, ia adalah bug yang tidak dapat diselesaikan dua tahun dalam projek PHP. Memperbaiki di teras akan mengambil masa tujuh saat kerja, termasuk komit dan menolak (lihat 8.2). Terdapat dua cara untuk mengelilinginya dalam kes kami. Tidak ada yang menyenangkan, jadi terpulang kepada anda untuk memilih satu.
Untuk mengelilinginya, dan saya mati serius, ini bukan jenaka - anda perlu membuka alat dev, dan meletakkan ezsetup pada akhir atribut tindakan borang, kerana secara lalai ia hanya mengatakan indeks .php. Ia membingungkan bagaimana masalah sedemikian masih boleh wujud pada tahun 2014, tetapi di sini kita:
Langkah 8.2: Hacking the Guts
pergi ke ezpubezpublish_legacykernelsetupezsetup.php, dan cari garis:
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>
Langkah 9: Abaikan Kesalahan Wizard
Abaikan amaran ini. Teruskan ke skrin seterusnya (jika anda menggunakan 8.1., Jangan lupa untuk mengubah tindakan borang sekali lagi, jika tidak, anda akan bermula semula).
Pada akhir wizard persediaan, anda akan mendapat ralat masa tamat Nginx. Ini kerana EZ Publish terkenal dengan perlahan kerana ia perlu memproses kedua -dua versi warisan yang mengerikan dan versi baru, dan kerana berjalan pada VM, jadi apabila itu berlaku, hanya mengeluarkan apa -apa kaitan dengan ezsetup dari URL dan menyegarkan semula. Anda kemudian akan disambut dengan kecantikan ini:
ralat dalam skrin di atas berlaku semasa EZ cuba membuat cache fail PHP, seperti ini: /rumah/vagrant/code/ezpub/ezpublish/cache/prod/stash/0FEA6A13C52B4D47/25368F24B045CA84/A1E4F174919D040AF6D06113D677777C9 996F9E/03934AE1C02FFC/9A0364B9E99BB480/DD25E1F0284C8555/CAF9B6 B99962BF5C/2264824231D7A40C/D3D9446802A44259/755D38E6D163E820.PHP (Ugh, jangan tanya ...).
Enjin cache ini tidak cukup pandai untuk melumpuhkan dirinya sekiranya ia gagal, jadi kita perlu melakukannya secara manual.
di ezpubezpublishconfigezpublish.yml Tukar blok stash ke ini:
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
"dalam ingatan" bermaksud memori akan digunakan untuk cache stash, bukannya sistem fail. Kosongkan cache dengan rm -rf ezpublish/cache/* dan refresh. Sekiranya perlu, gantikan enjin cache dengan sesuatu yang lebih baik daripada cache sistem fail kemudian. Saya tidak tahu bagaimana lagi untuk mengurangkan kesilapan protokol untuk MKDIR-Saya tahu ia berkaitan dengan VM, tetapi tidak banyak lagi. Sebarang nasihat dihargai.
anda sekarang mungkin akan disambut oleh satu lagi kebingungan amaran dan kesilapan 503 pada akhir:
Langkah 11: bootstrap.php.cache dan had tindak balas
Amalan caching yang mengerikan diketepikan, kita boleh melumpuhkan keseluruhan kekacauan ini dan hanya memuatkan EZ Publish dalam mod debug dengan mengubah pembolehubah persekitaran persekitaran. Anda boleh mengubahnya di Homestead.yaml supaya ia mendapat autoconfigured semasa boot dengan menambahkannya ke blok "pembolehubah":
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>
Pada ketika ini, pendekatan kedua lebih mudah jika anda mengikuti, kerana jika tidak, anda perlu memulakan dengan keseluruhan proses persediaan jika anda memusnahkan dan naik lagi.
menamatkan ini, anda sepatutnya dapat membuat ini untuk memberi:
Oleh kerana EZ menerbitkan permintaan permintaan yang sangat tidak masuk akal, kita perlu membuat had Nginx:
Di bawah arahan root, tampal yang berikut:
<span>cd Code </span><span>composer create-project ezsystems/ezpublish-community ezpub</span>
simpan, keluar, mulakan semula nginx dengan perkhidmatan sudo nginx mulakan semula.
<span>"symfony-assets-install": "relative",</span>
Beberapa halaman akan berfungsi (blog, Discover), yang lain, baik, tidak begitu banyak. Debugging bundle demo mereka, bagaimanapun, berada di luar skop artikel yang sudah terlalu panjang ini.
Secara lalai, semua aplikasi Symfony mempunyai "app.php" atau dalam kes EZ Publish "index.php" dalam URL mereka atas sebab tertentu. Saya rasa seseorang harus menyokong penyedia dan pemaju hosting dari tahun 2001. Mari kita bawa kedua -dua projek ke abad ke -21 dengan menghapuskannya.
<span> - map: ez.app </span><span> to: /home/vagrant/Code/ezpub/web</span>
seperti arahan di sini, di atas blok "lokasi", tambahkan:
<span>sudo apt-get update </span><span>sudo apt-get install php5-intl php5-xsl sendmail</span>
simpan, keluar, dan mulakan semula nginx dengan perkhidmatan sudo nginx restart.
Selepas proses yang sukar, kami akhirnya selesai. Apa yang membawa saya lebih dari sehari, semoga anda mengambil masa kurang dari 10 minit (tidak termasuk masa muat turun). Sekarang anda juga boleh mencuba CMS yang kuat, walaupun terlalu banyak, terlalu rumit dan ketinggalan zaman pada contoh rumah anda sendiri. Beritahu saya bagaimana ia berfungsi!
Mana -mana CMS yang memerlukan banyak kerja ini untuk bangun dan berjalan pada kotak vagrant adalah, dalam fikiran saya, bukan CMS yang patut memberi perhatian. Pasti, anda mungkin boleh memasangnya dengan mudah ke mesin tuan rumah dan menjalankannya dengan cara itu, tetapi itu bukan pendekatan profesional - persekitaran pembangunan perlu dikemas dan terpencil, dan pemaju perlu dapat memusnahkan dan membina semula contoh dengan keinginan. CMS sepatutnya mempunyai skrip yang dilaksanakan secara automatik, mengesan semua masalah yang mungkin (seperti symlinks tidak tersedia dan beralih ke mod copy keras secara automatik) dan tetapkan semuanya (dari pangkalan data ke kebenaran folder, jika perlu), hanya meminta sudo di sepanjang jalan.
Proses ini telah memasang EZ Publish, tetapi adakah ia berbaloi? Itu terpulang kepada anda untuk membuat keputusan. Walaupun EZ pasti adalah CMS yang kuat, kesukaran untuk masuk ke dalamnya adalah memudaratkan yang terbaik. Anda kini mempunyai titik permulaan yang sama untuk mengujinya, dan saya pasti akan mengetahui lebih lanjut mengenai isu -isu ini dari orang EZ di PHP Summer Camp dan di tempat lain. Sehingga itu, mari kita dapatkan beberapa tutorial EZ yang berlaku di kotak ini, adakah kita?Letakkan maklum balas anda dalam komen di bawah, saya tidak sabar-sabar untuk mendengar pendekatan yang berbeza, terutamanya jika anda cuba melakukan ini pada tuan rumah bukan Windows dan membuat kerja bundle demo!
Bolehkah saya melanjutkan fungsi EZ Publish 5.x? Anda boleh menambah ciri dan fungsi baru menggunakan plugin dan sambungan, dan anda juga boleh menyesuaikan kod teras kerana sifat sumbernya. Walau bagaimanapun, penting untuk diperhatikan bahawa mengubahsuai kod teras boleh menjadikannya lebih sukar untuk memohon kemas kini dan berpotensi memperkenalkan risiko keselamatan.
Atas ialah kandungan terperinci 13 langkah untuk mendapatkan EZ Publish 5.x untuk bekerja di Homestead. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!