zoukankan      html  css  js  c++  java
  • Cenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx到写nginx的环境部署(一)

     

     

     

    梳理下这几个的关系:

    centos是redhat的社区版操作系统。

    Python2.7.5是开发语言(centos6.5下自带的python是2.6.6版本,所以需要源码更新,而centos7.1下面自带的是2.7.5)

    pip1.5.4是一个安装和管理 Python 包的工具 ,是easy_install的替代品,就像yum一样。用它可以安装指定版本的Django和mysql

    Django是python下的web开发框架之一

    Nginx是继Apache之后的高性能httpweb服务器,不再赘述。

    WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx)与应用服务器(如uWSGI服务器)通信的一种规范。

    MySQLdb是python提供给mysql的接口模块。

     

    1.首先安装Centos7.1

    网易的镜像下载地址:

    http://mirrors.163.com/centos/7.1.1503/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso

    下载下来用UltraISO将镜像写入到U盘里面或者用虚拟机安装,过程不必赘述。

    尽量不要装精简版:否则进去了之后要配yum源,甚至连ifconfig命令都没有

    yum配置

    http://www.centoscn.com/CentOS/config/2015/0214/4718.html 

    ifconfig命令安装:

    http://www.centoscn.com/CentosBug/osbug/2014/0916/3750.html

     

    2.安装python2.7.5(Centos7以上可以略过,因为本身就是2.7.5版本)

    [root@localhost ~]# wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
    [root@localhost ~]# tar -jxvf Python-2.7.5.tar.bz2
    [root@localhost ~]# cd Python-2.7.5
    [root@localhost Python-2.7.5]# ./configure --prefix=/usr/local/python2.7(指定目录)
    [root@localhost Python-2.7.5]# make && make install
    [root@localhost Python-2.7.5]# echo "PATH=/usr/local/python2.7/bin:$PATH" >> /etc/profile
    [root@localhost Python-2.7.5]# source /etc/profile
    [root@localhost Python-2.7.5]# python -V
    Python 2.7.5

     Python 2.7.5安装成功。

     

    3.安装pip

    #wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate
    # tar -xzvf pip-1.5.4.tar.gz
    # cd pip-1.5.4
    # python setup.py install

     pip安装成功

     

    4.利用pip安装DJango

    [root@localhost ~]# pip install Django==1.8.5

    5.安装MySQLdb

    
    
    [root@localhost ~]# yum install MySQL-python.x86_64

    6.安装必须的一些系统库

    yum install gcc-c++ 
    yum insatll libxml2*

    7.安装nginx

    安装nginx之前需要安装PCRE库的安装

    #wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
    #tar –zxvf pcre-8.21.tar.gz
    #cd pcre-8.21
    #./configure #make #make install

    安装zlib库安装

    tar -zxvf zlib-1.2.5.tar.gz
    cd zlib-1.2.5
    ./configure
    make
    makeinstall

    安装openSSL库

    #wget http://www.openssl.org/source/
    #tar –zxvf openssl-1.0.0.tar.gz
    #cd openssl-1.0.0
    #./configure#make #make install

    以上三个库确保安装好后 接下来安装nginx

    #wget http://nginx.org/download/nginx-1.4.2.tar.gz 
    #tar xf nginx-1.4.2.tar.gz
    #cd nginx-1.4.2
    #./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf  --with-pcre=/usr/src/pcre-8.21 --with-zlib=/usr/src/zlib-1.2.7
    #make
    #make install
    #/usr/local/tengine/sbin/nginx 或者声明到/etc/profile 中

    将nginx的执行路径声明到全局变量里面来

    vim /etc/profile  在export上面增加这一句

    PATH=$PATH:/usr/local/nginx/sbin          //这一句
    export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

    重读一下配置文件或者新开一个shell就可以看到

    [root@localhost ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin:/root/bin

    然后nginx就可以直接执行nginx程序了 

    查看nginx80端口

    [root@localhost ~]# netstat -tnlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1568/uwsgi
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1330/nginx: master
    tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2148/dnsmasq
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      901/sshd
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2063/master
    tcp6       0      0 :::22                   :::*                    LISTEN      901/sshd
    tcp6       0      0 ::1:25                  :::*                    LISTEN      2063/master 

    表示已经启动成功  在浏览器输入本机IP即可访问nginxweb页面

    index页面默认存放于cd /usr/local/nginx/html 里面的index.html

     8.安装Django

     上文已经安装过了,此处我们查看Django的版本

    [root@localhost ~]# python -c "import django; print(django.get_version())"
    1.8.5

    Django框架已经安装成功,版本为1.8.5

    创建一个Django项目

            Django的项目 不像 php的项目,一般php的项目会将所有的代码放到服务器上(/wwwroot/xx.php)这样运行,但实际上这样的方法不太安全,也更容易被别人看到代码。

        Django的项目代码可以放在任何目录下,如 /usr/local/xweb/

        

    [root@localhost ~]# cd /usr/local/xweb/   
    [root@localhost xweb]# tree xweb/    d//jango-admin.py startproject xweb 创建一个名为 xweb 的项目
    xweb/
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── urls.pyc
    ├── wsgi.py
    ├── wsgi.pyc
    └── xweb.ini
    
    0 directories, 9 files

        外层的 xweb只是一个包含项目的 名称, 可以将该目录名修改

        内层的 xweb 目录里面 有一个空的__init__.py ,这是python的写法,告诉python这是一个将被引用的包

        manage.py 是项目管理的主要方法 

        # xweb/manage.py help 可以看到好多方法

         下面是 django官网关于django-admin.py & manage.py 的命令方法介绍:

         

    https://docs.djangoproject.com/en/1.6/ref/django-admin/

        运行一个Django项目

        简单的运行方式为:

    1. #python manage.py runserver
      Validating models...
      0 errors found July 28, 2014 - 14:18:04 Django version 1.6.5, using settings 'dj.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 

        如果你想将端口号修改,或者ip修改,可以执行:  

    #  python manage.py runserver 8080 / 0.0.0.0:8000

        访问上述地址,就会看到 Welcome to Django 页面了。

        这只是使用Django自带的webserver,下面我们要通过uwsgi将nginx与django组合到一起。

    9.安装uwsgi

        通过uwsgi将Nginx与Django组合一起

        官方文档:

    http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html#installing-uwsgi-with-python-support

        先安装uwsgi  

      # yum install python-devel
        # pip install uwsgi
    1. total build time: 178 seconds
      *** uWSGI is ready, launch it with /usr/bin/uwsgi ***
      Successfully installed uwsgi
      Cleaning up...

        # 小小的试验一下

        # uwsgi --help  // 一堆命令参数,还是看文档吧

        # 配置nginx

    在nginx.conf 的server里面添加如下
    location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
    root /opt/xspeeder/xweb;
    }
    location / {
    root /opt/xspeeder/xweb/xapp/templates/login;
    index login.html;
    uwsgi_pass 127.0.0.1:9000;
    include uwsgi_params;
    }

        # uwsgi 调用参数

        # 根据官网的说明:

         # 假设你的django项目目录在/usr/local/xweb

    uwsgi --socket 127.0.0.1:9000 --chdir /usr/local/xweb/ --wsgi-file xweb/wsgi.py --master --processes 2 --threads 2

        # ok! 再次访问nginx配置的页面,发现是不是看到了django的欢迎界面!

        # 再次验证了一点,python的项目不需要放在 wwwroot类似的目录中,可以放在任意目录下!

        # 每次这么写是不是很麻烦~uwsgi提供用配置文件的方式执行:

        # 创建一个 xweb.ini(放在和__init__.py同一路径下)

    
    


    [uwsgi]
    socket = 127.0.0.1:9000
    pidfile=/run/uwsgi.pid
    chdir = /xspeeder/xweb/
    wsgi-file = xweb/wsgi.py
    master = true
    processes = 2
    threads = 2



    uwsgi添加系统服务启动项

    [Unit]
    Description=uwsgi
    After=network.target syslog.target xsdaemon.service


    [Service]
    Type=forking
    PIDFile=/run/uwsgi.pid
    ExecStart=/usr/bin/uwsgi /xspeeder/xweb/xweb/xweb.ini
    ExecStop=/usr/bin/kill -9 `cat /run/uwsgi.pid`
    PrivateTmp=true


    [Install]
    WantedBy=multi-user.target

     参考: 

    http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html
        # uwsgi xweb.ini 

    此时再使用此命令可溶氧实现上面冗长命令的的功能。

    全路径uwsgi /usr/local/xweb/xweb/xweb.ini  然后将这句命令写到/etc/rc.d/rc.local里面进行开机启动执行(注意:centos7rc.local已经不再是6系列的开机启动最后一个脚本了,为了兼容,如果想使用rc.local就必须给他加上x权限。)

            # 到此,你的django就可以通过uwsgi在nginx下运行了!

     

     10.编写cenos7下面的nginx服务脚本

    在/usr/lib/systemd/system下创建nginx.service文件内容如下

    [Unit]
    Description=nginx
    Documentation=http://nginx.org/en/docs/
    After=network.target  remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /etc/nginx/nginx.conf
    ExecStart=/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
    ExecReload=/usr/bin/kill -s HUP $MAINPID
    ExecStop=/usr/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target

    关于这个service文件的具体内容,我会另外详细学习和理解。

    启动服务
    $ sudo systemctl start nginx.service
    
    #重启
    $ sudo systemctl restart nginx.service
     
    #重载
    $ sudo systemctl reload nginx.service
     
    #停止
    $ sudo systemctl stop nginx.service

    [root@localhost ~]# systemctl status nginx.service
    nginx.service - nginx
    Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
    Active: active (running) since 一 2015-11-16 14:47:40 CST; 1h 42min ago
    Docs: http://nginx.org/en/docs/
    Process: 1324 ExecStart=/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
    Process: 907 ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
    Main PID: 1330 (nginx)
    CGroup: /system.slice/nginx.service
    ├─1330 nginx: master process /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
    └─1332 nginx: worker process

    11月 16 14:47:39 localhost.localdomain nginx[907]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    11月 16 14:47:39 localhost.localdomain nginx[907]: nginx: configuration file /etc/nginx/nginx.conf test is successful
    11月 16 14:47:40 localhost.localdomain systemd[1]: Failed to read PID from file /usr/local/nginx/logs/nginx.pid: Invalid...ument
    11月 16 14:47:40 localhost.localdomain systemd[1]: Started nginx.
    Hint: Some lines were ellipsized, use -l to show in full.

    至此,项目已经可以通过nginx开机自启动了。

    附:systemd的有关在:

    http://www.cnblogs.com/sysk/p/4969368.html
  • 相关阅读:
    LIGGGHTS中的restart命令
    paraview计算面上的流量
    paraview计算面上的平均压力
    paraview计算区域中的平均流速
    paraview提取非常好看的流线图
    paraview显示颗粒的快捷方法
    paraview显示网格很多线条重合问题
    CFDEM中writeLiggghtsProps命令
    paraview使用ExtractCellsByRegion提取球阀阀芯中的颗粒数量
    Paraview 显示模拟时间
  • 原文地址:https://www.cnblogs.com/sysk/p/4959282.html
Copyright © 2011-2022 走看看