博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bitnami gitlab 使用 gitlab-rails 命令
阅读量:6231 次
发布时间:2019-06-21

本文共 7891 字,大约阅读时间需要 26 分钟。

公司的前任配置管理员安装的 gitlab 使用的是 bitnami 出品的全家桶,和官方的 gitlab 安装方式完全不同,包括配置文件、启动的方式、各种命令行工具都不相同。

他离职之后,gitlab 就交给新配置管理员了,但是对方对 gitlab 了解有限,基本上有什么疑难杂症还得找我。

我们的 gitlab 使用的是版本为 8.5.1,安装在 /opt 目录。

因为我们 gitlab 接入了 ldap,并且将 ldap 中的一个用户设置成了管理员,而这次又不知道是什么原因导致它被锁定了。锁定之后无法解锁,报 This user cannot be unlocked manually from GitLab 这样的错,同时也无法删除该用户,因为使用它创建了很多的组。

谷歌了一下,解决办法是通过 gitlab-rails 命令手动修改用户的状态,但是我根本没有找到这个命令。后来不死心,仔细找了找,终于在 /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/bin/ 找到了 rails 命令。

不过执行直接报错:

# /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/bin/rails/usr/bin/env: ruby: No such file or directory复制代码

需要 ruby 环境。虽然可以直接 yum install ruby 来安装,但是自带的版本才 1.8.7,不用装我也知道太老,于是找安装 ruby 的方法。在官网上找到了一种 RVM 安装的方式,这种方式类似于 Python 的 pyenv,可以管理多个 ruby 版本。那没什么好想的,就它了。

安装 ruby

# curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -# \curl -sSL https://get.rvm.io | bash -s stable复制代码

安装在 /usr/local/rvm。安装完成之后提示要将使用 rvm 的用户加入到 rvm 组,不过我这里使用 root,就不管了。

接着就是安装 ruby 了,安装什么版本呢?我也不知道,但是 rvm 知道,执行下面命令即可。

cd /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/usr/local/rvm/bin/rvm list known复制代码

紧接着你就能够看到提示:

Required ruby-2.1.8 is not installed.To install do: 'rvm install "ruby-2.1.8"'复制代码

当然下面还有很多内容,我们不用管,rvm 自动提示我们需要安装 2.1.8 版本的 ruby。之所以会出现这样的情况,我猜测是因为当前目录下存在 Gemfile、Gemfile.lock 等文件。

安装 ruby 2.1.8,请确保 yum 源可用:

/usr/local/rvm/bin/rvm install "ruby-2.1.8"复制代码

安装的位置为 /usr/local/rvm/rubies/ruby-2.1.8/bin/ruby

安装完成之后我们修改 /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/bin/rails 文件,将第一行改为 /usr/local/rvm/rubies/ruby-2.1.8/bin/ruby,然后执行 rails 同样会失败,报对应的组件不存在。

安装依赖

不用慌,因为它依赖的包我们还没有装,这时返回到它的上级目录,就是 htdocs,它下面存在 Gemfile。

然后执行下面命令:

/usr/local/rvm/wrappers/ruby-2.1.8/bundle install复制代码

它开始安装 Gemfile 里面的依赖包,安装过程中难为会报错,因为总有些开发包你没有安装。报错了也不用慌,基本上它都会讲解决办法告诉你。

比如我这里安装 charlock_holmes 失败:

