日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python virtualenv nginx_Ubuntu下搭建Nginx+supervisor+pypy+virtualenv

發布時間:2025/3/8 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python virtualenv nginx_Ubuntu下搭建Nginx+supervisor+pypy+virtualenv 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

系統:Ubuntu 14.04 LTS

搭建python的運行環境:Nginx+Supervisor+Pypy+Virtualenv

軟件說明:

Nginx:通過upstream進行負載均衡

Supervisor:管理python進程

Pypy:用Python實現的Python解釋器PyPy is a fast, compliant alternative implementation of the Python language (2.7.6 and 3.2.3).

Virtualenv:搭建python虛擬環境

環境搭建:

安裝pypy:

Shell

sudo apt-get install pypy

1sudoapt-getinstallpypy

安裝virtualenv:

Shell

sudo apt-get install virtualenv

1sudoapt-getinstallvirtualenv

創建pypy+virtualenv虛擬環境:

Shell

#在當前目錄下創建PYPYENV

virtualenv -p /usr/bin/pypy PYPYENV

cd PYPYENV

1

2

3#在當前目錄下創建PYPYENV

virtualenv-p/usr/bin/pypyPYPYENV

cdPYPYENV

導出原有 python 安裝的包列表:

Shell

pip freeze > list.txt

1pipfreeze>list.txt

進入virtualenv(PYPYENV)虛擬環境,同時導入list.txt列表:

Shell

source bin/activate

pip install -r list.txt

1

2sourcebin/activate

pipinstall-rlist.txt

退出virtualenv虛擬環境:

Shell

deactivate

1deactivate

安裝 supervisor:

Shell

sudo apt-get install supervisor

1sudoapt-getinstallsupervisor

配置supervisor:

Shell

vim /etc/supervisor/supervisord.conf

1vim/etc/supervisor/supervisord.conf

添加

Shell

[inclue]

files=conf.d/*.conf

1

2[inclue]

files=conf.d/*.conf

Shell

vim /etc/supervisor/conf.d/xxxx.conf

1vim/etc/supervisor/conf.d/xxxx.conf

代碼示例:

Shell

[program:blog]

command= runinenv.sh /pathaa/PYPYENV python /pathbb/xxx.py --port=80%(process_num)02d --log_file_prefix=/tmp/xxx-80%(process_num)02d.log

directory=/path

numprocs=4

process_name=%(program_name)s-80%(process_num)02d

autostart=true

autorestart=true

startsecs=3

stdout_logfile=/tmp/xxx.log

stderr_logfile=/tmp/xxxerror.log

1

2

3

4

5

6

7

8

9

10[program:blog]

command=runinenv.sh/pathaa/PYPYENVpython/pathbb/xxx.py--port=80%(process_num)02d--log_file_prefix=/tmp/xxx-80%(process_num)02d.log

directory=/path

numprocs=4

process_name=%(program_name)s-80%(process_num)02d

autostart=true

autorestart=true

startsecs=3

stdout_logfile=/tmp/xxx.log

stderr_logfile=/tmp/xxxerror.log

runinenv.sh文件代碼示例:

Shell

#!/bin/bash

VENV=$1

if [ -z $VENV ]; then

echo "usage:runinenv [virtualenv_path] CMDS"

exit 1

fi

source ${VENV}/bin/activate

shift 1

echo "Executing $@ in ${VENV}"

exec "$@"

deactivate

1

2

3

4

5

6

7

8

9

10

11#!/bin/bash

VENV=$1

if[-z$VENV];then

echo"usage:runinenv [virtualenv_path] CMDS"

exit1

fi

source${VENV}/bin/activate

shift1

echo"Executing $@ in ${VENV}"

exec"$@"

deactivate

supervisor管理

啟動:

Shell

sudo supervisord

1sudosupervisord

管理:

Shell

sudo supervisorctl

supervisord > reload

supervisord > status

supervisord > start

supervisord > stop

1

2

3

4

5

6sudosupervisorctl

supervisord>reload

supervisord>status

supervisord>start

supervisord>stop

安裝Nginx:

Shell

sudo apt-get install nginx sudo /etc/init.d/nginx start

1sudoapt-getinstallnginxsudo/etc/init.d/nginxstart

瀏覽器訪問localhost即可看到Welcome to Nginx。

修改nginx配置:

Shell

vim /etc/nginx/sites-available/default

1vim/etc/nginx/sites-available/default

Shell

#在http中添加

upstream xxxx{

ip_hash;

server localhost:8001;

server localhost:8002;

server localhost:8003;

server localhost:8004;

……

}

#在server中修改:

location / {

proxy_pass http://xxxx

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14#在http中添加

upstreamxxxx{

ip_hash;

serverlocalhost:8001;

serverlocalhost:8002;

serverlocalhost:8003;

serverlocalhost:8004;

……

}

#在server中修改:

location/{

proxy_passhttp://xxxx

}

nginx壓力測試:

Shell

sudo apt-get install apache2-utils

# 并發數1000,總請求數10000

ab -c 1000 -n 10000 http://localhost/

1

2

3

4sudoapt-getinstallapache2-utils

# 并發數1000,總請求數10000

ab-c1000-n10000http://localhost/

參考資料:

1 、使用 ab 進行測試 nginx 時,結果發現 Failed requests 很大,查看日志( /var/log/nginx/error.log ),發現錯誤是: socket() failed (24: Too many open files),參考這里;

2、Nginx中的一些優化

總結

以上是生活随笔為你收集整理的python virtualenv nginx_Ubuntu下搭建Nginx+supervisor+pypy+virtualenv的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。