移动端 | 加入收藏 | 设为首页 | 最新ss | 赞助本站 | RSS
 

freefq.comfree——免费、自由fq——翻墙

困在墙内,请发邮件到freefqcom#gmail.com获得最新免费翻墙方法!
您当前的位置:首页 > 网络翻墙技巧

VPS环境搭建详解 (Virtualenv+Gunicorn+Supervisor+Nginx)

时间:2016-04-24  来源:  作者:beiyuu 条评论

新用户注册购买DigitalOcean的VPS,现在使用我的Refer注册,即刻获得$10赠送,低配的可用两个月。DO采取丧心病狂的低价竞争策略,每月$5即可享用全功能的SSD硬盘VPS,具体去看看这里吧。

注册,选择套餐、机房、系统(我选默认Ubuntu 12),付款成功,可以开始配置了。BF0免费翻墙网

我们目标实现一个支持多个独立域名网站的线上Python环境,这会用到VirtualenvFlaskGunicornSupervisorNginxBF0免费翻墙网

配置用户环境

因为要跑多个站,所以最好将他们完全隔离,每个站对应一个用户,于是我们有了:BF0免费翻墙网

 User        Site   bob         dylan     ##bob用户有一个dylan的站 michael     jackson    ##michael用户有一个jackson的站 

注册成功后,会收到DO发来的root账户的密码邮件,ssh root@你的IP地址登录上去开始添加用户。BF0免费翻墙网

##推荐安装zsh作为默认shell sudo apt-get update sudo apt-get install zsh  ##安装oh-my-zsh插件 cd ~/. ##自动安装脚本 wget --no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh  ##添加用户bob ##参数-d:指定用户目录 ##参数-m:如果目录不存在则创建 ##参数-s:只用用户使用的 shell useradd bob -d /home/bob -m -s /bin/zsh  #添加用户michael useradd michael -d /home/michael -m -s /bin/zsh  ##以上参数也可以修改passwd文件来调整 sudo vim /etc/passwd  ##sudo和用户组管理在 visudo sudo vim /etc/sudoers 

新增用户之后,需要解锁:BF0免费翻墙网

##为新增用户设置一个初始密码即可解锁 passwd bob passwd michael 

用ssh-keygen建立信任关系可以方便登录管理:BF0免费翻墙网

##本地机器 ##会在~/.ssh目录下生成秘钥文件id_rsa、id_rsa.pub ssh-keygen -t [rsa|dsa]  ##复制公钥文件id_rsa.pub scp ~/.ssh/id_rsa.pub bob@digitalocean:~/.ssh  ##VPS上,添加本地机器的信任关系 cd ~/.ssh cat id_rsa.pub >> ~/.ssh/authorized_keys  ##OK,从本地机器登录到VPS的bob用户就不需要密码了 ##同理,也可以添加到michael用户的.ssh目录下 

更多资料可以阅读:BF0免费翻墙网

为每个APP创建Virtualenv

Virtualenv可以为每个Python应用创建独立的开发环境,使他们互不影响,Virtualenv能够做到:BF0免费翻墙网

  • 在没有权限的情况下安装新套件
  • 不同应用可以使用不同的套件版本
  • 套件升级不影响其他应用

安装VirtualenvBF0免费翻墙网

##先安装Python的包管理pip sudo apt-get install pip  ##用pip安装virtualenv sudo pip install virtualenv  ##建议用bob用户登录操作 ##bob用户创建dylan的virtualenv cd /home/bob virtualenv dylan  ##激活virtualenv cd /home/bob/dylan source ./bin/activate  ##取消激活只需 deactivate  ##michael用户如法炮制即可 

安装Flask

Flask是Python流行的一个web框架,但是Flask比Django轻量了许多,使用更加直观,这里并不展开讲Flask的细节,当做一个Hello Wordld来用就好了。BF0免费翻墙网

##安装Flask ##依然在virtualenv activate的环境下 pip install Flask  ##根目录下 vim runserver.py  ##写入Flask的Hello World from flask import Flask app = Flask(__name__)  @app.route('/') def hello_world():     return 'Hello World!'      if __name__ == '__main__':         app.run() 

写入之后,如果在本地机器上可以运行python runserver.py,然后打开127.0.0.1:5000看到Hello World!了,但在VPS,这样不行,等待后面配置吧。BF0免费翻墙网

安装Gunicorn

Gunicorn是用于部署WSGI应用的,任何支持WSGI的都可以,虽说直接python runserver.py这样网站也能跑起来,但那是方便开发而已,在线上环境,还是需要更高效的组件来做。BF0免费翻墙网

##安装Gunicorn ##依然在Virtualenv环境下 pip install gunicorn 

