服务器linux怎么添加中文域名
准备:
一台Linux服务器(本文示例使用的是阿里云CentOS 70)
一些做客户端的你可能不知道的姿势:
Linux用户、组、权限问题以及命令的用法
SSH协议相关
其实,这些姿势在《鸟哥的Linux私房菜》一书中有非常详尽的解释,非常推荐。但是通读此书对我们来说时间成本略高。而且如果不是每天都要用真的很难记住。所以,本文只简单介绍这些你在搭建git服务器的过程中可能需要了解的姿势。
我们默认你有一台Linux服务器,并且知道root帐号和密码,以下所有命令中需要替换的部分我会用中文占为,真正的Linux命令是不可能有中文的。#->代表命令提示符。
首先,我们需要使用终端链接到服务器:
#-> ssh 你的服务器IP
之后,服务器会提示你输入账号和密码。此处需要输入root的账号和密码,因为我们要在服务器上安装git以及创建相关用户,需要用到root权限。
相关姿势一,ssh命令、协议:
ssh命令表示连接到服务器,可以以域名为参数,或者以服务器IP为参数。如果服务器ssh协议监听端口不是默认的22需要加上-p选项后边输入要连接服务器的端口号。
ssh协议参见维基百科:https://zhwikipediaorg/wiki/Secure_Shell
登录成功后,我们首先要安装git,有的服务器默认是已经安装的:
#-> yum install git
yum这里就不详细介绍了,它是一款安装软件的工具,会自动下载依赖包,免得我们自己到处找。并且自动安装软件。
安装完毕,我们需要先创建用户组,创建用户组的目的其实是为了控制某一类用户的权限。假设我们需要为设计部搭建一个git服务器,那我们此处需要输入命令:
#-> groupadd 组名称
创建组完成后我们需要创建几个不同的用户:
#-> user add -M 用户名称1
#-> user add -M 用户名称2
创建好用户之后我们还需要把用户添加到之前创建的组中:
#-> usermod -G 组名称 用户名称1
#-> usermod -G 组名称 用户名称2
useradd是添加系统用户的命令,如果不加-M的选项则创建用户的时候会自动在/home目录下创建一个和用户名相同的目录,这个目录通常被称作该用户的家目录,该用户在该目录下拥有读写权限。权限问题会在后边进一步介绍。在此,我们的目的是搭建git服务器,并不想给用户除了git访问以外其他的权限,所以这里使用-M选项让系统不给该用户创建自己的家目录。
usermod是用户管理命令,-G表示将用户添加到某个分组。
为了保留秘钥登录的验证信息,所以我们在/home目录下创建一个公共家目录:
#-> midair 组目录名称
我们还需要禁用掉其他用户ssh到服务器,只留给用户git相关权限,并且修改用户的家目录:
#-> vim /etc/passwd
找到所创建用户的这一行:
用户名称:x:1000:1000::/home/用户名称:/bin/bash
将/bin/bash替换成git-shell的路径(我的服务器是:/usr/bin/git-shell,可以通过#-> which git-shell来查看git-shell所在路径)
将/home/用户名称替换成/home/组目录名称
我们再次进入公共的家目录:
#-> cd /home/组目录名称
创建我们想要的git仓库:
#-> mkdir 新仓库名称git
进入该目录:
#-> cd 新仓库名称git
使用git命令来创建一个裸仓库:
#-> git --bare unit
至此,我们已经在服务器上完成了一个git仓库的创建。我们可以在客户端clone该仓库:
#-> git clone 刚刚创建的用户名称@你的服务器IP:新仓库名称git
虽然已经clone出仓库,但是这时候我们是不能push的,因为新创建的用户此时并没有写权限,我们需要回到服务器:
#-> cd /home
修改组目录所属的分组:
#-> chgrp -R 组目录名称
-R表示递归修改所有子目录所属分组
然后修改组目录的权限:
#-> chmod -R 775 组目录名称
这里-R同样表示递归修改权限
775表示权限,Linux下文件/文件夹权限分为三种,文件拥有者权限、文件所属组成员权限、以及其他人的权限。775三位分别对应这三种权限。每一位中,4表示可读,2表示可写,1表示可执行(文件夹的话表示可进入),最后相加的和表示权限集合。这里我们设置为组目录以及子目录的权限为775表示所拥有者可读、可写、可执行;所属组成员可读、可写、可执行;其他人可读、可执行,但是不可写。
此时我们再次回到客户端,就可以push仓库的修改到服务器了。
感谢阅读,欢迎大家和我一起来讨论任何有趣的事情。
GitLab是GitHub的免费私有库替代方案,并且安装与配置都很方便。
GitLab要求最少4GB内存,支持小团队使用没问题,实测2GB内存的VPS基本没法用,开swapfile也不行,动不动就60秒超时。因此4GB内存是必须的。
关于这一点,内存大户主要是Unicorn,基于ruby的http服务器。Unicorn会在启动后预先占用大部分内存,内存会随着使用逐渐增长,并且不会释放。根据GitLab和Unicorn的官方文档,这不是它们的锅,那么这个锅可能是ruby和rails了。解决方法是unicorn-work-kill,会根据请求次数和内存占用自动重启Unicorn。Omnibus版的GitLab是默认开启的。
GitLab分为社区版和企业版,在未付费的情况下,两者的功能是一样的。并且社区版整合了CI/CD,因此可以满足绝大部分的开发需求。
安装包主要包括Omnibus整合包,Docker、AWS等的云镜像,以及一些第三方维护的版本。其中Omnibus直接整合了所有服务端组件,适合自用和练手。
安装以Omnibus整合包为例,操作系统为Ubuntu1604。
Gitlab需要 curl,openSSH 和 ca-certificates 这几个组件:
不过服务器系统一般自带,所以是可选的。
邮件服务,用于GitLab发送找回密码的邮件:
不过如果服务器没有域名的话,大部分邮箱会拒收邮件,而管理员帐号可以直接重置其他账号的密码,所以是可选的。
官方提供的脚本:
这个脚本会自动添加源到apt 的source list,以及安全key。另外,如果自己服务器在国内,脚本会自动添加清华的镜像,速度还行。
先更新apt缓存:
推荐使用 apt 而不是 apt-get ,前者大多数情况下更简单一点。
然后是安装:
其中 EXTERNAL_URL ,改成自己的域名。没有域名的话,可以直接设置成IP的形式: http://1234 ,这个推测跟nginx服务以及GitLab中的项目地址有关,所以最好正确设置。当然也可以之后在配置文件里更改。
安装完成后,可以在配置文件中修改配置 /etc/gitlab/gitlabrb 。
比如之前的 EXTERNAL_URL :
官方还有一个关于 unicorn 的优化建议:
默认值是2,如果服务器只用于GitLab的话,官方建议是CPU核心数加一,可以提高服务器的响应速度。不过如果内存只有4G,或者服务器同时承载其他服务,就不要改了,以免内存不足。另外,这个参数最小值是2,设为1,服务器可能会卡死。
配置完成后,刷新配置:
每次修改完 gitlabrb ,都要刷新配置。
如果没有报错的话,GitLab就配置完毕并且正常运行了。接下来可以打开浏览器开始访问了。
一台共用服务器上多人共同使用,多个git工程每个工程的地址和账号密码又是不一样。
使用global 此时在/home/usrname下gitconfig 会生成设置全局的git用户名及邮箱账号
如下命令可谓单个工程设置用户名及邮箱账号,存放在工程目录下git/config文件中
1首先为不同的工程配置不同的Git账号
注意:这里git config命令没有带—global,表示这是一个局部的设置,也就是这个用户是当前项目的,而不是全局的。
2为不同的用户生成SSH密钥
一般的Git服务器为了安全,都会需要我们提供一个安全的SSH密钥,默认情况下,生成密钥的文件名都是一样的,但是不同的用户,必须设置不同文件名的密钥文件,否则会发生覆盖。密钥生成后,添加到服务端(如Github)
密钥存放在用户目录下ssh路径下。
//B账户的私钥
添加完后,可以使用ssh-add来查看密钥列表
其中的remore地址是url = git@githubcom :samplegit,这时候,我们需要修改跟密钥对应的地址,上面在配置ssh时,为每个Hostname配置了一个host的别名,这时候,我们就不能使用原来的Hostname来提交了,要用别名来代替Hostname。
###############
首先需要装好CentOS系统,作为测试,你可以选择装在虚拟机上,这样比较方便。这步默认你会,就不讲了。
有了CentOS,那么如何搭建Git服务器呢?
1、首先需要安装Git,可以使用yum源在线安装:
[root@localhost Desktop]# yum install -y git
2、创建一个git用户,用来运行git服务
# adduser git
3、初始化git仓库:这里我们选择/data/git/learngitgit来作为我们的git仓库
[root@localhost git]# git init --bare learngitgit
Initialized empty Git repository in /data/git/learngitgit/
执行以上命令,会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以git结尾。然后,把owner改为git:
[root@localhost git]# chown git:git learngitgit
4、在这里,Git服务器就已经搭得差不多了。下面我们在客户端clone一下远程仓库
Zhu@XXX /E/testgit/834
$ git clone git@192168834:/data/git/learngitgit
Cloning into 'learngit'
The authenticity of host '192168834 (192168834)' can't be established
RSA key fingerprint is 2b:55:45:e7:4c:29:cc:05:33:78:03:bd:a8:cd:08:9d
Are you sure you want to continue connecting (yes/no) yes
Warning: Permanently added '192168834' (RSA) to the list of known hosts
git@192168834's password:
这里两点需要注意:第一,当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host 'githubcom (xxxxxxxx)' can't be established
RSA key fingerprint is xxxxxxxxxx
Are you sure you want to continue connecting (yes/no)
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added 'githubcom' (RSA) to the list of known hosts
这个警告只会出现一次,后面的操作就不会有任何警告了。
如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。
第二,这里提示你输入密码才能clone,当然如果你知道密码,可以键入密码来进行clone,但是更为常见的方式,是利用SSH的公钥来完成验证。
5、创建SSH Key
首先在用户主目录下,看看有没有ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsapub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@examplecom"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到ssh目录,里面有id_rsa和id_rsapub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsapub是公钥,可以放心地告诉任何人。
6、Git服务器打开RSA认证
然后就可以去Git服务器上添加你的公钥用来验证你的信息了。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,即:
1RSAAuthentication yes
2PubkeyAuthentication yes
3AuthorizedKeysFile ssh/authorized_keys
这里我们可以看到公钥存放在ssh/authorized_keys文件中。所以我们在/home/git下创建ssh目录,然后创建authorized_keys文件,并将刚生成的公钥导入进去。
然后再次clone的时候,或者是之后push的时候,就不需要再输入密码了:
Zhu@XXX/E/testgit/834
$ git clone git@192168834:/data/git/learngitgit
Cloning into 'learngit'
warning: You appear to have cloned an empty repository
Checking connectivity done
7、禁用git用户的shell登陆
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
最后一个冒号后改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
代码刚开始的时候都是压缩包,如何提交代码到服务器上面已经呢?下面介绍下方法。
工具/原料Linux系统电脑一台电脑安装git代码管理软件方法/步骤首先拿到的压缩包,一般都是以gz结尾的压缩包,使用tar-zxvfgz进行解压。。
使用gitinit命令进行初始化,。
然后使用gitadd-f(增加-f是为了将工程中gitignore文件里忽略掉的文件全部完整上传服务器,避免出现上传完之后出现缺少文件,编译不过的问题)
gitstatus--ignored(查看一下是否有文件忽略掉了,而没有上传)。
上传完成后使用gitcommit命令提交修改,这种提交只是本地提交而已。
使用gitclone--mirrorgit生成一个镜像文件,。
将git制作为一个压缩包,使用tar-zcvf压缩包名git。
使用scp命令将压缩包上传服务器。scpgzroot@1921688:/usr/disk/git/。
上传完成后,在服务器相关的路径下面,将gz文件解压即可。。
拷贝完之后,重启一下gerrit上的服务。
END注意事项系统安装git代码管理工具程序员10款必备工具抓紧掌握
01·Vim文本编辑器
优点:功能强大、高度可定制,Vi编辑器中最好的一个。
Vim是vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
02·uTools桌面插件工具
优点:简洁美观、插件化,能够节约时间。uTools 是一个极简、插件化的现代桌面软件,通过自由选配丰富的插件,打造得心应手的工具集合。
03·Git分布式版本控制系统
优点:分布式开发、速度快、灵活。Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是LinusTorvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
04·Navicat数据库管理工具
优点:高效、安全,是最好用的数据库管理工具。“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库,它与阿里云、腾讯云、华为云、Amazon RDS、Amazon Aurora、AmazonRedshift、Microsoft Azure、Oracle Cloud 和MongoDB Atlas等云数据库兼容
05·IntelliJ IDEA集成开发环境
优点:业界排名第一的java开发工具。IintelliJIDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、创新的GUI设计等方面的功能可以说是超常的。
06·iTerm2终端管理器
优点:功能强大,一款终端神器。Term2 Mac版可以说是Mac下最好的终端工具。iTerm2拥有多标签、中键复制粘贴、命令记忆、高亮指针、迅捷重复、全屏切换等功能,提升操作效率。
07·Alfred查询和搜索工具
优点:被称作效率神器。
Alfred是 Mac系统上一款专注于效率提升的著名应用,它能帮你快速打开网页、快速进行自定义搜索查看剪贴板历史、快速查询单词等等。Alfred 提供的功能虽然很多,但目的只有一个 - 那就是减少我们工作中的一些重复动作,提升我们的工作效率。
08·Beyond Compare代码比较工具
优点:高效,适用于用于文档、源代码和HTMLoBeyond Compare可以很方便地对比出两份源代码文件之间的不同之处,相差的每一个字节用颜色加以表示,查看方便,支持多种规则对比。
09·Docker开源的应用容器引擎
优点:跨平台,跨服务器,实现应用程序跨平台间的无缝衔接。
Docker 其中包括,镜像、容器、仓库,很简单,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是 web 应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。
10·Postman接口调试与测试工具
优点:功能强大,使用简单且易用性好。Postman是一个简单好用的网页调试软件,很适合开发人员使用,性能稳定流畅,提供接口测试、并发测试等功能,还支持编写测试脚本,快速处理各种HTTP请求,测试数据精准高效。
个人理解,GIT的分布式指的是将数据分散的存储于多台独立的机器设备上。
以GIT和SVN为例:
①SVN:只有一台服务器,其他计算机都是客户端。所有的客户端想要上传数据,下载数据都需要经过服务器。SVN服务器的负载压力大,要求网络畅通。一旦服务器挂掉,那就悲剧了。要么从备份服务器上还原,要么只能慢慢从大家手里收集最新的文件。
GIT:每一台计算机都是服务器。Git可以建立树状的结构,每一台Clone了库的计算机都包含完整的数据。我们可以以该库为服务器,继续进行下载。Git服务器可以在本地进行提交,不需要联网。只需要在网络畅通时push一次即可。一旦服务器挂掉,可以立刻找其他电脑充当服务器。
②Git的Commit是不需要提交到服务器的,每个人可以在自己的计算机上做各种提交版本,不需要考虑其他用户修正的内容。只需要在Push的时候执行一次Merge操作即可。类似于分布式计算中,将大量的工作拆解成小的工作,最后进行一次汇总即可。
0条评论