gitlab6 nginx配置和启动脚本

cheungmine

2013-10

最近把gitlab安装到了ubuntu12.04.3的虚拟机上了。参考:

https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md
www.nickyeoman.com/blog/system-administration/180-install-gitlab-on-ubuntu

我用了2个虚拟机,vm-gitlab6安装gitlab6和相关的东西:nginx, postfix, redis,ruby,另一个vm-mysqldb4git安装了mysql db。用这2台虚拟机构成了整个内网下的 gitlab服务。由于使用了NAT,还需要在主机上安装nginx,指向vm-gitlab6上的nginx服务。

虚拟机的用户car设置了sudo免密码,参考:

http://blog.csdn.net/cheungmine/article/details/12341005

这样连同主机在内有3台机器:

--------------------------------------------------

host: 192.168.90.122

nginx A

/etc/hosts 中加入:

192.168.90.122  vm-gitlab

--------------------------------------------------

vm-gitlab6: 192.168.122.24

nginx B

gitlab6.1

git

ruby2.0x

postfix

redis

-------------------------------------------------

vm-mysqldb4git: 192.168.122.139

mysqldb for git

nginx A需要指向nginx B,nginx A配置文件(/etc/nginx/sites-available/gitlab)如下:

# GITLAB
# Maintainer: @randx
# App Version: 5.0

upstream gitlab {
  server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
}

server {
  listen 80;     # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea

  ##server_name 192.168.90.122;     # e.g., server_name source.example.com;
  server_name 192.168.90.122 vm-gitlab;     # e.g., server_name source.example.com;
  server_tokens off;     # don't show the version number, a security best practice
  root /home/git/gitlab/public;

  # individual nginx logs for this gitlab vhost
  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;

  location / {
    # serve static files from defined root folder;.
    # @gitlab is a named location for the upstream fallback, see below
    try_files $uri $uri/index.html $uri.html @gitlab;
  }

  # if a file, which is not found in the root folder is requested,
  # then the proxy pass the request to the upsteam (gitlab unicorn)
  location @gitlab {
    proxy_read_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_redirect     off;

    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host              $http_host;
    proxy_set_header   X-Real-IP         $remote_addr;

    proxy_pass http://192.168.122.24;
  }
}

nginx B 配置文件(/etc/nginx/sites-available/gitlab)如下:

# GITLAB
# Maintainer: @randx
# App Version: 5.0

upstream gitlab {
  server unix:/home/git/gitlab/tmp/sockets/gitlab.socket;
}

server {
  listen *:80 default_server;         # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
  #server_name vm-gitlab;     # e.g., server_name source.example.com;
  server_tokens off;     # don't show the version number, a security best practice
  root /home/git/gitlab/public;

  # individual nginx logs for this gitlab vhost
  access_log  /var/log/nginx/gitlab_access.log;
  error_log   /var/log/nginx/gitlab_error.log;

  location / {
    # serve static files from defined root folder;.
    # @gitlab is a named location for the upstream fallback, see below
    try_files $uri $uri/index.html $uri.html @gitlab;
  }

  # if a file, which is not found in the root folder is requested,
  # then the proxy pass the request to the upsteam (gitlab unicorn)
  location @gitlab {
    proxy_read_timeout 300;    # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_connect_timeout 300; # https://github.com/gitlabhq/gitlabhq/issues/694
    proxy_redirect     off;

    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_set_header   Host              $http_host;
    proxy_set_header   X-Real-IP         $remote_addr;

    proxy_pass http://gitlab;
  }
}

由于gitlab都在虚拟机上,每次启动和关闭都很繁琐,特写了启动和关闭的脚本,使操作一键完成,可以重复启动和关闭,这样也方便更改配置。启动脚本如下:

#!/bin/bash
# start-gitlab.sh
# cheungmine@gmail.com
################################################################################
# vm-gitlab6
vm_gitlab6_name='vm-gitlab6'
vm_gitlab6_ip='192.168.122.24'
vm_gitlab6_login='car'
vm_gitlab6_passwd='abc1234'

