Contents

OpenShift基础使用指南五:DIY NGINX

Contents

起因:@sdandroid.com 的DIY NGINX不成功,故尝试搭建

前提:已经创建DIY APP,并SSH到APP。以下命令在SSH中操作。

此文在2013年03月22日测试通过,因Openshift更新导致不能安装成功不在此文讨论之列。

搭建过程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53


  
#下载源码包  
  
cd $OPENSHIFT_DATA_DIR   
  
wget http://nginx.org/download/nginx-1.2.2.tar.gz  
  
tar zxf nginx-1.2.2.tar.gz   
  
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.31.tar.bz2  
  
tar jxf pcre-8.31.tar.bz2  
  
#开始编译nginx  
  
makedir nginx1.2  
  
cd nginx-1.2.2  
  
./configure --with-pcre=$OPENSHIFT_DATA_DIR/pcre-8.31 --prefix=$OPENSHIFT_DATA_DIR/nginx1.2   
  
make  
  
make install  
  
cd $OPENSHIFT_DATA_DIR  
  
#配置NGINX  
  
vim nginx1.2/conf/nginx.conf  
  
http {  
  
…  
  
server {  
  
listen       127.7.192.129:8080;  
  
server_name  127.7.192.129;  
  
…   
  
}  
  
…  
  
}

  

 listen和server_name的IP和端口由

1
2
3
4
5
6
7
8
9


  
echo $OPENSHIFT_INTERNAL_IP  
  
echo $OPENSHIFT_INTERNAL_PORT

  

得到

另外在启动NGINX前 请killall ruby,不然会因端口占用而失败

在$OPENSHIFT_DATA_DIR/nginx.1.2 目录中建立start.sh 和restart.sh

start.sh 内容为

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13


  
#!/bin/bash  
  
# start nginx  
  
killall ruby  
  
$OPENSHIFT_DATA_DIR/nginx1.2/sbin/nginx

  

restart.sh 内容为

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13


  
#!/bin/bash  
  
# restart nginx  
  
killall nginx  
  
$OPENSHIFT_DATA_DIR/nginx1.2/sbin/nginx

  

千万别忘记

1
2
3
4
5
6
7


  
chomd +x start.sh restart.sh

  

在~/app-root/repo/.openshift/action_hooks目录中的start 注释掉

1
2
3
4
5
6
7


  
nohup $OPENSHIFT_REPO_DIR/diy/testrubyserver.rb $OPENSHIFT_INTERNAL_IP $OPENSHIFT_REPO_DIR/diy > $OPENSHIFT_HOMEDIR/diy-0.1/logs/server.log 2>&1 &

  

并在末尾加入

1
2
3
4
5
6
7


  
$OPENSHIFT_DATA_DIR/nginx1.2/start.sh

  

stop 的exit 0 前加入

1
2
3
4
5
6
7


  
killall nginx

  

PS:其它配置方法同nginx

关于Openshift端口使用问题

大部分你熟悉的端口都已经在内外两边都为官方应用保留了,内部你只可以用 15000 – 35530,对外只可以 bind 到 ${OPENSHIFT_INTERNAL_PORT} 也就是 8080,会通过 80 端口转发给外部。 Quote marguerite