Home Backend Development PHP Tutorial Detailed tutorial on how to implement git deployment in PHP

Detailed tutorial on how to implement git deployment in PHP

Jul 05, 2018 pm 05:52 PM
git php Automated deployment deploy

Although I have always used git for version management, I have also used git project deployment before, but I have not adhered to this habit. Recently I decided to learn more. The following article mainly introduces you to the method of git deployment in PHP. The tutorial is very detailed through sample code. Friends in need can refer to it.

Background

#On a small site, it is very convenient to directly use git to deploy php code, your remote site and local version Libraries have a version control, making it easy to track down issues or roll back.

Because I work in a small company, the original system still uses traditional ftp upload and deployment. It is too troublesome to deploy and it is not easy to control the online code. I searched for a git deployment tutorial on the Internet, and encountered a lot of pitfalls along the way. Now I post the whole process, hoping it can help everyone. I won’t say much below, let’s take a look at the detailed introduction.

Account related

1

2

3

4

5

6

useradd -m git //新增git账号

ssh-keygen //密钥生成,如果已经有了可略过

su git //切换至git账号

cd ~ //切换到git账号根目录

mkdir .ssh //创建.ssh目录

cat /密钥存放目录/xxx.pub >> ~/.ssh/authorized_keys //设置公钥

Copy after login

Be sure to pay attention to permission issues here. Otherwise, the key login will not take effect. The corresponding permissions of each folder are as follows

1

2

3

4

.ssh文件夹权限 700

id_rsa 600

id_rsa.pub 644

authorized_keys 600

Copy after login

##File permission settings

Put git and the user running nginx or apache on the site in the same user group, such as www


vim /etc/passwd Find the git account and www account, and group the git account The logo is changed to be consistent with the www group logo


The site owner is set to git, and the user group is set to www //Assume that nginx and git both belong to the www user group


Directory permissions are set to 775 and file permissions are set to 664


Warehouse code

Server side

1

2

cd 站点目录

git init //初始化目录

Copy after login

git configuration

1

git config receive.denyCurrentBranch ignore //设置仓库接受代码提交

Copy after login

Set sudo password-free

1

2

3

4

5

6

7

vim /etc/sudoers

# Defaults secure_path 中若没有你要的命令,要注意添加

# php的命令默认需要在 secure_path最后面添加 :/usr/local/php/bin"

在 root ALL=(ALL) ALL 下面一行添加

git ALL=(ALL) NOPASSWD:ALL

# 保存退出 ,这样针对laravel 要重启队列命令就可以使用了.

# sudo php artisan queue:restart

Copy after login

Hook settings

1

2

3

4

5

6

7

8

9

10

11

12

13

14

cd .git/hooks //切换至站点钩子目录

touch post-receive //创建接收提交时钩子

// 钩子文件内容如下:

#!/bin/sh

# 设置账号创建文件的默认权限

umask 002

unset GIT_DIR

cd ..

git checkout -f

# 执行PHP钩子逻辑

/usr/bin/curl http(s)://域名/钩子文字位置/hook.php

# 如果有使用laravel队列则需要重启队列进程,让新代码生效

# sudo php artisan queue:restart

exit 0

Copy after login

hook.php content

1

2

3

4

5

6

7

8

9

10

<?php

/**

 * git上传执行钩子

 */

//TODO 安全限制

//TODO 其他钩子行为

// 清除opcache

if (version_compare(PHP_VERSION, &#39;5.5.0&#39;, &#39;>=&#39;)) {

 opcache_reset();

}

Copy after login

Increase hook executable permissions

1

chmod a+x .git/hooks/post-receive

Copy after login

Local code

1

2

git remote add 远程仓库名称 ssh://git@IP地址:/站点目录 //添加远程仓库

git push 远程仓库名称 master

Copy after login

Special attention

The image directory uploaded by the user must be ignored, otherwise it may be deleted when untracked files are cleared. Deletion of some files, causing catastrophic results

Summary

##Explanation and analysis of binary search algorithm implemented in PHP


Explanation of the half search algorithm implemented in PHP


Example of string matching algorithm implemented in PHP


The above is the detailed content of Detailed tutorial on how to implement git deployment in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP and Python: Different Paradigms Explained PHP and Python: Different Paradigms Explained Apr 18, 2025 am 12:26 AM

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.

Choosing Between PHP and Python: A Guide Choosing Between PHP and Python: A Guide Apr 18, 2025 am 12:24 AM

PHP is suitable for web development and rapid prototyping, and Python is suitable for data science and machine learning. 1.PHP is used for dynamic web development, with simple syntax and suitable for rapid development. 2. Python has concise syntax, is suitable for multiple fields, and has a strong library ecosystem.

PHP and Python: A Deep Dive into Their History PHP and Python: A Deep Dive into Their History Apr 18, 2025 am 12:25 AM

PHP originated in 1994 and was developed by RasmusLerdorf. It was originally used to track website visitors and gradually evolved into a server-side scripting language and was widely used in web development. Python was developed by Guidovan Rossum in the late 1980s and was first released in 1991. It emphasizes code readability and simplicity, and is suitable for scientific computing, data analysis and other fields.

PHP's Impact: Web Development and Beyond PHP's Impact: Web Development and Beyond Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

What to do if the git download is not active What to do if the git download is not active Apr 17, 2025 pm 04:54 PM

Resolve: When Git download speed is slow, you can take the following steps: Check the network connection and try to switch the connection method. Optimize Git configuration: Increase the POST buffer size (git config --global http.postBuffer 524288000), and reduce the low-speed limit (git config --global http.lowSpeedLimit 1000). Use a Git proxy (such as git-proxy or git-lfs-proxy). Try using a different Git client (such as Sourcetree or Github Desktop). Check for fire protection

The Continued Use of PHP: Reasons for Its Endurance The Continued Use of PHP: Reasons for Its Endurance Apr 19, 2025 am 12:23 AM

What’s still popular is the ease of use, flexibility and a strong ecosystem. 1) Ease of use and simple syntax make it the first choice for beginners. 2) Closely integrated with web development, excellent interaction with HTTP requests and database. 3) The huge ecosystem provides a wealth of tools and libraries. 4) Active community and open source nature adapts them to new needs and technology trends.

How to solve the efficient search problem in PHP projects? Typesense helps you achieve it! How to solve the efficient search problem in PHP projects? Typesense helps you achieve it! Apr 17, 2025 pm 08:15 PM

When developing an e-commerce website, I encountered a difficult problem: How to achieve efficient search functions in large amounts of product data? Traditional database searches are inefficient and have poor user experience. After some research, I discovered the search engine Typesense and solved this problem through its official PHP client typesense/typesense-php, which greatly improved the search performance.

How to set the default run configuration list of SpringBoot projects in Idea for team members to share? How to set the default run configuration list of SpringBoot projects in Idea for team members to share? Apr 19, 2025 pm 11:24 PM

How to set the SpringBoot project default run configuration list in Idea using IntelliJ...

See all articles