# vm-mysqldb4git
vm_mysqldb4git_name='vm-mysqldb4git'
vm_mysqldb4git_ip='192.168.122.139'
vm_mysqldb4git_login='car'
vm_mysqldb4git_passwd='abc1234'

echo "================================================================="
echo "start gitlab, mysqldb4git virtual machines and services..."

# check if vm-gitlab6 is running
if (! ping -c 1 $vm_gitlab6_ip); then
    echo -e $vm_gitlab6_name "(" $vm_gitlab6_ip ") is not running!\r\n"
    sudo virsh start $vm_gitlab6_name
fi

# check if vm-mysqldb4git is running
if (! ping -c 1 $vm_mysqldb4git_ip); then
    echo -e $vm_mysqldb4git_name "(" $vm_mysqldb4git_ip ") is not running!\r\n"
    sudo virsh start $vm_mysqldb4git_name
fi

# waiting for vm-gitlab6 is ready
while (! ping -c 1 $vm_gitlab6_ip); do sleep 1; done

sudo virsh list --all

# start services in vm-gitlab6
sshpass -p $vm_gitlab6_passwd ssh $vm_gitlab6_login@$vm_gitlab6_ip "sudo /etc/init.d/gitlab restart"
sshpass -p $vm_gitlab6_passwd ssh $vm_gitlab6_login@$vm_gitlab6_ip "sudo /etc/init.d/nginx restart"

# start local nginx service
echo "start nginx at localhost:" `hostname`
sudo /etc/init.d/nginx restart

echo "gitlab, mysqldb4git virtual machines and services are now ready !"
echo "================================================================="

关闭脚本如下:

#!/bin/bash
# stop-gitlab.sh
# cheungmine@gmail.com
################################################################################
# vm-gitlab6
vm_gitlab6_name='vm-gitlab6'
vm_gitlab6_ip='192.168.122.24'
vm_gitlab6_login='car'
vm_gitlab6_passwd='abc1234'

# vm-mysqldb4git
vm_mysqldb4git_name='vm-mysqldb4git'
vm_mysqldb4git_ip='192.168.122.139'
vm_mysqldb4git_login='car'
vm_mysqldb4git_passwd='abc1234'

echo "================================================================="
echo "stop gitlab, mysqldb4git virtual machines and services..."

# stop services on vm-gitlab6
if (! ping -c 1 $vm_gitlab6_ip); then
    echo -e $vm_gitlab6_name "(" $vm_gitlab6_ip ") is not running!\r\n"
else
    sshpass -p $vm_gitlab6_passwd ssh $vm_gitlab6_login@$vm_gitlab6_ip "sudo /etc/init.d/gitlab stop"
    sshpass -p $vm_gitlab6_passwd ssh $vm_gitlab6_login@$vm_gitlab6_ip "sudo /etc/init.d/nginx stop"
    sleep 10
    sudo virsh shutdown $vm_gitlab6_name
fi

# stop services on vm-mysqldb4git
if (! ping -c 1 $vm_mysqldb4git_ip); then
    echo -e $vm_mysqldb4git_name "(" $vm_mysqldb4git_ip ") is not running!\r\n"
else
    # close mysqldb
    # sleep 5
    sudo virsh shutdown $vm_mysqldb4git_name
    sleep 5
fi

sudo virsh list --all

# stop local nginx service
echo "stop nginx at localhost:" `hostname`
sudo /etc/init.d/nginx stop

echo "gitlab, mysqldb4git virtual machines are shutdown !"
echo "================================================================="

