Centos下python3环境的部署

一个环境部署搞了一天.特此写这篇文章长长记性

首先切换到root目录下

[cheng@bogon ~]$ sudo su
[root@bogon cheng]# 

然后查看yum列表 如果有的话kill -9 pid 杀死进程

[root@bogon cheng]# yum list
[root@bogon cheng]# kill -9 

安装python需要的依赖包

[root@bogon cheng]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

Unix系统默认安装了python
Centos 6 安装 python2.6版本
Centos 7 安装 python2.7版本
输入python查看版本

[root@bogon ~]# python

我们需要的版本是python 3.6.2,在centos上进行python2和3并存
下载python 3.6.2的包

[root@bogon /]# wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz

解压安装包

[root@bogon /]# tar -xvJf Python-3.6.2.tar.xz

切换进Python-3.6.2目录

[root@bogon Python-3.6.2]# 

编译安装

 [root@bogon Python-3.6.2]# ./configure prefix=/usr/local/python3

 [root@bogon Python-3.6.2]# make && make install

配置软连接(环境变量)
软连接 --> 快捷方式

[root@bogon Python-3.6.2]# ln -s /usr/local/python3/bin/python3 /usr/bin/python3
[root@bogon Python-3.6.2]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

然后测试一下安装完的python

[root@bogon Python-3.6.2]# python3

安装python的扩展包

[root@bogon Python-3.6.2]# yum install python-devel

安装python 开发包 Pymysql ,Pillow ,Django==2.1.5 ,django-ckeditor

[root@bogon Python-3.6.2]# pip3 install pymysql && pip3 install pillow && pip3 install django==2.1.5 &&pip3 install django-ckeditor

Python 的web项目,本身很难和Apache或者Nginx进行结合,为了让python web项目更加方便的被部署,开发出了uwsgi。
用pip安装uwsgi

[root@bogon Python-3.6.2]# pip3 install uwsgi

切换目录

[root@bogon local]# cd /usr/local/python3/

创建软连接

[root@bogon python3]# ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

然后把项目复制到虚拟机桌面
切换目录到opt

[root@bogon python3]# cd /opt

然后将项目复制到opt项目下

[root@bogon opt]# cp -r /home/cheng/Desktop/Qshop/ /opt/Qshop

我们需要清除所有的pycharm的配置文件,初始的导入文件

[root@bogon Buyer]# rm -rf __pycache__/

测试项目

[root@bogon Buyer]# python3 manage.py runserver 0.0.0.0:8000

关闭防火墙

[root@bogon opt]# systemctl stop firewalld

用uwsgi启动django
切换到opt目录

[root@bogon Qshop]# cd ..
[root@bogon opt]# 

创建uwsgi文件的配置文件目录和文件

[root@bogon opt]# mkdir script
[root@bogon opt]# ls
Qshop  rh  script

切换到script目录

 [root@bogon opt]# cd script

然后创建uwsgi.ini

[root@bogon script]# vim uwsgi.ini

编辑文本

[uwsgi]
chdir=/opt/OurBlog   #项目目录

module=OurBlog.wsgi:application  #指定项目的application

socket=/opt/script/uwsgi.sock  #指定sock的文件路径

workers=5  #进程个数

pidfile=/opt/script/uwsgi.pid

http=192.168.2.69:8000  #指定IP端口

static-map=/static=/opt/OurBlog/static  #指定静态文件

uid=root  #用户

gid=root  #组

master=true  #启用主进程

vacuum=true  #自动移除unix Socket和pid文件当服务停止的时候

enable-threads=true #启用线程

thunder-lock=true #序列化接受的内容,如果可能的话

harakiri=30 #设置自中断时间

post-buffering=4096 #设置缓冲

daemonize=/opt/script/uwsgi.log #设置日志目录

启动uwsgi查权限,并授予权限

[root@bogon script]# chmod 777 uwsgi.ini
[root@bogon script]# ll uwsgi.ini
-rwxrwxrwx. 1 root root 330 Jan 18 22:27 uwsgi.ini
[root@bogon script]# 
[root@bogon script]# uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
[uwsgi-static] added mapping for /static => /opt/Qshop/static

查看进程并杀死进程

[root@bogon script]# netstat -lnp|grep 8000
tcp        0      0 10.10.16.149:8000       0.0.0.0:*               LISTEN      30882/uwsgi         
[root@bogon script]# kill -9 30882

Python uwsgi+nginx部署
下载nginx压缩包

[root@bogon script]# wget -c https://nginx.org/download/nginx-1.12.2.tar.gz

解压nginx压缩包

[root@bogon script]# tar -zxvf nginx-1.12.2.tar.gz

切换到nginx目录并编译安装

[root@bogon script]# cd nginx-1.12.2/
[root@bogon nginx-1.12.2]# 
[root@bogon script]# ./configure \
[root@bogon nginx-1.12.2]# make && make install

切换到sbin目录

[root@bogon nginx-1.12.2]# cd /sbin/

创建软连接

[root@bogon sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

Nginx通讯uwsgi
修改Nginx的配置文件
切换目录

[root@bogon sbin]# cd /usr/local/nginx/
[root@bogon nginx]# ls
conf  html  logs  sbin
[root@bogon nginx]# cd conf
[root@bogon conf]# ls
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf
[root@bogon conf]# pwd
/usr/local/nginx/conf
[root@bogon conf]# 

备份配置文件

[root@bogon conf]# cp nginx.conf nginx.conf.bak

开始配置,注意括号的问题,并且千万要自己写不要copy

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'; 日志的格式

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
server {
        listen       80;
        server_name  Qshop; 服务的名称

        charset utf-8; 编码格式

        access_log  logs/host.access.log  main; 访问日志

        gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;  访问内容的类型

        error_log /var/log/nginx/error.log error; 错误日志,默认没有,需要手动创建

        location / {
             include uwsgi_params; 加载uwsgi_params
             uwsgi_connect_timeout 30; 连接的超时时间 不要加冒号不要加冒号不要加冒号 
             uwsgi_pass unix:/opt/script/uwsgi.sock; uwsgi.sock通讯的文件地址
        }

        location = /static/{
            alias /opt/Qshop/static; 静态文件的目录
            index index.html index.htm;
        }

最后就是启动服务了

[root@bogon conf]# nginx
[root@bogon opt]# cd /opt/script/
[root@bogon opt]# uwsgi --ini uwsgi.ini

好了…到此就全部部署完成了

你可能感兴趣的:(学习分享)