Popush Deployment Guide - Linux

Popush部署文档 - Linux


By Levy


一. 所需要提前知道的

1.    简单的终端命令

基础的命令操作,如提权(sudo),文件夹的创建(mkdir)、删除(rmdir)、移动(mv),文件()的权限更改(chmod),更改工作目录(cd)等的基础用法。

2.    常见应用程序源码的编译

对于下载得到的源代码包,如若根目录包含configure,则可通过以下方法进行配置安装:

./configure
sudo make
sudo make install

3.    Apt-get的使用

对于相当多的软件,可通过命令

sudo apt-get install <name>

来安装,需要注意的是安装不一定能补全所有的依赖程序。


二.  部署环境

1.    Ubuntu 14.04

Ubuntu 14.04版,优点在于默认配置好gccpython2.7gdbperl以及lua(不确定),从而一定程度简化了配置环境的过程。

2.    各语言编译环境

Node.js进入nodejs官网http://www.nodejs.org/并下载源代码包(部署时使用node-v0.10.32.tar.gz)。解压后使用上文提及make方式安装。(验证方式终端输入node –v,如出现版本号提醒则成功)

GCC: Ubuntu自带组件,忽略。

G++: 使用Apt-get方式安装。(验证方式终端输入 g++ -v,如出现版本号提醒则成功)

GDB: Ubuntu自带组件,忽略。

Python: Ubuntu自带组件,忽略。

Perl: Ubuntu自带组件,忽略。

Ruby: 进入ruby官网https://www.ruby-lang.org/zh_cn/下载源代码包,使用make安装。(验证方式终端输入ruby –v,如出现版本号提醒则成功)

Lua: Ubuntu自带组件,忽略。

JDK进入oracle官网http://www.oracle.com/technetwork/java/javase/downloads/index.html下载JDK,得到编译好的可执行文件包,将其放置于主目录下(假设其名为jdk8),而后终端输入以下代码

sudo mv ~/jdk8 /usr/local/jdk
sudo gedit ~/.bashrc

在打开的gedit编辑文件末尾添加

export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

保存关闭,回到终端输入以下代码

source ~/.bashrc

便配置完成,验证方式输入java –version,如出现版本信息则成功。

3.    Nginx

(1)    在官网http://nginx.org/得到nginx的代码包并解压,但注意不要configure

(2)   在官网http://www.zlib.net/得到zlib的代码包并解压,整个文件夹复制入nginx解压后的目录中,重命名文件夹为zlib

(3)   在官网http://www.pcre.org/得到PCRE的代码包并解压,整个文件夹复制入nginx解压后的目录,重命名为pcre

(4)   进行make,但注意configure时命令为

./configure --with-­pcre=pcre --with-zlib=zlib

(5)   验证终端中运行nginx:

sudo ./nginx

使用浏览器打开localhost,如出现网页则成功。

4.    MongoDB

(1)    在官网http://www.mongodb.org/下载可执行文件包,解压于工作目录下并重命名为mangodb2

(2)    终端输入以下代码,建立数据库工作路径

sudo mv ~/mangodb2 /usr/local/mongodb2
cd /usr/local/mongodb2/bin
sudo mkdir -p /data/db/journal
sudo chmod –R 777 /data/db/

(3)   终端输入以下命令启动mangodb:

cd /usr/local/mongodb2/bin
./mongod --quiet -journal -maxConns=1000 -rest --logpath /data/db/journal/mongdb.log

(4)   需要注意的是,为了保持程序运行,终端不能关闭。同时,每次开机使需执行第三步以启动数据库服务。


三.  部署popush

在确定以上先决条件全部满足后,便可开始着手部署popush:

1.      popush源代码包解压至工作目录下

2.     进入终端输入以下代码:

sudo mv ~/popush /popush
cd /popush
sudo chmod -R 777 /popush
make deploy
sudo service popush start
sudo service nginx start

3.     解压文件etc/mongojs.zip,并将解压后的mongojs文件夹复制替换node_modules/mongojs文件夹;使用node_modules/socket.io/node_modules/socket.io-client/socket.io.js文件替换static/js/lib/socket.io.js文件。

4.     用浏览器打开localhost或本机ip,进入部署完成的popush


四.  调整bug

部署完成后,进行一些微调以修复bug:

1.      static/js/views/file-view.js40行后新增行,输入代码

e.preventDefault();

从而避免打开编辑器时的异常卡顿现象发生。

2.     如果java文件不能正确运行,则在终端中输入

sudo ln –s /usr/local/jdk/bin/javac /usr/local/bin/javac

以帮助后台找到javac地址

3.     如果ruby不能正确运行,则提权打开/etc/apparmor.d/abstractions/ruby文件并在末尾追加/usr/local/lib/ruby/2.1.0/** mr(具体版本请根据本机ruby确定),并在终端输入命令

sudo service apparmor restart

使之生效

4.     如果python不能正确运行,将models/runner.js169行删除,并在此处增加代码:

var env2=process.env;
env2.HOME="/popush/tmp";
that.child=spawn(s.cmd,s.args,{cwd:that.dir,env:env2});


五.  遇到的问题

Linux下配置过程相对顺利,遇到的问题主要体现于对linux权限管理机制不清楚造成的各种bug中。详细如下:

1.    随便使用su的后遗症

为了方便,我在操作很多命令时使用了su(而非sudo)提权,将操作者身份提升至root,但问题就出在此:在root权限下修改的~/.bashrc并不能在普通用户的终端中得到使用,故会出现找不到java的情况。另外,在root权限下建立并设置权限的/data目录在普通权限下也有无法访问的问题,从而导致MongoDB不能顺利启动。

2.   MongoDB端口占用

当有其他MongoDB运行(哪怕因为权限原因不能正常工作)时,其侦听端口会被占用,重新打开的数据库服务会因为无法访问端口而退出。只需kill掉原进程即可。

3.   虚拟机网站发布问题

当一切都正常工作后,却发现部署好的网站只能在虚拟机内部访问,这是由于虚拟机网络服务策略导致。以VMWare Workstation为例,进入虚拟机设置(Ctrl+D)页面将网络适配器属性设置为桥接模式并复制参数后,即可在局域网任何设备通过ip地址访问发布的网站。


六.  感受 & 总结

经过大半天在Ubuntu上的折腾,也算是配置好了网站的所需环境,Linux的确是程序员系统,文件组织、权限控制等方面都充满着程序员式的严谨,如果严格做好每一步,出现奇怪问题的几率远远小于Windows。而正式这种严谨,带来了方便同时也带来了不便,重要还是体现在各种方面的不熟悉上,如果长年使用,在写程序、配置服务器等方面效率应该远远高于Windows

 

2014.10.6


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值