架设私人git托管服务器
一、服务器端相关工具安装
1. 安装git
1.1 下载安装(git不同版本)
注:上面# 配置全局路径这一步,在后续通过nvm安装nodejs出现冲突,会覆盖/etc/profile.d/*.sh导出的PATH,导致nvm下node路径无效。# 下载git源码 wget -O /tmp/git-2.9.5.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz # 解压 -z:有zip属性的 -x:解压 -v:显示所有过程 -f:必须参数,后面接文件名 tar -zxvf /tmp/git-2.9.5.tar.gz -C /tmp/ # 安装依赖 yum install -y zlib-devel perl-ExtUtils-MakeMaker # 进入解压后目录,检验相关依赖,设置安装路径 cd /tmp/git-2.9.5 ./configure --prefix=/usr/local/git # 编译安装 make && make install # 配置全局路径 # echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile # source /etc/profile # 测试是否安装成功 git --version
建议改为新建/etc/profile.d/git.sh
文件,内容为export PATH=$PATH:/usr/local/git/bin
1.2 git基础配置
git config --global user.name test git config --global user.email test@163.com
2. 安装nvm
- 2.1 下载($HOME改为目标目录,如/usr/local/nvm),参考官方教程-github
export NVM_DIR="$HOME/.nvm" && ( git clone https://github.com/nvm-sh/nvm.git "$NVM_DIR" cd "$NVM_DIR" git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1)` ) && \. "$NVM_DIR/nvm.sh"
- 2.2 配置环境变量
touch /etc/profile.d/nvm.sh // 里面输入以下内容,保存 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
- 2.3 测试
nvm -v
3. nvm安装nodejs
- 3.1 如果当前用户没有权限,优先授权(
sudo chown -R currentUser /usr/local/nvm
)nvm install node # 查看node版本 node -v # use the installed version # nvm use node
- 3.2 配置shell使用node(不进行这一步下次进入就无法执行node命令,应该是PATH没配置)(这一步骤不再需要执行,出现问题是由于上面一步设置错误导致)
在后面加入以下命令,保存vim /etc/profile.d/nvm.sh
# 用户进来使用的node版本,这里node可换为任意已安装版本,如15.7.0 nvm use node
- 3.3 npm配置以及安装一些全局工具
这里全局默认安装位置为npm install pm2 webpack -g
/usr/local/nvm/versions/node/v15.7.0/lib
,也可以修改默认配置# default npm config get prefix # /usr/local/nvm/versions/node/v15.7.0 npm config get cache # /root/.npm npm config get registry # https://registry.npmjs.org/ npm config set prefix otherPath/node_global npm config set cache otherPath/node_cache npm config set registry https://registry.npm.taobao.org
4. 安装mongodb
官网,参考Linux Centos 7安装MongoDB(简单!详细!)
由于官方文档网址打不开,这里保存了一份纯HTML版简略教程-Install MongoDB Community Edition on Red Hat or CentOS,可用于参考(通过curl -o ~/t.html https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
获取,存于2021年1月28日)
简略操作如下:
4.1 新建.repo文件
sudo vim /etc/yum.repos.d/mongodb-org-4.4.repo
存入以下内容:
[mongodb-org-4.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
4.2 安装
sudo yum install mongodb-org # test mongo --version
4.3 启动
sudo systemctl start mongod # 以下命令可以验证服务是否已启用 systemctl -l | grep mongod netstat -natp | grep 27017 # 端口是否已开启 ps -aux | grep mongod # 查看数据库的进程是否存在 # 加入开机启动 sudo chkconfig mongod on
4.4 配置远程访问
修改配置文件mongodb.confsudo vim /etc/mongod.conf # 1. 将bindIp:127.0.0.1 改为0.0.0.0 # 2. 保存后重启服务 sudo service mongod restart # 3. 开放对外端口 # (本人配置了腾讯云服务器安全组,添加了27017端口开放,未做下面这条配置,没发现问题) # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT # 4. 创建数据库用户,首先执行mongo进入repl(交互界面) use admin db.createUser({ user:"root", pwd:"123456", roles:["root"] }) # use test db.createUser({ user:"admin", pwd:"123456", roles:["readWrite", "dbAdmin"] }) # 5. exit退出交互界面后,启用身份验证 # 修改/etc/mongod.conf 里面security:那行 # security: # authorization: "enabled" # disable or enabled # 保存退出并重启服务 sudo service mongod restart
本地idea访问成功
5. 安装nginx
5.1 安装依赖以及下载源码(安装包各种版本)
# 安装依赖(-y, --assumeyes answer yes for all questions) yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel # 下载 -O:下载文件到对应目录,并且修改文件名称 (注意是大写O) wget -O /tmp/nginx-1.19.6.tar.gz http://nginx.org/download/nginx-1.19.6.tar.gz # 解压 tar -zxvf /tmp/nginx-1.19.6.tar.gz -C /tmp/ # 校验依赖,注意使用--prefix参数指定安装路径 cd /tmp/nginx-1.19.6 ./configure --prefix=/usr/local/nginx # 编译安装 # 这一步可能报错 mkdir: cannot create directory ‘/usr/local/nginx’: Permission denied # 提前创建文件夹/usr/local/nginx, # 并设置当前用户具有权限(sudo mkdir /usr/local/nginx && sudo chown -R username:usergroup /usr/local/nginx), # 再用下面命令就行 make && make install
5.2 nginx配置
配置PATH路径:
# 新建文件/etc/profile.d/nginx.sh sudo touch /etc/profile.d/nginx.sh # 输入配置 # 有管理员权限的用:echo "export PATH=$PATH:/usr/local/nginx/sbin" >> /etc/profile.d/nginx.sh sudo vim /etc/profile.d/nginx.sh # 然后手动输入export PATH=$PATH:/usr/local/nginx/sbin,保存退出 # 更新配置 source /etc/profile.d/nginx.sh
配置端口:
修改nginx默认端口vim /usr/local/nginx/conf/nginx.conf
修改http -> server -> listen 80;
将80改为8080
(或你自己想开发的端口)
将#pid logs/nginx.pid
这行前面的#
号删掉
保存然后启动nginxnginx # 停止服务nginx -s stop
如果用的云服务器,记得在安全组里面放开端口
然后就可以访问了(http://serevice-ip:8080/
)配置域名:
修改/usr/local/nginx/conf/nginx.conf
文件中server_name
->server_name localhost test.com
(注意:配置访问域名,域名可以有多个,用空格隔开)
然后访问http://www.test.com:8080
基本ok(注意先配置你的域名解析到服务器ip)
二、在服务器上搭建 Git
1. 放置裸仓库到服务器
前提是能通过SSH连接到服务器(这个比较简单,就是把本地公钥复制到服务器 ~/.ssh/authorized_keys
文件中就行,然后本地shell连接:ssh username@服务器ip
,一般端口默认22不用设置)
- 1.1 新建
/srv/git
目录,并设置权限当前登录用户权限:# 新建目录 sudo mkdir /srv/git # 配置目录owner group chown user:userGroup /srv/git
- 1.2 放置裸仓库
如果是需要根据现有git项目生成:cd /srv/git # 生成新仓库,my-project-项目名 git init --bare my-project.git
# 提取.git目录,先进到项目根目录的上层目录 # 如d:/projects/my-mroject,在d:/projects目录执行下面这句,完了会生成d:/projects/my-project.git目录,要的就是这个 # 跟 cp -Rf my_project/.git my_project.git 效果是一样的 git clone --bare my-project my-project.git # 将本地my-project.git上传至服务器/srv/git目录下 (git.example.com - 服务器ip地址) scp -r my-project.git user@git.example.com:/srv/git
- 1.3 然后本地就可以克隆你的仓库了
git clone user@git.example.com:/srv/git/my-project.git
2. 配置post-receive(hook)进行持续集成
post-receive 挂钩在整个过程完结以后运行,可以用来更新其他系统服务或者通知用户git文档
- 首先进入
/srv/git/blog.git/hooks
,创建post-receive
文件:touch ./post-receive
- 修改
post-receive
文件内容为:#!bin/bash echo "post-receive start"