6.8 KiB
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 官网 选择合适的版本,安装 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或域名
<VirtualHost *:80>
ServerAdmin admin@admin.com
ServerAlias YOUR_SERVER_FQDN
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
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
</VirtualHost>
新建一个服务器配置,将上述内容输入
# 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/