1. 程式人生 > >Git簡單應用:部署程式碼到伺服器

Git簡單應用:部署程式碼到伺服器

我的程式碼沒有放到GitHub上,所以要做的工作是直接將原生代碼部署到伺服器上。scp命令在專案一開始可能還湊合著能用,或者用FTP也不錯,但是Git才是王道啊。

基本過程是:將本地/var/www目錄下的專案目錄提交到本地倉庫,本地倉庫提交更改到伺服器倉庫(把新的程式碼提交上去),伺服器倉庫checkout更改(用新的程式碼覆蓋舊的程式碼),將伺服器倉庫目錄的程式碼複製到/var/www(覆蓋原來的程式碼,完成新程式碼的部署)。

很多人用的GitHub是這麼回事:

本地倉庫 <--> GitHub遠端倉庫

那麼部署到伺服器,就在伺服器上搞個遠端倉庫就得了:

本地 <--> 伺服器遠端倉庫

感謝:

參考文章:Love滿天星 的《使用git做伺服器端程式碼的部署》http://www.cnblogs.com/shaohuixia/p/5503521.html

參考文章:等風的草 的《在Linux伺服器上搭建Git遠端倉庫並Push本地庫》http://blog.csdn.net/u011726984/article/details/52036654

1. 伺服器

首先當然是裝好git啦,apt-get install git就行了。

(1) 新增一個專門用來部署程式碼的使用者

為了安全起見,新建一個專門用於程式碼部署的無特權使用者。我用git作為使用者名稱,輸入如下命令後,會提示設定密碼:

useradd -m git

設定密碼後還會提示輸入一些其他資訊,不用管,enter過去就好。