Gunicorn的配置是必须的,因为我们要上两个独立的站,所以不能都用默认的配置:BF0免费翻墙网

##在bob的dylan项目下 cd /home/bob/dylan vim gunicorn.conf  ##文件内写入以下内容 ##指定workers的数目,使用多少个进程来处理请求 ##绑定本地端口 workers = 3 bind = '127.0.0.1:8000'  ##在michael的jackson项目下 cd /home/michael/jackson vim gunicorn.conf  ##写入文件内容 ##与dylan的端口要不一样 workers = 3 bind = '127.0.0.1:8100' 

最终的目录结构应该是这样的BF0免费翻墙网

/home/ └── bob  //用户目录 │   ├── logs │   └── dylan  //项目目录 │       ├── bin │       │   ├── activate │       │   ├── easy_install │       │   ├── gunicorn │       │   ├── pip │       │   └── python │       ├── include │       │   └── python2.7 -> /usr/include/python2.7 │       ├── lib │       │   └── python2.7         ├── local │       │   ├── bin -> /home/shenye/shenyefuli/bin │       │   ├── include -> /home/shenye/shenyefuli/include │       │   └── lib -> /home/shenye/shenyefuli/lib │       │ │       │ //以上目录是Virtualenv生成的 │       ├── gunicorn_conf.py  //Gunicorn的配置文件 │       └── runserver.py  //hello_world程序 │ │ └── michael  //用户目录     ├── logs     └── jackson //项目目录         ├── bin         │   ├── activate         │   ├── easy_install         │   ├── gunicorn         │   ├── pip         │   └── python         ├── include         │   └── python2.7 -> /usr/include/python2.7         ├── lib         │   └── python2.7         ├── local  //以上这些文件都是Virtualenv需要的         │   ├── bin -> /home/shenye/shenyefuli/bin         │   ├── include -> /home/shenye/shenyefuli/include         │   └── lib -> /home/shenye/shenyefuli/lib         │         │ //以上目录是Virtualenv生成的         ├── gunicorn_conf.py  //Gunicorn的配置文件         └── runserver.py  //hello_world程序 

安装Supervisor

Supervisor可以同时启动多个应用,最重要的是,当某个应用Crash的时候,他可以自动重启该应用,保证可用性。BF0免费翻墙网

##安装Supervisor ##sudo安装 sudo apt-get install supervisor  ##启动服务 sudo service supervisor start ##终止服务 sudo service supervisor stop ##也可以直接kill pid ps -A | grep supervisor 

修改了程序代码,或者修改了配置,需要手动重启supervisor服务,尤其是摸不着头脑的错误的时候,重启最能解决问题!BF0免费翻墙网

安装好之后,开始配置各应用的supervisor服务:BF0免费翻墙网

##supervisor的配置文件位置在: /etc/supervisor/supervisor.conf  ##为了代码好看一些,我们分别放置各项目的配置文件 ##新建bob的dylan项目配置文件 touch /etc/supervisor/conf.d/dylan.conf  ##文件内容 [program:dylan] ##注意项目目录和gunicorn的配置文件地址 command=/home/bob/dylan/bin/gunicorn runserver:app -c /home/bob/dylan/gunicorn.conf directory=/home/bob/dylan user=bob autostart=true autorestart=true ##log文件的位置 stdout_logfile=/home/bob/logs/gunicorn_supervisor.log   ##新建michael的jackson项目配置文件 touch /etc/supervisor/conf.d/jackson.conf  ##文件内容 [program:jackson] command=/home/michael/jackson/bin/gunicorn runserver:app -c /home/michael/jackson/gunicorn.conf directory=/home/michael/jackson user=michael autostart=true autorestart=true stdout_logfile=/home/michael/logs/gunicorn_supervisor.log 

写好配置之后:BF0免费翻墙网

##重新读取配置 sudo supervisorctl reread  ##启动服务 sudo supervisorctl start dylan sudo supervisorctl start jackson  ##停止服务 sudo supervisorctl stop dylan sudo supervisorctl stop jackson  ##有问题就重启supervisor的总服务 sudo service supervisor stop sudo service supervisor start 

安装Nginx

有了GunicornSupervisor,本地的环境的算是搭好了,但是我们需要让VPS上的网站从外网可以访问,这时候需要Nginx。BF0免费翻墙网

Nginx是轻量级、性能强、占用资源少,能很好的处理高并发的反向代理软件,是我们的不二选择:BF0免费翻墙网

##安装Nginxx sudo apt-get install nginx  ##启动服务 sudo service nginx start  ##查看VPS的IP地址 ifconfig eth0 | grep inet | awk '{ print $2  }'  ##重启和暂停服务 sudo service nginx restart sudo service nginx stop 

