Gitlab 安装,使用已安装Nginx
Gitlab 安装,使用已安装Nginx本来以为安装会很顺利,网上相关文档的也很多,但是很多问题很难找到答案,还是记录一下。第一次安装建议在新服务器上安装,以免对其他服务器影响。当然如果使用docker镜像安装,会比较好。一般也不会有什么问题。1.安装gitlab这里系统是 CentOS 7,官方参考安装介绍路径 https://about.gitlab.com/ins...
Gitlab 安装,使用已安装Nginx
本来以为安装会很顺利,网上相关文档的也很多,但是很多问题很难找到答案,还是记录一下。第一次安装建议在新服务器上安装,以免对其他服务器影响。当然如果使用docker镜像安装,会比较好。一般也不会有什么问题。
1.安装gitlab
这里系统是 CentOS 7 ,官方参考安装介绍路径 https://about.gitlab.com/installation/#centos-7
简单几步即可完成。
打开http和ssh入口
sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld
安装postfix 邮件服务支持
sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix
下载 gitlab并安装
# 下载仓库镜像安装脚本
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
# 安装gitlab 下面地址换成自己github地址
sudo EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ee
根据实际情况修改配置文件,然后启动服务。
参考官方的配置介绍:https://docs.gitlab.com/omnibus/README.html#configuring
一般来说主要是修改
external_url
以及邮件相关。注意:配置 external_url 时, 如果服务器不能访问80端口记得后面跟上自己的端口
邮件配置如腾讯企业邮箱参考:
# vi /etc/gitlab/gitlab.rb gitlab_rails['gitlab_email_from'] = "service@example.com" gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.exmail.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "service@example.com" gitlab_rails['smtp_password'] = "you-password" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true
注意这里腾讯企业邮端口,官网上配的587是不行的。必须465
修改后,使你的配置生效
gitlab-ctl reconfigure gitlab-ctl restart
启动服务后注意开放防火墙端口(访问端口和邮件端口),如果是云服务器还要修改安全访问策略
这时候就可以根据自己的路径进行访问了。
2.使用自己的Nginx
官网参考文档: https://docs.gitlab.com/omnibus/settings/nginx.html#using-an-existing-passenger-nginx-installation
修改配置文件,禁用内嵌 nginx 和 unicorn
external_url 'http://git.example.com' nginx['enable'] = false unicorn['enable'] = false gitlab_rails['internal_api_url'] = 'http://git.example.com' web_server['external_users'] = ['nginx']
安装nginx并增加gitlab的配置文件
在 /etc/nginx/conf.d/ 目录下创建gitlab的nginx配置文件,并导入官网给的配置内容(https://docs.gitlab.com/omnibus/settings/nginx.html#vhost-server-block)
然后把nginx监听的端口和域名改成自己的。
这时候启动nginx会出错,因为缺少passenger ,所以remove nginx。
安装 passenger + Nginx
从给的配置文件看就知道需要这东西,它就是ruby运行的web容器。
官网安装引导路径:https://www.phusionpassenger.com/library/install/nginx/install/oss/el7/
# install EPEL sudo yum install -y epel-release yum-utils sudo yum-config-manager --enable epel sudo yum clean all && sudo yum update -y # repair potential system issues sudo yum install -y ntp sudo chkconfig ntpd on sudo ntpdate pool.ntp.org sudo service ntpd start # install Passenger packages sudo yum install -y pygpgme curl sudo curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo sudo yum install -y nginx passenger || sudo yum-config-manager --enable cr && sudo yum install -y nginx passenger
接下来修改 /etc/nginx/conf.d/passenger.conf
只需要配置 passenger_root,passenger_ruby 的配置在gitlab推荐的配置已经有了(上面第2点)。
passenger_root 的配置必须有,不然直接报错403,我在这一步卡了很久。
通过
gitlab-ctl tail
命令查看gitlab 查看日志,发现错误大致如下:... directory index of "/opt/gitlab/embedded/service/gitlab-rails/public/" is forbidden ...
使用
pas senger-config --root
命令会打印 locations.ini 的路径,贴上去即可。配置好了之后就可以启动 nginx,gitlab-ctl 然后浏览自己的gitlab了。
3.设置开发环境查看运行日志
我在上一步启动后依然报错:
We're sorry, but something went wrong.
此时查看gitlab的日志,没有任务错误信息,然后发现是passenger容器报错,然后查看nginx的错误日志,发现以下错误:
...
Cannot checkout session because a spawning error occurred.
...
看到这个错误依然不知所措,网上查也没什么结果,最后没办法根据错提示,连接到官网:
https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_app_env
按照这上面提到的,在nginx中把环境设置为开发环境,可以优雅打印详细错误日志。
nginx 的gitlab配置文件中加上
passenger_app_env development;
这样运行错误的时候页面会直接把错误信息详细打印出来。
此时我发现是因为启动时安装包 passenger-devel-5.2.2
安装失败,于是手动安装一下。
还有一个错误 gitlab could not find a javascript runtime
手动安装一下nodejs 即可。
yum install -y nodejs
然后运行出现最后的错误,找不到 development 环境的数据库,我把nginx上面环境配置去掉,服务器启动成功。
4.总结
装这样一个很多人都使用的gitlab服务都出现这么多问题,说到底就是像gitlab这样的项目,相关技术栈都是不熟悉的领域,比如passenger是第一次接触。如果是ruby开发者应该会很省事。
更多推荐
所有评论(0)