有些文章(http://www.cnblogs.com/shaohuixia/p/5503521.html)說“也可根據喜好配置成免密碼登陸”,我不太同意這個說法。一開始我就將密碼設為git,然後一覺醒來阿里雲報告說在深圳、歐洲有人以git使用者身份登入了我的伺服器,很不安全啊。畢竟是伺服器,不要被別人胡亂弄點什麼東西上去是吧,所以還是得認真設個密碼。

(2) 新建一個目錄作為接收程式碼的倉庫

我在/home目錄下,新建一個叫git_repository的目錄:

cd home

mkdir git_repository

然後把這個目錄的所有者和所在使用者組都改成git使用者:

chown git:git git_repository

(也可以用chown和chgrp修改)

(3) 噹噹噹,變身倉庫

終於用到git命令了。進入剛剛新建的目錄,初始化為git倉庫:

cd git_repository

git init

然後,讓倉庫接收程式碼提交:(照做,我也不太懂)

git config receive.denyCurrentBranch ignore

2. 本地

沒裝Git的趕緊裝上。

(1) 將專案目錄變為Git倉庫

git init

(2) 提交更改

git commit -a -m "init commit"

-a和-m都是commit命令的引數。-a表示全部;-m表示這次提交的描述資訊,內容一般比較精簡,直接在後面用雙引號附上描述資訊表明本次修改的作用即可。

(3) 可選:提交更改前的一點技巧

再次進行提交時,可以檢視更改的情況:

git status

然後會列出哪些檔案已被跟蹤(track),哪些檔案還未被跟蹤。被跟蹤的檔案會顯示做了什麼修改(change),例如被更改(modified)、刪除(deleted)。未被跟蹤的檔案,可以視情況進行跟蹤,然後才會被提交到倉庫。下面的命令可以將檔案index.html新增到跟蹤列表:

git add index.html

用git status再次檢視更改情況,會有綠色提示index.html是即將提交的新檔案。

(4) 新增遠端主機

命令格式:

 git remote add <主機名> <網址>

例如:git remote add server0 [email protected]:/home/git_repository/.git

其中,server0是自定的主機名,git是上文提到的專門用於提交程式碼的伺服器使用者,192.168.1.110是伺服器IP,/home/git_repository就是伺服器倉庫目錄。

(5) 終於要提交原生代碼到伺服器了

命令格式:

git push server0 master

其中,server0就是剛剛定義的主機名,master是Git分支名。分支是Git進行版本管理的概念,這裡不管那麼多,沒別的分支,用master這個分支就好。

輸入push命令之後,還需要輸入git使用者的密碼才能完成push。

3. 伺服器

又回到伺服器這邊。

(1) 更新倉庫狀態並檢出更改

git update-server-info

git checkout -f

duang~倉庫裡的程式碼就更新好了。

(2) 複製程式碼到實際專案目錄

伺服器上程式碼倉庫所在目錄與實際專案目錄不同,還得複製過去。笨拙的辦法,求輕噴。

cd /var/www

mv MyWebsite MyWebsite.bak#將實際專案目錄改名

cp -r /home/git_repository /var/www#複製

mv git_repository MyWebsite#改名

就醬。附上最近的進展:



相關推薦

Git簡單應用部署程式碼伺服器

我的程式碼沒有放到GitHub上,所以要做的工作是直接將原生代碼部署到伺服器上。scp命令在專案一開始可能還湊合著能用,或者用FTP也不錯,但是Git才是王道啊。 基本過程是:將本地/var/www目錄下的專案目錄提交到本地倉庫,本地倉庫提交更改到伺服器倉庫(把新的程式碼提

DOM的概念和簡單應用使用DOM解析XML數據

rop 手機 實例 des dna 文檔轉換 .get val oms 概念:DOM是Document Object Model的簡稱,即文檔數據模型。 Oracle公司提供了JAXP(Java API for XML Processing)來解析XML。JAXP會把XML

Kubernetes(k8s)中文文件 管理應用部署持續執行的應用_Kubernetes中文社群

譯者:it2afl0rd 在前面的章節裡,我們瞭解瞭如何用 kubectl run 快速部署一個簡單的複製的應用以及如何用pods(configuring-containers.md)配置並生成單次執行的容器。本文,我們將使用基於配置的方法來部署一個持續執行的複製的應用。 用配置檔案生成複製品集合

git簡單應用入門--從實際專案開發出發

針對第一次git的大白,結合自己實際專案開發,梳理了以下內容,希望對初學者有幫助。 1. 拉取遠端指定分支,在指定分支上開發 首先,預設遠端有兩個分支master和dev 1.1 拉取遠端master分支,同時新建本地master分支,本地master分支與遠

並查集及其簡單應用優化kruskal演算法

並查集是一種可以在較短的時間內進行集合的查詢與合併的樹形資料結構 每次合併只需將兩棵樹的根合併即可 通過路徑壓縮減小每顆樹的深度可以使查詢祖先的速度加快不少 程式碼如下: int getfather(int x) //查詢祖先 { if(f

WebSphere(was8.5)安裝簡單應用程式部署安裝

背景:在was8.5中安裝web應用程式準備:was伺服器一臺,並建立好server,專案打成的war包步驟:1.根據was控制檯地址在瀏覽器中輸入控制檯地址進行訪問,輸入使用者名稱密碼進行登入(此處登入的使用者需要有部署應用程式的許可權),登入後看到was主頁資訊2.點選作

用無伺服器應用模型部署伺服器應用 (二)使用無伺服器應用模型的持續整合

作者:薛峰 上一篇文章中我們介紹了AWS 無伺服器應用模型和SAM模板的基本功能和特性,並帶領大家用一個例項體驗了通過CloudFormation部署SAM模板。在這一篇中,我們仍然結合例項講解,為大家繼續介紹使用AWS CodeBuild 構建 Lambda函式以及使用AW

Java Calendar類簡單應用實現視覺化日曆

import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import ja

flask筆記13將Flask應用程式部署在nginx,tornado的簡單方法

flask程式碼,main.py: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world():

git一鍵部署程式碼到遠端伺服器

為什麼說是一鍵? 1.首先,我將git add .,git commit -m ' ',git push配置成了一條命令。 2.然後,通過配置webhook,實現將程式碼push到git.coding

Djangopopup彈出框簡單應用實例

type 正在 elif sta alert cte cti cnblogs sha 效果:在p1.html頁面點擊,彈出p2的彈出框,填寫數據,在 popup_response頁面處理數據 1、視圖函數:views.py from django.shortcuts im

Jekins - Hello world,Jekins + Maven + Git + Tomcat 的簡單應用

定時 contain 管理 www. href oca span hello 應用 Java Web 工程 新建一個簡單的 Java Web 工程,並提交至 GitHub,可參考 Eclipse 提交工程至 GitHub 下載 jekins.war 在

網絡啟動一之IPXE初識及其簡單應用

releases 依賴包 放置 art 配置 ces sdi ftw bootsect IPXE初識及其簡單應用 最近迷上了網絡啟動這回事,查詢了部分文檔,做了基本測試和總結,以供以後參考。 概述:PXE(preboot execute environm

BlockChainPy實現區塊鏈簡單場景應用程序猿記錄在區塊裏的收入記錄圖——Jason niu

bit ide 返回 utf-8 strftime created prev clas post # -*- coding: utf-8 -*- ‘‘‘ Created on 2018年3月11日 @author: Jason niu ‘‘‘ import hashli

容器部署簡單應用

pan rri 簡單應用 .cn 鏡像倉庫 explore esp 組件 ges 開啟hyper-v Win10 安裝 Docker for Windows 配置加速器:註冊阿裏雲 https://cr.console.aliyun.com/#/accelerator 配

SDUT-2772_數據結構實驗之串一KMP簡單應用

strlen out else 結構 ddd http ref limit script 數據結構實驗之串一:KMP簡單應用 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 給定兩個字符串str

技術進階Kubernetes高階架構與應用狀態部署

在瞭解Kubernetes應用狀態部署前,我們先看看Kubernetes的高階架構,方便更好的理解Kubernetes的狀態。 Kubernetes 的高階架構 包括應用程式部署模型,服務發現和負載均衡,內部/外部路由分離、persistentvolume 的使用,部署節點守護程式,部

unbound和mail服務的部署簡單應用

1、服務的介紹 Unbound是一個快取DNS解析器。unbound官網 它使用根區域的內建權威名稱伺服器列表 (。),所謂的根提示。在收到DNS查詢時,它會詢問 答案的根名稱伺服器,幾乎在所有情況下都會收到 授權給頂級域名(TLD)權威名稱伺服器。它

技術進階Kubernetes高級架構與應用狀態部署

控制 大數據分析系統 均衡 縮放 負載平衡 狀態保存 如果 作業 workload 在了解Kubernetes應用狀態部署前,我們先看看Kubernetes的高級架構,方便更好的理解Kubernetes的狀態。 Kubernetes 的高級架構 包括應用程序部署模型,服務發

基礎架構四-APP1使用程式碼倉庫、應用倉庫、yum本地源完成CICD

  前言: 經前面三篇,我們搭建了基於docker和centos7的基礎應用架構:程式碼倉庫、應用倉庫、yum本地源,本篇用一個python flask-uwsgi-nginx環境開發的學籍查詢系統,來演示使用gitlab、registry、yum本地源完成持續整合與釋出的過程