Fetching charlock_holmes 0.7.3Installing charlock_holmes 0.7.3 with native extensionsGem::Ext::BuildError: ERROR: Failed to build gem native extension.    current directory: /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/vendor/bundle/ruby/2.1.0/gems/charlock_holmes-0.7.3/ext/charlock_holmes/usr/local/rvm/rubies/ruby-2.1.8/bin/ruby -r ./siteconf20190319-934-13vhsli.rb extconf.rbchecking for main() in -licui18n... nowhich: no brew in(/usr/local/rvm/gems/ruby-2.1.8/bin:/usr/local/rvm/gems/ruby-2.1.8@global/bin:/usr/local/rvm/rubies/ruby-2.1.8/bin:/usr/lib64/qt-3.3/bin:/usr/local/jdk1.7.0_79/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)checking for main() in -licui18n... no# 这里已经告诉你解决办法************************************************************************************************** icu required (brew install icu4c or apt-get install libicu-dev) ***************************************************************************************************** extconf.rb failed ***Could not create Makefile due to some reason, probably lack of necessarylibraries and/or headers.  Check the mkmf.log file for more details.  You mayneed configuration options.Provided configuration options:	--with-opt-dir	--without-opt-dir	--with-opt-include	--without-opt-include=${opt-dir}/include	--with-opt-lib	--without-opt-lib=${opt-dir}/lib	--with-make-prog	--without-make-prog	--srcdir=.	--curdir	--ruby=/usr/local/rvm/rubies/ruby-2.1.8/bin/ruby	--with-icu-dir	--without-icu-dir	--with-icu-include	--without-icu-include=${icu-dir}/include	--with-icu-lib	--without-icu-lib=${icu-dir}/lib	--with-icui18nlib	--without-icui18nlib	--with-icui18nlib	--without-icui18nlibTo see why this extension failed to compile, please check the mkmf.log which can be found here:  /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0/charlock_holmes-0.7.3/mkmf.logextconf failed, exit code 1Gem files will remain installed in /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/vendor/bundle/ruby/2.1.0/gems/charlock_holmes-0.7.3 for inspection.Results logged to /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0/charlock_holmes-0.7.3/gem_make.outAn error occurred while installing charlock_holmes (0.7.3), and Bundler cannot continue.Make sure that `gem install charlock_holmes -v '0.7.3' --source 'https://rubygems.org/'` succeeds before bundling.In Gemfile:  gitlab_git was resolved to 8.2.0, which depends on    github-linguist was resolved to 4.7.5, which depends on      charlock_holmes复制代码

上面已经说了要我们 brew install icu4c or apt-get install libicu-dev,这里是 macOS 和 Ubuntu 的解决办法,CentOS 的解决方法则是 yum install libicu-devel

有些报错可能不会直接将解决办法告诉你,但是它也将原因告诉你了,比如这个报错:

Fetching rugged 0.24.0b13Installing rugged 0.24.0b13 with native extensionsGem::Ext::BuildError: ERROR: Failed to build gem native extension.    current directory: /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/vendor/bundle/ruby/2.1.0/gems/rugged-0.24.0b13/ext/rugged/usr/local/rvm/rubies/ruby-2.1.8/bin/ruby -r ./siteconf20190319-2037-829l33.rb extconf.rbchecking for gmake... yeschecking for cmake... noERROR: CMake is required to build Rugged.*** extconf.rb failed ***Could not create Makefile due to some reason, probably lack of necessarylibraries and/or headers.  Check the mkmf.log file for more details.  You mayneed configuration options.复制代码

说缺少 cmake,那我们直接 yum install cmake

接下来还遇到两次报错,一次是 mysql2,提示 yum install mysql-devel;还有一次是 pg,说是找不到 libpq-fe.h,使用 yum provides "*/libpq-fe.h",可以找到是 postgresql-devel,yum insall 完事。

需要注意的是,你最好一次性都安装成功,如果只安装一半,会影响 gitlab 的正常使用。最大的体现就是无法合并分支,而且拉分支的话会报 Branch creation was rejected by Git hook 这样的错。

安装 nodejs

再次执行 rails 会报错,提示没有 nodejs 运行环境:

# ./rails console.../opt/gitlab-8.5.1-0/apps/gitlab/htdocs/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs/runtimes.rb:48:in `autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)	from /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/vendor/bundle/ruby/2.1.0/gems/execjs-2.6.0/lib/execjs.rb:5:in `
'复制代码

既然没有,那就下一个呗:

wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xztar xf node-v10.15.3-linux-x64.tar.xz -C /usr/localcd /usr/localln -s node-v10.15.3-linux-x64/ nodeln -s `pwd`/node/bin/node /usr/bin/node复制代码

修改 postgresql 配置

再次运行 ./rails console 成功进入。但是一旦你执行命令,它会报错,连不上 postgresql:

2.1.8 :001 > User.find_by_any_email("EMAIL")PG::ConnectionBad: could not connect to server: No such file or directory	Is the server running locally and accepting	connections on Unix domain socket "/tmp/.s.PGSQL.5432"?复制代码

默认通过 Unix 域套接字来连接数据库,但是这个套接字文件不在 /tmp 下。这个问题解决起来也简单,只需要找到现在的套接字文件,然后连接到 /tmp 目录下即可。当然,你也可以直接修改 pgsql 的配置文件,一次性解决问题。无论如何,我们都得先找到它的配置文件。

其实只要在 gitlab 的安装目录稍微找找就能够找到,我这里就直接打开了:

vim /opt/gitlab-8.5.1-0/postgresql/data/postgresql.conf# 这行就指定了套接字的目录unix_socket_directories = '/opt/gitlab-8.5.1-0/postgresql'复制代码

看到之后,你可能立即就 ls 这个目录了,咦,怎么啥都没有?因为这个文件是以 . 开头,你要通过 -a 参数才能看到,域套接字的格式就是 .s.PGSQL. + 端口。

找到之后,我们直接做个软连接:

ln -s /opt/gitlab-8.5.1-0/postgresql/.s.PGSQL.5432 /tmp/复制代码

继续执行 rails 命令:

# ./rails console2.1.8 :001 > User.find_by_any_email("EMAIL")PG::ConnectionBad: fe_sendauth: no password supplied复制代码

又 ™ 报错了,说没有指定密码。pgsql 虽然连上了,但是却没有密码,于是我赶紧看了下 rails 的使用帮助,但是并没有找到有输入密码的地方,而且我也不知道它的密码是啥。。

又仔细的看了下 rails 命令的输出,于是发现了这行:

Loading development environment (Rails 4.2.5.1)复制代码

说是加载了开发环境的配置,它竟然还有环境之分,这我也是第一次知道,毕竟对 gitlab 了解不多。于是又翻了翻 gitlab 的配置文件,找到了数据库方面的配置,我这里就直接打开了。

# vim /opt/gitlab-8.5.1-0/apps/gitlab/htdocs/config/database.yml## PRODUCTION#production:  adapter: postgresql  encoding: unicode  database: 手动打码  pool: 10  username: 手动打码  password: 手动打码  host: 127.0.0.1  port: 5432  # port: 5432## Development specific#development:  adapter: postgresql  encoding: unicode  database: 手动打码  pool: 5  username: 手动打码  password: 手动打码复制代码

环境挺多,这里只列出了开发和生成环境,因为我这里的开发环境的密码没有配置,所以才会出现上面没有认证的情况。解决办法就是直接使用生产环境的配置,于是看了看 rails 的用法,找到了指定生产环境的方法。

# ./rails console -e production2.1.8 :002 > user = User.find_by_any_email("MAIL")复制代码

顺利的找到一堆结果,然后修改下用户的状态就能够将用户解锁:

2.1.8 :003 > user.state = "active"2.1.8 :004 > user.save2.1.8 :005 > exit复制代码

ok,文章到此结束。

转载地址:http://tiana.baihongyu.com/

你可能感兴趣的文章
java中的object... args参数
查看>>
笔试之大整数相乘
查看>>
转载笔记
查看>>
学习笔记 UpdateXml() MYSQL显错注入
查看>>
lua封装的位运算
查看>>
linux:逐行合并两文件(paste命令)
查看>>
mjpg-stream 视频服务 (1)| 简介与配置树莓派使用
查看>>
makefile learning
查看>>
java语言的发展史
查看>>
homebrew安装nginx,mysql,redis,zookeeper
查看>>
bug报告-常用词汇中英对照表
查看>>
EPOCH, BATCH, INTERATION
查看>>
Linux下安装php环境并且配置Nginx支持php-fpm模块
查看>>
结合typedef更为直观的应用函数指针
查看>>
UVA 10410 Tree Reconstruction
查看>>
映射前和映射后的操作
查看>>
java内存区域与内存溢出异常(2)
查看>>
熟悉HBase基本操作
查看>>
LeetCode:3Sum Closet
查看>>
MATLAB拟合和插值
查看>>