gitlab6 nginx配置和启动脚本的更多相关文章

  1. Centos 配置开机启动脚本启动 docker 容器

    Centos 配置开机启动脚本启动 docker 容器 Intro 我们的 Centos 服务器上部署了好多个 docker 容器,因故重启的时候就会导致还得手动去手动重启这些 docker 容器,为 ...

  2. ubuntu系统自动配置开机启动脚本

    以前一直搞的centos配置开机启动脚本,但是相同方法用在ubuntu系统上就不管用了,非常伤脑筋. 非常感谢  https://www.linuxidc.com/Linux/2017-09/1471 ...

  3. 【Web】Nginx配置开机启动

    在添加nginx服务之后,大家会希望开机伴随启动nginx,避免手动路径输入启动: nginx官方提供了启动脚本:https://www.nginx.com/resources/wiki/start/ ...

  4. nginx配置开机启动及配置sudo授权启动

    1.https://www.cnblogs.com/whatmiss/p/7091220.html        配置开机启动nginx 2.sudo授权其它用户启动 (1)root用户编辑 visu ...

  5. yum 安装nginx(配置开机启动)

    yum install -y nginx 通过yum安装的时候提示下面的错误 [root@localhost yum.repos.d]# yum install nginx 已加载插件:fastest ...

  6. nginx、php-fpm启动脚本

    Nginx官方启动脚本 //service nginx stop|start|restart|reloadtouch /etc/init.d/nginx chmod nginxvi /etc/init ...

  7. nginx二进制编译-启动脚本编写

    首先先把这个文件上传到root目录下,并解压 #tar zxf nginx-1.11.2.tar.gz 写脚本 # vi nginx-running.sh 内容如下 #!/bin/bash #chkc ...

  8. 配置和启动脚本(bash shell学习01)

    bash是 Bourne Again Shell简称 ,从unix系统的sh发展而来 查看当前shellecho $SHELL查看系统支持的shellcat /etc/shells cd /binls ...

  9. nginx init 官方启动脚本

    #!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # descrip ...

随机推荐

  1. Kinect SDK2.0 + OpenCV 3.0 抠人,换背景

    使用Kinect2.0的MultiSourceFrameReader,同时获取DepthFrameSource, ColorFrameSource, BodyIndexFrameSource,然后获取 ...

  2. admin的配置

    当我们访问http://127.0.0.1:8080/admin/时,会出现: 执行命令: 生成同步数据库的脚本:python manage.py makemigrations             ...

  3. Java语言程序设计课程学期总结

    2016-2017 第2学期 课程介绍 编程类课程,76学时(44理论+32实验),学期末还有1周的课程设计. 问题与现状 4个班共120人,教师无法逐一检查每个学生的编程实验. 纸质作业质量不高. ...

  4. Android简易实战教程--第四十八话《Android - Timer、TimerTask和Handler实现倒计时》

    之前本专栏文章中的小案例有写到:第三十九话<Chronometer实现倒计时> 以及使用异步实现倒计时:第三十三话< AsyncTask异步倒计时> 本篇文章 结合Timer. ...

  5. Android存储之SQLite数据库

    Android存储之SQLite数据库数据库 创建数据库 package --; import android.content.Context; import android.database.sql ...

  6. Android Multimedia框架总结(二十)MediaCodec状态周期及Codec与输入/输出Buffer过程(附实例)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53183718 前言:前面几节都是 ...

  7. Android Multimedia框架总结(十五)Camera框架之Camera2补充

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52751055 前言:监于5.0之 ...

  8. ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉

    ROS机器人程序设计(原书第2版)补充资料 (伍) 第五章 计算机视觉 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中使用. 计算机视觉这章分为两 ...

  9. iOS网络基础

    转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51376048 本文出自:[openXu的博客] 常用类 get请求 post请求 NSURL ...

  10. Java学习之参数传递详解

    Java中的参数传递问题: 基本类型:形式参数的改变对实际参数没有影响.在参数传递过程中,形参和实参占用了两个完全不同的内存空间. 引用类型:形式参数的改变直接影响实际参数.在参数传递的过程中,形参和 ...