Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk melaksanakan penggunaan automatik git bagi skrip php
Cara melaksanakan penggunaan skrip php secara automatik: 1. Pasang git; 2. Klonkan kod gudang; kunci; 6 , isikan nama domain webhook dan muat naik skrip php.
Persekitaran pengendalian artikel ini: sistem linux5.9.8, Git versi 2.30.0, komputer DELL G3
git automatik skrip php penyebaran Bagaimana untuk melaksanakan?
git php gunakan skrip automasi webhook untuk mencapai penyegerakan kod
Artikel ini akan memperkenalkan skrip automatik webhook penggunaan php git untuk mencapai penyegerakan kod
Git dengan penggunaan automatik webhook bukanlah teknologi yang canggih, tetapi terdapat banyak lencongan dalam penggunaan pertama, terutamanya saya seorang pemula dalam Linux Artikel ini merekodkan masalah yang mudah untuk membuat kesilapan dan masalah yang dihadapi
Sediakan
untuk menggunakan nama domain web dan bahagian pelayan yang boleh diakses. skrip php dalam persekitaran lnmp. Warehouse code cloud gitee
Proses automatik, push->gitee warehouse webhook->linux server php script pull
Mula-mula buat gudang pada gitee code cloud
Secara tempatan gunakan protokol ssh untuk berkomunikasi dengan komunikasi gudang, komputer tempatan saya adalah windows, jadi saya tidak akan memperkenalkan cara menjana kunci awam ssh di sini saya akan memperkenalkannya di bawah Linux
1 >
yum install git2. Klonkan kod gudang "Nota Pastikan anda menggunakan protokol ssh, selebihnya adalah berdasarkan ssh》
git initgit clone git@gitee.com:zhuyanbin/HiAdmin.git3. Tukar kebenaran linux dan ubah suai konfigurasi
Kerana webhook kami memberitahu pelayan bahawa ia adalah akses luaran, pengguna pentadbir di sini lalai Ia adalah pengguna www, jadi www mesti diberi kebenaran yang mencukupi
vim /etc/passwd 添加下面的一行 www:x:1001:1001::/home/www:/bin/bash1001 ialah id kumpulan pengguna . Gunakan arahan berikut untuk melihat id pengguna www.
cat /etc/groupTukar www Pengguna menyertai sudoers dan boleh melaksanakan shell tanpa kata laluan#(1) Tambahkan kebenaran untuk menulis sudoers ke pengguna semasa
chmod u+w /etc/sudoers#(2) Edit sudoers
vim /etc/sudoers#(3) Cari untuk Benarkan root menjalankan sebarang arahan di mana-mana sahaja, dan tulis kandungan berikut di bawah baris yang sepadan pengguna akar:
www ALL=(ALL) NOPASSWD:/usr/bin/git#(4) Ambil semula kebenaran menulis kepada sudoers
chmod u-w /etc/sudoers
Ubah suai konfigurasi php-fpm.conf untuk menetapkan pelawat. Berikut ialah www, yang merupakan konfigurasi lalai php
4. Akhirnya jana Kunci (langkah ini mesti dihasilkan oleh pengguna www. ps: Saya telah terperangkap di sini selama dua hari. Saya telah menggunakan akaun pentadbir akar untuk menjana kunci Saya mencuba pelbagai kaedah pada Baidu selama beberapa hari, dan kemudian beralih kepada pengguna www untuk menjana kunci kunci awam
mkdir -p /home/www/.sshLihat kunci awam
chown -R www.www /home/www/.ssh
ssh-keygen -t rsa
Kunci awam akan dijana Salin ke tempat pengisian kunci awam gudang kod gitee
https ://gitee.com/profile/sshkeyscat /home/www/.ssh/id_rsa.pub
Tambahan: Terdapat dua tempat untuk gitee mengisi kunci awam, satu adalah kunci awam kunci gudang Jika anda mengisi awam kunci gudang, kebenaran git pelayan hanya akan mempunyai kebenaran tarik Yang lain adalah kunci awam akaun Jika anda mengisi kunci awam akaun peribadi, akan ada kebenaran tarik, tolak dan lain-lain terus di sini. Kunci awam akaun peribadi
5. Akhir sekali isikan nama domain webhook dan jalankan skrip php Isi nama domain alamat pemberitahuan webhook (tetapan kata laluan kosong, tiada pengesahan kata laluan dalam php nanti , jika anda menganggap keselamatan, sila tetapkan kata laluan kemudian)
Muat naik php script handler hook.php (laksanakan arahan linux)
Pada ketika ini, selepas mengkonfigurasi kod pelayan di atas, ia boleh disegerakkan secara automatik untuk melengkapkan penggunaan automatik
chdir("/home/wwwroot/default/HiAdmin"); exec("git pull origin master 2>&1", $out); foreach($out as $v) { echo iconv( 'GB2312','UTF-8', $v)."<br>"; }
Masalah berlaku
skrip 1.php tidak dilaksanakan Sebabnya ialah banyak php fungsi dalam php.ini tidak dihidupkan secara lalai, termasuk pelaksanaan skrip linux functions exec(), shell_exec(), dll. Tunggu
untuk mencari php.ini, cari baris disable_functions dan padamkan fungsi yang sepadan, atau ulas keseluruhan baris
2. Tidak dapat melaksanakan arahan git pull
Soalan 1
maut: Tidak dapat baca dari repositori jauh.
Sila pastikan anda mempunyai hak akses yang betul dan repositori itu wujud.
归根结底还是因为linux权限的问题,我遇到的是出现一下问题
到这里的原因是因为root生成git公钥密钥,而切换到www后生成公钥密钥后就成功了(上述第四小步生成公钥,一定使用www生成公钥密钥)
问题二
error: insufficient permission for adding an object to repository database .git/objects
fatal: failed to write object
fatal: unpack-objects failed
这个还是没有权限执行git命令,只需要执行以下
第一步:cd .git/objects 定位到git下的objects文件下 第二步: ls -al 查看git库的所有者(git用户 git组) 第三步: chown -R yourname:yourgrounp * 或者sudo chmod 777 -R .git/objects 提交
最后解决完以上问题,大功告成,上一张成功的截图
自己的后端语言是php,这里可以用多种方式去实现执行linux脚本,nodejs,python等等
推荐学习:《PHP视频教程》
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penggunaan automatik git bagi skrip php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!