Nginx的配置文件和Supervisor类似,不同的程序可以分别配置,然后被总配置文件include:BF0免费翻墙网

##Nginx的配置文件地址 /etc/nginx/nginx.conf  ##新建bob的dylan项目配置文件 ##在sites-available目录下 touch /etc/nginx/sites-available/dylan.com  ##文件内容 server {         listen   80;             //端口         server_name dylan.com;   //访问域名          root /home/bob/dylan/;         access_log /home/bob/logs/access.log;         error_log /home/bob/logs/access.log;          location / {                 proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;                 proxy_set_header Host $http_host;                 proxy_redirect off;                 if (!-f $request_filename) {                         proxy_pass http://127.0.0.1:8000;  //这里是dylan的gunicorn端口                         break;                 }         } }   ##michael的jackson项目 touch /etc/nginx/sites-available/jackson.com  ##文件内容 server {         listen   80;               //端口         server_name jackson.com;   //访问域名          root /home/michael/jackson/;         access_log /home/michael/logs/access.log;         error_log /home/michael/logs/access.log;          location / {                 proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;                 proxy_set_header Host $http_host;                 proxy_redirect off;                 if (!-f $request_filename) {                         proxy_pass http://127.0.0.1:8100;  //这里是jackson的gunicorn端口                         break;                 }         } } 

配置完成之后,'sudo service nginx restart'重启一下服务,再配置一下本地的Hosts,打开浏览器应该就能看到了。BF0免费翻墙网

完成

至此,一个完整的环境搭建就完成了,推荐试用DigitalOcean的VPS看看,用我的Refer注册立刻可以得到$10的Credit赠送。BF0免费翻墙网

来自http://beiyuu.com/vps-config-python-vitrualenv-flask-gunicorn-supervisor-nginx/BF0免费翻墙网

来顶一下
返回首页
返回首页
欢迎评论:免登录,输入验证码即可匿名评论 共有条评论
用户名: 密码:
验证码: 匿名发表

推荐资讯

Octohide VPN:快如闪电的免费VPN
Octohide VPN:快如闪
原子网络加速器 - 免费高速VPN 一键链接 方便快捷
原子网络加速器 - 免费
foxovpn绿狐VPN——即连即用、快速、安全
foxovpn绿狐VPN——即
Dubai VPN - Free, Fast & Secure VPN下载
Dubai VPN - Free, Fa
相关文章
栏目更新
栏目热门
墙外新闻
读者文摘

你可以访问真正的互联网了。You can access the real Internet.

管理员精中特别提醒:本网站域名、主机和管理员都在美国,且本站内容仅为非中国大陆网友服务。禁止中国大陆网友浏览本站!若中国大陆网友因错误操作打开本站网页,请立即关闭!中国大陆网友浏览本站存在法律风险,恳请立即关闭本站所有页面!对于您因浏览本站所遭遇的法律问题、安全问题和其他所有问题,本站均无法负责也概不负责。

特别警告:本站推荐各种免费科学上网软件、app和方法,不建议各位网友购买收费账号或服务。若您因付费购买而遭遇骗局,没有得到想要的服务,请把苦水往自己肚子里咽,本站无法承担也概不承担任何责任!

本站严正声明:各位翻墙的网友切勿将本站介绍的翻墙方法运用于违反当地法律法规的活动,本站对网友的遵纪守法行为表示支持,对网友的违法犯罪行为表示反对!

网站管理员定居美国,因此本站所推荐的翻墙软件及翻墙方法都未经测试,发布仅供网友测试和参考,但你懂的——翻墙软件或方法随时有可能失效,因此本站信息具有极强时效性,想要更多有效免费翻墙方法敬请阅读本站最新信息,建议收藏本站!本站为纯粹技术网站,支持科学与民主,支持宗教信仰自由,反对恐怖主义、邪教、伪科学与专制,不支持或反对任何极端主义的政治观点或宗教信仰。有注明出处的信息均为转载文章,转载信息仅供参考,并不表明本站支持其观点或行为。未注明出处的信息为本站原创,转载时也请注明来自本站。

鉴于各种免费翻墙软件甚至是收费翻墙软件可能存在的安全风险及个人隐私泄漏可能,本站提醒各位网友做好各方面的安全防护措施!本站无法对推荐的翻墙软件、应用或服务等进行全面而严格的安全测试,因此无法对其安全性做保证,无法对您因为安全问题或隐私泄漏等问题造成的任何损失承担任何责任!

S. Grand Ave.,Suite 3910,Los Angeles,CA 90071

知识共享许可协议
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。