项目迁移问题总结
之前在Mac系统下搭建了一套用于自动化构建H5项目的平台,一直用Mac做service服务,现在要将项目迁移到Ubuntu上面,下面是整理了迁移过程中遇到的问题,供以后查阅
Ubuntu下安装git和node
当时在做项目迁移的时候并没有服务器,所以只能用旁边的一台windows安装个双系统,来充当服务器了,安装方法网上很多,不过我推荐一个朋友的博客中的一篇文章,我所安装的Ubuntu的版本是14.04的,并且是server版的,与该博客不符,但是原理相同,贴出博客地址。
Ubuntu 下安装 git
Ubuntu的包管理是apt-get,可以使用如下命令安装git:
sudo apt-get install git
但是这样安装的git版本是比较老的,并不推荐这样安装,如果想安装最新可用版本的可以执行下面的命令:
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
安装完成后可以查看git版本,确定安装是否成功
git --version
Ubuntu 下安装 node
我采用的源码编译安装的方式,首先去node得资源列表找到你要现在的资源包,如我所选择的资源包是:
https://nodejs.org/dist/v5.0.0/node-v5.0.0.tar.gz
选择好资源包后执行下面的命令即可:
# 下载资源
wget https://nodejs.org/dist/v5.0.0/node-v5.0.0.tar.gz
# 解压
tar zxvf node-v5.0.0.tar.gz
# 编译安装
cd node-v5.0.0
./configure
make
make install
cp /usr/local/bin/node /usr/sbin/
查看是否安装成功
node -v
如果正确输出版本号,那么说明我们安装成功了,也有其他安装方式,大家去网上看看吧
Ubuntu默认是用dash解析shell脚本
由于项目中我使用到了shell脚本,所以当项目迁移到Ubuntu的时候报错:
source xxx.sh时提示 source: not found
原因是当时项目在Mac下跑得,Mac解析shell脚本使用的是bash,而Ubuntu默认是用的dash,我们可以使用下面的命令查看:
ls -l `which sh`
如下图
我们可以修改Ubuntu解析shell的方式:
sudo dpkg-reconfigure dash
执行该命令后会出现如下图所示的选项,我们只需要选择否即可:
这时在查看一下Ubuntu解析shell的方式:
ls -l `which sh`
如下图,已经变为了 bash
git的一些小事儿
另外,总结两点git中的一些东西
1、让git忽略文件权限
项目幻想搭建好了之后,我就把代码使用git克隆了下来,由于运行项目的时候报错提示文件权限有问题,于是我就修改了整个项目目录的权限,当我使用git pull拉取项目的时候提示我本地仓库有修改,让我提交后再拉取,我很疑惑因为我刚刚clone下来,毛儿都没动,我改什么了我?后来是用git status查看发现,一大片红色(修改未提交的文件),后来我猜想应该是git把文件权限也纳入管理的范围内了,后来上网一查,果然,不过可以执行下面的命令,使git忽略对文件权限的管理:
git config core.filemode false
这是在使用 git status 查看,会发现工作区干净了,搞定。
2、https方式克隆的项目每次都提示输入用户名和密码
另外还有一个问题,就是当时克隆项目的时候我使用的是https的方式,并不是ssh的方式,https的好处就是告诉,而ssh的好处是安全,正因如此,使用https克隆的项目每次push、pull等操作都要提示输入用户名密码,所以我们要解决这个问题。
第一步:切换到家目录 “~”
cd ~
第二步:创建并编辑 .git-credentials 文件
touch .git-credentials
vim .git-credentials
第三步:把如下内容写入.git-credentials文件中,报错并退出
# {username} 你的git账户名
# {password} 你的git密码
# example.com 你的git仓库域名
# 例子:https://hcysunyang:12345678@github.com
https://{username}:{password}@example.com
第四步:执行下面的命令
git config --global credential.helper store
接下来你就可以执行push、pull等操作了,但是还是会提示你输入一次账号密码的,别着急,仅此一次而已,以后就不会再让你输入了,搞定。
Ubuntu下mongodb启动失败
如下图:
造成启动失败的原因有很多,其中最常见的就是非正常退出,下一次再启动的时候就会遇到如上情况,在Mac下或者windows下,一般我们需要把mongod.lock文件删除就可以成功重启了,但是今天在Ubuntu下却不行,在Ubuntu下记得要把mongodb-27017.sock文件也删除掉:
sudo rm -rf /var/lib/mongodb/mongod.lock
sudo rm -rf /tmp/mongodb-27017.sock
之后重启:
sudo service mongod start
就可以正常启动了
nohup 命令让进程在后台运行
当时我是使用ssh远程登录的,又不想多开窗口,所以希望node服务在后台运行,这时候可以使用nohup命令,该命令能够让进程在后台运行,nohup命令的格式如下:
nohup Command [ Arg ... ] [ & ]
例如我想要node的web服务在后台运行,在我的项目中可以执行下面的代码带到目的:
nohup node admin.js &
Ubuntu下添加用户并赋予root权限
在Ubuntu下可以使用 adduser 命令添加一个用户:
adduser <username>
执行该命令之后会让你为该用户设置密码,但是这样添加的用户是没有使用root权限的用户,我们需要一些配置来赋予该用户使用root权限的能力,修改配置需要编辑 /etc/sudoers 文件,这个文件默认是只读的,所以第一步修改文件为可写:
chmod u+w /etc/sudoers
然后编辑该文件:
sudo vim /etc/sudoers
找到下面这句话:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
在其 %sudo ALL=(ALL:ALL) ALL 下面再添加一行:
%username ALL=(ALL:ALL) ALL
username为你创建用户的用户名,之后保存退出,并还原 sudoers 文件只读的权限:
chmod u-w /etc/sudoers
接下来新用户就可以登录并使用root权限了。
安装完Ubuntu后乱码
修改/etc/default/locale
sudo vim /etc/default/locale
将:
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
修改为:
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
最后reboot一下就可以了:
sudo reboot