From 8228bed18692936178850e0d314de64c2d88ff61 Mon Sep 17 00:00:00 2001 From: Administrator Date: Mon, 21 Mar 2016 18:44:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=20Gogs=20=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gogs.CentOS.md | 294 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 8 +- 2 files changed, 301 insertions(+), 1 deletion(-) create mode 100644 Gogs.CentOS.md diff --git a/Gogs.CentOS.md b/Gogs.CentOS.md new file mode 100644 index 0000000..649e68a --- /dev/null +++ b/Gogs.CentOS.md @@ -0,0 +1,294 @@ +# CentOS 从源代码安装 Gogs + +*以下所有命令,含 # 标识的为 root 用户下执行,含 $ 标识的为 git 用户下执行。可以搭配 `sudo su - git` 和 `exit` 在两者之间切换* + +## 安装或更新 Git + +先删除系统中原有的老版本 git: + + # yum -y remove git + # yum install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-devel openssl-devel + +从官方网站下载源代码进行: + + # yum -y groupinstall 'Development Tools' + # cd ~ + # curl --progress https://www.kernel.org/pub/software/scm/git/git-2.7.3.tar.gz | tar xz + # cd git-2.7.3/ + # ./configure + # make + # make prefix=/usr/local install + +然后使用下面这个命令检测安装是否有效: + + # which git + +## 为 Gogs 添加系统用户 + + # adduser --system --shell /bin/bash --comment 'Gogs' --create-home --home-dir /home/git/ git + +## 安装 Go 语言 + +如果您的系统已经安装要求版本的 Go 语言,可以跳过此小节。 + +### 下载 + +前往 [go lang 官网](https://golang.org/dl/ "https://golang.org/dl/") 选择合适的版本,安装 Go 语言到 /home/git/local/go 目录 + + # sudo su - git + $ cd ~ + $ mkdir local + $ wget https://storage.googleapis.com/golang/go1.6.linux-386.tar.gz + $ tar -C /home/git/local -xzf go1.6.linux-386.tar.gz + +### 设置环境 + +请设置和您系统环境对应的路径 + + # sudo su - git + $ cd ~ + $ echo 'export GOROOT=/home/git/local/go' >> /home/git/.bashrc + $ echo 'export GOPATH=/home/git/go' >> /home/git/.bashrc + $ echo 'export PATH=$PATH:$GOROOT/bin:$GOPATH/bin' >> /home/git/.bashrc + $ source /home/git/.bashrc + +## 安装 Gogs + +### 下载并安装依赖 + + $ go get -u github.com/gogits/gogs + + +### 构建主程序 + + $ cd $GOPATH/src/github.com/gogits/gogs + $ go build + $ cd $GOPATH/src/github.com/gogits/gogs/scripts + $ sh build.sh + +### 放置程序文件 + + $ cd ~ + $ mkdir gogs + $ mkdir gogs/log + $ mv $GOPATH/src/github.com/gogits/gogs/scripts/output/* ~/gogs/ + +### 测试 + + $ cd gogs + $ ./gogs web + +如果您没有发现任何错误信息,则可以使用 Ctrl-C 来终止运行。 + +### 初始化脚本 + + # cp /home/git/go/src/github.com/gogits/gogs/scripts/init/centos/gogs /etc/init.d/gogs + +赋予启动权限,启动服务 + + # chmod +x /etc/init.d/gogs + # service gogs start + +### 设置gogs开机启动 + + # chkconfig gogs on + +## 安装配置 Apache + +这里介绍使用 apache 作为网页服务器,Nginx 请参考官方或其他文档 + +### 安装 + +如有没有安装Apache。 + + # yum install httpd + +注意查看安装的 apache 版本。 + + # vim /etc/httpd/conf/httpd.conf + +在文件末尾添加下面这行: + + Include /etc/httpd/conf/vhosts/*.conf + +然后建立文件夹 + + # mkdir /etc/httpd/conf/vhosts + +这样所有的站点都可以在 vhosts 目录下配置了。 + +### 配置 + +这里以上一节的配置环境为例。 + +将下面的 YOUR_SERVER_FQDN 替换成你的IP或域名 + + + ServerAdmin admin@admin.com + ServerAlias YOUR_SERVER_FQDN + ProxyPreserveHost On + ProxyRequests Off + + AddDefaultCharset off + Order deny,allow + Allow from all + + ProxyPass / http://127.0.0.1:3000/ + ProxyPassReverse / http://127.0.0.1:3000/ + ErrorLog logs/git.jebbs.co_error.log + CustomLog logs/YOUR_SERVER_FQDN_access.log combined env=!dontlog + CustomLog logs/YOUR_SERVER_FQDN.log combined + + +新建一个服务器配置,将上述内容输入 + + # vim /etc/httpd/conf/vhosts/gogs.conf + +启动 apache + + # service httpd start + +测试是否能正常访问 + + http://you.do.main + +设置 apache 随系统启动 + + # chkconfig httpd on + +此时应该可以看到初始化的页面,但如果要配合MySQL使用,还需要进行下面的操作。 + +## 安装 mysql 数据库 + +### CentOS 6 安装数据库 + +gogs 要求 mysql 5.5 以上版本(utf8mb4支持),但 CentOS/Red Hat (RHEL) 官方自带的 mysql 版本为 5.1。 + +首先安装软件源,查看系统架构 + + $ exit + # getconf LONG_BIT + +根据系统架构选择合适的 epel 源: + +64位 + + # rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm + +32位 + + # rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm + +导入 key: + + # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 + +添加 remi 源 + + # rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm + # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi + +安装、启动、添加自启动 + + # yum --enablerepo=remi update + # yum --enablerepo=remi list mysql mysql-server + # yum --enablerepo=remi install mysql mysql-server + # service mysqld start + # chkconfig mysqld on + +### CentOS 7 安装数据库 + +MySQL 已经不再包含在 CentOS 7 的源中,而改用了 MariaDB,先搜索 MariaDB 现有的包: + + # rpm -qa | grep mariadb + +然后全部删除: + + # rpm -e --nodeps mariadb-* + +然后创建 /etc/yum.repos.d/MariaDB.repo: + + # vim /etc/yum.repos.d/MariaDB.repo + +将以下内容添加至该文件中: + + # MariaDB 10.0 CentOS repository list - created 2015-05-04 19:16 UTC + # http://mariadb.org/mariadb/repositories/ + [mariadb] + name = MariaDB + baseurl = http://yum.mariadb.org/10.0/centos7-amd64 + gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB + gpgcheck=1 + +然后运行下面命令安装 MariaDB 10.0: + + # yum install MariaDB-server MariaDB-client + +然后启动 MariaDB 服务: + + # service mysql start + # chkconfig mysql on + +## 配置数据库 + +运行 mysql_secure_installation: + + # mysql_secure_installation + +登录到 mysql + + # mysql -uroot -p + +### 创建 git 数据库用户 + +注意修改这里的密码(123),后续配置时需要提供这里设置的密码。 + + > CREATE USER 'git'@'localhost' IDENTIFIED BY '$password'; + > use mysql; + > UPDATE user SET password=PASSWORD("123") WHERE user='git'; + > FLUSH PRIVILEGES; + +### 创建数据库 + + > SET storage_engine=INNODB; + > DROP DATABASE IF EXISTS gogs; + > CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; + +### 赋予权限 + + > GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gogs`.* TO 'git'@'localhost'; + > \q + +尝试使用新用户连接数据库: + + $ mysql -u git -p -D gogs + > \q + +# 升级 Gogs + +## 保存旧的配置文件 + + $ cd ~ + $ cp -a gogs/custom ./ + +## 更新源码以及依赖 + + $ cd ~ + $ go get -u github.com/gogits/gogs + +## 移除旧的二进制 + + $ rm gogs + +## 或将旧的二进制进行备份 + + $ mv gogs gogs.$(date +%Y-%m-%d).old + +## 重新构建 Gogs + +重复教程中的构建与放置动作 + +## 放回设置文件 + + $ cd ~ + $ mv -a custom gogs/ diff --git a/README.md b/README.md index 2c75408..39285ab 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,15 @@ +# 安装 Gogs + +[在 CentOS 上从源码安装 Gogs](./Gogs.CentOS.md "./Gogs.CentOS.md") + +Gogs 是一套比 Gitlab 占用内存少得多的系统,尤其适用小内存的VPS。与 512M 内存勉强可以运行的 Gitlab 7 相比,Gogs 仅占用几十兆内存,且运行速度快很多。此外 Gogs 的安装也更加简单。 + # 安装 Gitlab [在 CentOS 上安装 Gitlab 7](./Gitlab7.CentOS.md "./Gitlab7.CentOS.md") [在 CentOS 上安装 Gitlab 8](./Gitlab8.CentOS.md "./Gitlab8.CentOS.md") -# 为什么还要安装 Gitlab 7 +## 为什么还要安装 Gitlab 7 Gitlab 7 版本内存占用低,实测 GitLab 7.14.3 + GitLab Shell 2.6.11 可以运行在 512M 内存 + 64M SWAP 的主机上。