[TOC]远程登录Linux游说老板和IT需要云主机部署一个Redmine,今天终于可以用了!楼主来自天翼云。使用其他公司的具体原因这里就不一一列举了。华为提供技术支持。8核,16GB,运行Redmine应该绰绰有余……对吧?上来一看有两台主机,立马提交工单把Windows改成Ubuntu16.04Server64bit。响应速度还是挺快的,很快就看到一台主机换成了Ubuntu。SSH登录还是很基础的东西。我以前学过。按照默认手册,直接$sshroot@host提示:______________________________________________________________________________________WARNING!您的环境指定了无效的语言环境。未知的环境变量是:LC_CTYPE=UTF-8这个LC_ALL会显着影响您的用户体验,包括管理包的能力。您可以通过运行以下命令来安装语言环境:sudoapt-getinstalllanguage-pack-UTF-8或sudolocale-genUTF-8要查看所有可用的语言包,请运行:apt-cachesearch"^language-pack-[a-z][a-z]$"要为所有用户禁用此消息,请运行:sudotouch/var/lib/cloud/instance/locale-check.skip在升级期间,仍然会出现与语言环境相关的错误。更新完成后,我查看了语言环境:root@ecs-XXXX:~#localelocale:CannotsetLC_CTYPEtodefaultlocale:Nosuchfileordirectorylocale:CannotsetLC_ALLtodefaultlocale:NosuchfileordirectoryLANG=en_US.UTF-8LANGUAGE=LC_CTYPE=UTF-8LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_PAPER="en_US.UTF-8"LC_NAME="en_US.UTF-8"LC_ADDRESS="en_US.UTF-8"LC_TELEPHONE="en_US.UTF-8"LC_MEASUREMENT="en_US.UTF-8"LC_IDENTIFICATION="en_US.UTF-8"LC_ALL=搜了一波,有人说用$sudolocale-gen"en_US.UTF-8"$sudodpkg-reconfigurelocales应该写在/etc/environment:LC_ALL=en_US.UTF-8LANG=en_US.UTF-8这时候客服打来电话告诉我系统安装好了。再次登录,发现没有locale警告了。可能当时系统还没有配置好,所以出现了错误提示。先记住这里。在创建用户之前,我尝试在虚拟机上设置Redmine。在我的印象中,我需要两个帐户,一个是我作为管理员的帐户,一个是Redmine的帐户。无论如何,你不能直接用root建立它!root@ecs-XXXX:~#useraddtonylyuroot@ecs-XXXX:~#passwdtonylyuNewpassword:Retypenewpassword:passwd:passwordupdatedsuccessfully两个命令是创建一个帐户,以及(作为root用户)为此用户更改密码。再次使用SSH登录,配置tonylyu的用户环境~然后就看到熟悉的警告:______________________________________________________________________________________________________WARNING!您的环境指定了无效的语言环境。包括管理包的能力。您可以通过运行以下命令来安装语言环境:sudoapt-getinstalllanguage-pack-UTF-8或sudolocale-genUTF-8要查看所有可用的语言包,请运行:apt-cachesearch"^language-pack-[a-z][a-z]$"要为所有用户禁用此消息,请运行:sudotouch/var/lib/cloud/instance/locale-check.skip_________________________________________________________________________________微笑面对它。首先按照提示$sudoapt-getinstalllanguage-pack-UTF-8[sudo]passwordfortonylyu:tonylyuisnotinthesudoersfile。此事件将被报告。好吧,首先我不是sudoer,但是没有可执行sudo命令的权利。其次,我pwd并发现自己在/目录中。不禁怀疑是不是我没有正确创建用户,连用户的家目录都没有。google了一下发现真的有两个不同的命令,一个是useradd,一个是adduser。手动微笑。没关系,删号再练。Linux下删除用户操作:root@ecs-XXXX:~#delusertonylyuperl:warning:Settinglocalefailed.perl:warning:Pleasecheckthatyourlocalesettings:LANGUAGE=(unset),LC_ALL=(unset),LC_CTYPE="UTF-8",LANG="en_US.UTF-8"受支持并安装在您的系统上。perl:警告:回退到后备语言环境("en_US.UTF-8")。删除用户`tonylu'...警告:group`tonylyu'hasnomoremembers.Done.用adduser命令,结果当然更多朋友好:root@ecs-XXXX:~#addusertonylyuperl:warning:Settinglocalefailed.perl:warning:Pleasecheckthatyourlocalesettings:LANGUAGE=(unset),LC_ALL=(unset),LC_CTYPE="UTF-8",LANG="en_US.UTF-8"受支持并安装在您的系统上。perl:警告:回退到后备语言环境("en_US.UTF-8").Addinguser`tonylu'...添加新组`tonylu'(1001)...添加新用户`tonylu'(1001)withgroup`tonylu'...创建主目录`/home/tonylu'...从`/etc/skel'复制文件...Newpassword:Retypenewpassword:passwd:passwordupdatedsuccessfullyChangingtheuserinformationfortonylyuEnterthenewvalue,orpressENTERforthedefaultFullName[]:TonyRoomNumber[]:工作电话[]:家庭电话[]:其他[]:信息是否正确?[Y/n]Yroot@ecs-XXXX:~#下一步是把这个账号变成sudoer。没有研究哪个用户组有sudo权限,直接用visudo给tonylyu所有权限。参考这里。终于可以登录tonylyu了。提示太丑了,想输入vim.bashrc修改一下,发现tab不仅不自动补全,还弹出错误:tonylyu@ecs-XXXX:~$vim.bash-bash:/dev/null:Permissiondeniedbash:_upvars:`-a2':invalidnumberspecifier-bash:/dev/null:Permissiondeniedbash:_upvars:`-a0':invalidnumberspecifiermaybeaBashbug:命令可以完成,但参数无法完成。anyway在.bashrc文件中添加一行:exportPS1="\[\e[31m\]\u\[\e[0m\]@\[\e[34m\]\h\[\e[0m\]:\[\e[33m\W\[\e[91m\]\$\[\e[0m\]"然后解决tab补全问题。这里有意见是没有正确添加用户,就是我上面遇到的useradd和adduser的区别问题。检查.bashrc文件以确认bash自动完成功能正常。尝试换个角度解决问题,查看-bash:/dev/null:Permissiondenied这个错误。按照这里的解决方案建议,使用root账户执行:rm-f/dev/null;mknod-m666/dev/nullc13、再次登录不报错,tab-autocompletion也正常。不过重启后还是会出现这个问题,暂时不展示。然后根据上面查到的信息修改/etc/environment文件,不想再看到locale的错误了。以同样的方式创建一个Redmine账户并进行下一步。安装Redmine环境安装Ruby这里直接复制redmine.org的HowTo:sudoapt-getinstallsoftware-properties-commonsudoadd-apt-repositoryppa:brightbox/ruby-ngsudoapt-getupdatesudoapt-get-yinstallrubyruby-switchruby??-devrilibrubylibssl-devzlib1g-devRVM第一次安装的时候漏了,后面补上。它应该类似于Ruby的虚拟机或解释器,使用redmine帐户运行它:$gpg--keyserverhkp://pgp.mit.edu--recv-keys409B6B1796C275462A1703113804BB82D39DC0E3$curl-sSLhttps://get.rvm。我|bash-sstable,退出redmine账号,重新登录:$rvmlistknown$rvminstallruby??-2.4.1$rvmlistrvmrubies=*ruby??-2.4.1[x86_64]...$ruby??-switch--listruby2.3ruby2.4$ruby??--versionruby2.4.1p111(2017-03-22revision58053)[x86_64-linux]所以这是两个Ruby...安装Redmine下载Redmine官网,不过去github克隆一个向下。这里的操作都是使用redmine账号完成的。$gitclonehttps://github.com/redmine/redmine.git虽然应该一直使用3.4-stable版本,但是为了便于管理,还是分开了一个文件夹。$cp--recursiveredmine/redmine_3.4_stable/$cdredmine_3.4_stable/$gitcheckout3.4-stable$cd..$mvredmineredmine-master$ln-sredmine_3.4_stable/redmine结果如下:lrwxrwxrwx1redmineredmine19Dec2710:30redmine->redmine_3.4_stable//drwxrwxr-x18redmineredmine4096Dec2710:42redmine_3.4_stable/drwxrwxr-x17redmineredmine4096Dec2710:29redmine-master/MySQL是configured用root账户创建一个redmine表,然后创建一个redmine用户并将这个用户配置到redmine配置中,继续复制:$sudomysql-uroot-p>CREATEDATABASEredminecharacterSETutf8;>CREATEuser'redmine'@'localhost'IDENTIFIEDBY'my_password';>GRANTALLprivilegesONredmine.*TO'redmine'@'localhost';>exit$cd~/redmine/config/$cpdatabase.yml.exampledatabase.yml$vimdatabase.ymlinstallRedmine继续复制:$cd~/redmine$geminstallbundler$bundleinstall--withoutdevelopmenttestpostgresqlsqlite值得注意的是这里必须使用redmine账号,不能使用root权限,否则会有稍后是权限问题。错误:使用本机扩展安装mysql20.4.10Gem::Ext::BuildError:错误:无法构建gem本机扩展。...安装mysql2(0.4.10)时发生错误,Bundler无法继续。请确保`geminstallmysql2-v'0.4.10'`在捆绑前成功。日志显示了一堆gcc编译错误。应该是mysql相关的库没有安装完整。$sudoaptinstalllibmysqlclient-dev然后重启,然后报错:Installingrmagick2.16.0withnativeextensionsGem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension。当前目录:/var/lib/gems/2.3。0/gems/rmagick-2.16.0/ext/RMagick/usr/bin/ruby2.3-r./siteconf20171227-28726-vmyl1b.rbextconf.rb检查gcc...是检查Magick-config...没有检查pkg-config...没有无法安装RMagick2.16.0。在/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin中找不到Magick-config或pkg-config没有什么可以说,缺少什么,安装了什么。$sudoaptinstallpkg-configimagemagicklibmagickcore-devlibmagickwand-dev再来一遍,大功告成。我不懂Ruby,所以我不知道这一步是干什么用的。顾名思义,大概就是初始化redmine的数据库:RAILS_ENV=productionrakedb:migrateRAILS_ENV=productionrakeredmine:load_default_data之前RVM的安装漏掉了,重新操作到这一步就遇到了。捆绑安装路径权限问题:尝试写入“/home/redmine/.bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47/versions”时出错。您可能需要授予该路径的写入权限。这是有时不知不觉中猛烈sudo导致的问题。安装PhusionPassenger我这里看不懂,抄HowTo的。添加PhusionPassengersudoapt-keyadv--keyserverkeyserver.ubuntu.com--recv-keys561F9B9CAC40B2F7sudoapt-getinstallapt-transport-httpsca-certificates打开配置文件:sudovim/etc/apt/sources.list。d/passenger.list添加源:debhttps://oss-binaries.phusionpassenger.com/apt/passengertrusty主要更改文件权限:sudochownroot:/etc/apt/sources.list.d/passenger.listsudochmod600/etc/apt/sources.list.d/passenger.list安装:sudoapt-getupdatesudoapt-getinstalllibapache2-mod-passenger配置,打开配置文件sudovim/etc/apache2/mods-available/passenger.conf添加这些行PassengerUserSwitchingonPassengerUserredminePassengerGroupredmine修改Apache2配置文件:/etc/apache2/sites-available/000-default.conf添加这些:<目录/var/www/html/redmine>RailsBaseURI/redminePassengerResolveSymlinksInDocumentRootsudoa2endopassln-s/home/redmine/redmine/public//var/www/html/redminesudoserviceapache2restart生成新的secret:sudosu-redminecdredminerakegenerate_secret_tokenrakedb:migrateRAILS_ENV=productionrakeredmine:plugins:migrateRAILS_ENV=productionraketmp:cache:clearraketmp:sessions:clearexit到这里就结束了,运行visudo删除redmine账号的sudo权限,重启Apache:systemctlrestartapache2.service
