Terdapat beribu-ribu fail dalam laman web Adalah mustahil untuk memuat naik semula keseluruhan laman web menggunakan FTP setiap kali berpuluh-puluh fail ditukar Namun, ia bukanlah satu tugas yang mudah untuk mengingati fail yang telah diubah setiap kali. Selain itu, fail yang diubah suai ini bertaburan dalam banyak folder yang berbeza, menjadikannya lebih menyusahkan untuk mencarinya satu persatu dan memuat naiknya.
Jadi, bagaimanakah anda hanya memuat naik fail yang diubah suai dengan tepat dan mudah setiap kali?
PS. Pendekatan semasa saya ialah memasang git pada persekitaran pembangunan tempatan, memasang git pada pelayan jauh, dan kemudian tolak ke sini dan tarik ke sana. Tetapi anda masih perlu telnet atau ssh ke hujung jauh untuk menarik Adakah terdapat kaedah yang lebih automatik Selepas tekan di sini, pelayan akan mengemas kini secara automatik? Nak dengar cadangan semua.
Kaedah paling mudah ialah memuat naik menggunakan git, yang disertakan dengan cangkuk, yang boleh merealisasikan penggunaan automatik.
Saya telah melakukan perkara yang sama seperti orang yang dipersoalkan sebelum ini, tetapi mudah untuk berbilang orang untuk mengacaukan projek itu.
Terima kasih kepada @Cocbin atas peringatan, berdasarkan yang saya teliti prinsip cangkuk Git, dan kemudian melakukan perkara berikut berdasarkan projek saya:
Pertama sekali, kerana saya menggunakan projek di tapak web github, saya tidak perlu menyediakan sendiri cangkuk rumit, tetapi hanya gunakan webhook yang disertakan dengan github. Webhook akan mencetuskan URL panggil balik yang anda tetapkan apabila anda menolak ke GitHub, dan kemudian anda boleh melakukan operasi tarik dalam URL ini.
Selain itu, pada pelayan anda, jangan gunakan kekunci ssh pembangun sendiri untuk menarik sebaliknya, janakan kunci deployment dan letakkannya dalam github . Ke bawah, ini melengkapkan penggunaan automatik.
Saya juga melihat Hudson dan Jenkins, kedua-duanya adalah alat yang sangat baik Jika anda melakukan projek Java, anda harus menggunakan Jenkins, kerana selepas Hudson diperoleh oleh Oracle, ia beransur-ansur tidak lagi terbuka. Tetapi kerana projek saya dalam PHP, saya tidak mampu untuk memasang satu lagi set Java 8 untuk ini, jadi saya tidak menganggapnya, sebenarnya ada juga Jenkins khas untuk PHP, tetapi ia masih terasa terlalu berat saya. Mungkin saya akan menunggu sehingga projek itu lebih besar pada masa hadapan.
Di atas adalah beberapa pengalaman, semoga dapat membantu pelajar yang mengalami masalah yang sama.
----------Ini adalah garis pemisah yang cantik -------------------------
Tambahan:
Proses operasi sebenar jauh lebih rumit daripada yang dibayangkan Berikut ialah kodnya:
Pada masa ini, apabila terdapat muat naik push, github akan memanggil semula, tetapi masalahnya ialah nama pengguna apache digunakan semasa panggilan balik, bukan nama pengguna yang anda gunakan semasa sshing masuk, jadi anda akan mendapati bahawa nama pengguna apache adalah berbeza untuk itu Direktori tidak mempunyai kebenaran operasi:
error: cannot open .git/FETCH_HEAD: Permission denied
Jadi anda perlu menambah ssh_user pada kumpulan apache dahulu:
Kemudian ubah suai kebenaran:
Sebab mengapa ia diletakkan dalam direktori ini adalah kerana direktori lalai untuk pengguna apache ialah /var/www Sudah tentu, anda boleh menukarnya ke direktori lain, yang mungkin lebih selamat.
Kemudian:
Ia akan menjana fail
known_hosts
dalam folder .ssh apache Kemudian jika anda menggunakan ssh, anda juga perlu menambah dua failid_rsa
danid_rsa.pub
dalam kekunci deploy yang dijana di atas folder .ssh. Kemudian laksanakan arahan berikut beberapa kali untuk memastikan tiada ralat dilaporkan lagi. Kemudian anda boleh cuba menolak versi baharu daripada klien untuk melihat sama ada penggunaan automatik boleh berjaya.================ Versi domestik =====================
Oleh kerana pelayan Github tiada di China, ia sering menyebabkan masalah tidak dapat menolak/menarik, jadi pertimbangkan untuk berhijrah ke git.oschina.net di China. Proses migrasi tidak akan diterangkan secara terperinci. Terdapat beberapa perkara yang perlu anda perhatikan:
Kod tentang webhooks:
Langkah penting perlu dilaksanakan saya terperangkap di sini dan tidak dapat mencari sebab untuk masa yang lama:
Semua orang tahu git ialah kawalan versi
Biar saya bercakap tentang kaedah yang telah saya gunakan:
1. Pertama, anda mesti mempunyai perkhidmatan kawalan versi dan perkhidmatan rsync
2 Pindahkan kod versi stabil yang perlu digunakan daripada pelayan versi folder sementara
3 Nyatakan direktori pelayan rsync ke folder sementara
4 Gunakan perintah rsync untuk menyegerakkan direktori pelayan ke direktori penggunaan anda
5 folder sementara (tambah jumlah), lakukan beberapa operasi kemas kini pada fail folder sementara (jika perlu), rsync menyegerakkan fail folder sementara ke direktori penempatan (bertambah)
Selepas menyelesaikan proses di atas, anda hanya perlu menjalankan shell dalam item 5 di atas setiap kali anda menyerahkan kod.
Walaupun ia agak menyusahkan, ia lebih berkesan Jika anda tidak menyukainya, jangan semburkannya.