# Python安装 解释器:CPython。 CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。 CPython是使用最广的Python解释器。教程的所有代码也都在CPython下执行。 用 Python 的语法混合编写 Python 和 C/C++ 代码,提升 Python 速度 调用 C/C++ 代码 软件获得! wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz #默认安装路径:/usr/local/lib/python3.7 [root@web01 ~]# tar xf Python-3.7.1.tar.xz [root@web01 ~]# cd Python-3.7.1 [root@web01 Python-3.7.1]# yum -y install gcc-* openssl-* libffi-devel sqlite-devel [root@web01 Python-3.7.1]# ./configure --enable-optimizations --with-openssl=/usr/bin/openssl [root@web01 Python-3.7.1]# make -j4 [root@web01 Python-3.7.1]# make install 安装测试! [root@web01. Python-3.7.1]# python3 Python 3.7.1 (default, Oct 27 201.8, 22:51:15) [GCC 4.8.5 201.50623 (Red Hat 4.8.5-28)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> exit(); 当我们从Python官方网站下载并安装好Python 3.5后,我们就直接获得了一个官方版本的解释器:CPython。 ##########pip 配置需要TLS/SSL的位置,但是Python中的SSL模块不可用 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available. [root@web01 Python-3.7.1]# vim Modules/Setup 把下边这段话的#去掉 211 SSL=/usr/local/ssl 212 _ssl _ssl.c \ 213 -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ 214 -L$(SSL)/lib -lssl -lcrypto [root@web01. Python-3.7.1]# make [root@web01. Python-3.7.1]# make install ########## 升级pip! Pip: pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。 [root@web01 ~]# pip3 install --upgrade pip 安装python虚拟环境! virtualenv 是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。 [root@web01 ~]# pip3 install virtualenv 使用虚拟环境! [root@web01 ~]# virtualenv web01 [root@web01 ~]# source web01/bin/activate (web01) [root@web01 ~]# pip3 install django (web01) [root@web01 ~]# pip3 install django==1.9.8 (web01) [root@web01 ~]# django-admin.py startproject myweb (web01) [root@web01 ~]# cd myweb (web01) [root@web01 ~]# python3 manage.py runserver 192.168.10.42:8000 (web01) [root@web01 ~]# vim myweb/settings.py ALLOWED_HOSTS = ['*'] deactivate 退出虚拟环境 安装Django! [root@web01 ~]# pip3 install django 安装uwsgi! wget https://files.pythonhosted.org/packages/e7/1e/3dcca007f974fe4eb369bf1b8629d5e342bb3055e2001b2e5340aaefae7a/uwsgi-2.0.18.tar.gz uwsgi是服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回 uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。 nginx 和 uWSGI交互就必须使用同一个协议,而上面说了uwsgi支持fastcgi,uwsgi,http协议,这些都是nginx支持的协议,只要大家沟通好使用哪个协议,就可以正常运行了。 [root@web01 ~]# pip3 install uwsgi 创建uwsgi配置文件! [root@web01 ~]# mkdir /etc/uwsgi [root@web01 ~]# vim /etc/uwsgi/uwsgi.ini [uwsgi] uid = root gid = root socket = 127.0.0.1:9090 master = true //启动主进程 vhost = true //多站模式 no-site = true //多站模式时不不设置入口模块和文件 workers = 2 //子进程数 reload-mercy = 10 //平滑的重启 vacuum = true //退出、重启时清理文件 max-requests = 1000 //开启10000个进程后, 自动respawn下 limit-as = 512 // 将进程的总内存量量控制在512M buffer-size = 30000 pidfile = /var/run/uwsgi9090.pid //pid文件,用于下面的脚本启动、停止该进程 daemonize = /var/log/uwsgi9090.log pythonpath = /root/web/lib/python3.7/site-packages //找到django的安装路径 #### 启动uwsgi:(麻烦用脚本启动) uwsgi --ini /etc/uwsgi/uwsgi.ini 查看: netstat -ntpl 脚本启动uwsgi:/etc/init.d/uwsgi start 脚本关闭uwsgi:/etc/init.d/uwsgi stop 查看状态uwsgi:/etc/init.d/uwsgi status 脚本文件: /etc/init.d/uwsgi [root@web01 ~]# cat /etc/init.d/uwsgi #!/bin/sh DESC="uwsgi daemon" NAME=uwsgi DAEMON=/usr/local/bin/uwsgi ### which uwsgi 可以看到 CONFIGFILE=/etc/uwsgi/$NAME.ini PIDFILE=/var/run/${NAME}9090.pid ### 注意和配置文件中的一致 SCRIPTNAME=/etc/init.d/$NAME FIFOFILE=/tmp/uwsgififo set -e [ -x "$DAEMON" ] || exit 0 do_start() { if [ ! -f $PIDFILE ];then $DAEMON $CONFIGFILE || echo -n "uwsgi running" else echo "The PID is exist..." fi } do_stop() { if [ -f $PIDFILE ];then $DAEMON --stop $PIDFILE || echo -n "uwsgi not running" rm -f $PIDFILE echo "$DAEMON STOPED." else echo "The $PIDFILE doesn't found" fi } do_reload() { if [ -p $FIFOFILE ];then echo w > $FIFOFILE else $DAEMON --touch-workers-reload $PIDFILE || echo -n "uwsgi can't reload" fi } do_status() { ps aux|grep $DAEMON } case "$1" in status) echo -en "Status $NAME: \n" do_status ;; start) echo -en "Starting $NAME: \n" do_start ;; stop) echo -en "Stopping $NAME: \n" do_stop ;; reload|graceful) echo -en "Reloading $NAME: \n" do_reload ;; *) echo "Usage: $SCRIPTNAME {start|stop|reload}" >&2 exit 3 ;; esac exit 0 [root@web01 ~]# chmod 755 /etc/init.d/uwsgi [root@web01 ~]# mv myweb /usr/local/nginx/html/ Nginx发布: server { listen 80; server_name localhost; #access_log logs/abc.log main; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9090; uwsgi_param UWSGI_SCRIPT myweb.wsgi; ### uwsgi_param UWSGI_CHDIR /usr/local/nginx/html/myweb; ### index index.html index.htm; client_max_body_size 35m; #uwsgi_cache_valid 1m; #uwsgi_temp_file_write_size 64k; #uwsgi_busy_buffers_size 64k; #uwsgi_buffers 8 64k; #uwsgi_buffer_size 64k; #uwsgi_read_timeout 300; #uwsgi_send_timeout 300; #uwsgi_connect_timeout 300; } }
原文链接:https://www.cnblogs.com/bubu99/p/12920058.html
© 版权声明
声明📢本站内容均来自互联网,归原创作者所有,如有侵权必删除。
本站文章皆由CC-4.0协议发布,如无来源则为原创,转载请注明出处。
THE END