彩世界开奖app官网-彩世界平台官方网址(彩票平台)
做最好的网站
来自 彩世界开奖app官网 2019-12-06 21:45 的文章
当前位置: 彩世界开奖app官网 > 彩世界开奖app官网 > 正文

Ubuntu 14.04下Django&MySQL环境部署

记住是一行执行一条命令。

centos7 python3 django2 uwsgi mysql

python断断续续的学习了一段时间,一直是在Mac上面跑跑,最近阿里云打折便买了一个便宜的服务器来玩,在阿里云网站的控制台中找到自己购买的实例,打开远程连接进入终端输入账号密码就可以开始配置环境了

图片 1

屏幕快照 2018-01-29 13.36.42.png

经历了将近10次环境配置,总算是配置好了--从1月28号直到2月2号
下篇文章记录一下git下的自动部署Django

新建项目##

到了验证结果的时候了
将当前目录切换到Python的worspace下,输入新建的项目名称:

im@58user:~/PythonProjects$django-admin.py startproject Hello
im@58user:~/PythonProjects$ cd Hello/
im@58user:~/PythonProjects/Hello$ tree
├── Hello
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py
  • init.py:Python特性,可以是空文件,表明这个文件夹是一个可以导入的包。
  • settings.py:配置文件,本文主要修改数据库信息、模板目录、加载模块的信息。
  • url.py:URL配置文件,指定函数与URL的映射关系。
  • wsgi.py:本文中不会使用,nginx/apache wsgi在生产环境中运行Django时使用

接下来我们写一个HelloWorld页面。
在Hello文件下的一级目录创建views.py文件

im@58user:~/PythonProjects/Hello$ touch views.py
im@58user:~/PythonProjects/Hello$ ls
Hello  manage.py  views.py
im@58user:~/PythonProjects/Hello$ tree
.
├── Hello
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── views.py

1 directory, 6 files

在views.py文件中写入下面代码

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello World~!~!")

然后再将路径添加在urls.py文件中

from django.conf.urls import url
from django.contrib import admin
from views import hello

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hello/', hello),
]

然后在Hello目录下执行```python manage.py runserver 0.0.0.0:8080

打开浏览器访问http://127.0.0.1:8000/hello/ 可以看到展示结果。

![Hello world](http://upload-images.jianshu.io/upload_images/1319879-a19f1df512b51616.png?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

想阅读作者的更多文章,可以查看我 [个人博客](http://dandanlove.com/) 和公共号:
![振兴书城](http://upload-images.jianshu.io/upload_images/1319879-612c4c66d40ce855.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/1240)

进入解压的文件的目录

2、安装Django

Django已经进入2.0版本了,如果直接用“pip install django”会安装失败,因为pip默认的是python2.7,Django2不支持python2,下面命令可以直接安装Django版本

pip3 install django

进入到“/home”路径中,使用下面命令测试是否安装Django成功,同时也是在新建项目"mysite"

django-admin.py startproject mysite

cd mysite/mysite

编辑项目settings.py文件,在ALLOWED_HOSTS中添加自己的公网IP

vim settings.py

图片 2

屏幕快照 2018-01-29 14.01.03.png

执行项目

cd ../
python3 manage.py runserver 0.0.0.0:80

退出
control   C

在浏览器中输入“

图片 3

屏幕快照 2018-01-29 14.08.41.png

Python环境搭建##

操作系统Ubuntu14.04,自带Python2.7.6

im@58user:/$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

第五步:指定目录安装

4、安装Nginx

返回到根目录,下载,解压,配置,安装

wget http://nginx.org/download/nginx-1.13.9.tar.gz

tar xf nginx-1.13.9.tar.gz

cd nginx-1.13.9

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module

make && make install

改“nginx.conf”里面的监听端口,如果不知道某些文件的路径可以通过下面命令查找

find / -name nginx.conf

会列出所有“nginx.conf”所存在的位置,修改“/usr/local/nginx/conf/nginx.conf”里面的内容

server {
        listen       80;
        server_name  localhost;

        #charset utf-8,gbk;

        #access_log  logs/host.access.log  main;

        location / {
            include uwsgi_params;
            uwsgi_pass 39.106.117.80:8088;
            uwsgi_param UWSGI_SCRIPT mysite.wsgi;
            uwsgi_param UWSGI_CHDIR /home/mysite;
            uwsgi_read_timeout 2;
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

我使用了ssl所以我的配置相对上面有所改变

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  www.liyong.work;
        return      301 https://$server_name$request_uri;
    }

    server {
       listen       443 ssl;
       server_name  www.liyong.work;

       charset utf-8,gbk;

       ssl_certificate      cert/214523997420739.pem;
       ssl_certificate_key  cert/214523997420739.key;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_prefer_server_ciphers  on;

       location /static/ {
            alias  /home/NeverGU/static/;
            index  index.html index.htm;
        }

       location / {
          include uwsgi_params;
            uwsgi_pass 127.0.0.1:8088;
            uwsgi_param UWSGI_SCRIPT NeverGU.wsgi;
            uwsgi_param UWSGI_CHDIR /home/NeverGU;
            uwsgi_read_timeout 2;
           root   html;
           index  index.html index.htm;
       }

       error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

在‘/etc/nginx/conf.d’下面新建“mysite.conf”

server {   # 这个server标识我要配置了
        listen 80;  # 80 是http默认的端口, 443 是https默认的端口(网页一般使用这两个端口)
        server_name 39.106.117.80 ;  # 你访问的路径前面的url名称
        access_log  /var/log/nginx/access.log;  # Nginx日志配置
        error_log  /var/log/nginx/error.log;    # Nginx错误日志配置
        charset  utf-8; # Nginx编码
        gzip on;  # 启用压缩,这个的作用就是给用户一个网页,比如3M压缩后1M这样传输速度就会提高很多
        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_page  404           /404.html;  # 错误页面
        error_page   500 502 503 504  /50x.html;  # 错误页面

        # 指定项目路径uwsgi
        location / {        # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
            include etc/nginx/uwsgi_params;  # 导入一个Nginx模块他是用来和uWSGI进行通讯的
            uwsgi_connect_timeout 30;  # 设置连接uWSGI超时时间
            # 指定uwsgi的sock文件所有动态请求就会直接丢给他
            uwsgi_pass unix:/home/mysite/script/uwsgi.sock;  
        }

        # 指定静态文件路径
        location /static/ {
            alias  /home/mysite/static/;
            index  index.html index.htm;
        }

        location /media/ {
            alias /home/mysite/static/media;
        }

        location = /50x.html{
            root /usr/share/nginx/html;
        } 
    }

Django环境搭建##

目前Django的版本已经到1.11了。先去官网下载Linux对应的文件,然后解压&安装。(官网下载地址)

tar xzvf Django-1.11.x.tar.gz
cd Django-1.11.x
sudo python setup.py install

这时可能会提示ImportError: No module named setuptools

执行sudo https://bootstrap.pypa.io/ez_setup.py -O - | sudo python

然后执行sudo python setyp.py install

到此Django安装成功~!

cd git-2.9.2
make prefix=/usr/local/git all
make prefix=/usr/local/git install

6、安装Mysql

回到根目录
下载,安装

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

rpm -ivh mysql-community-release-el7-5.noarch.rpm

yum install mysql-community-server

初次安装无需密码即可登录

mysql -u root 

设置密码

mysql> set password for 'root'@'localhost' =password('password');

在mysite的settings.py中配置数据库连接

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysite',
        'USER': 'root',
        'PASSWORD': '11111111',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

Mysql安装##

执行一下命令,运行过程中可能需要输入root密码并进行确认。

sudo apt-get install mysql-server mysql-client
sudo apt-get install libmysqld-dev

然后链接MySQL和Python

sudo apt-get install python-dev
sudo wget https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.5.zip
unzip MySQL-python-1.2.5.zip
cd MySQL-python-1.2.5/
sudo python setup.py install

进入mysql数据库的方式:

  • sudo mysql
  • mysql -u root -p
    然后输入密码

第四步:

3、安装uwsgi

使用pip安装

pip3 install uwsgi

安装结束后回到根目录下,创建test.py文件,并编辑

cd (或者 cd ~)

touch test.py

vi test.py

内容为下,最好是使用sublime创建一个test.py然后通过filezilla传到服务器根目录下,防止因为格式导致的问题

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"]#python3
    return b"Hello World"#python2

在终端运行下面命令,需要保证安全组里面有8000端口

uwsgi --http :8000 --wsgi-file test.py

然后在浏览器中输入“ World”则表示成功

启动项目
uwsgi --http :8000 --chdir /home/mysite/ -w mysite.wsgi --static-map=/static=static

uwsgi常用命令,uWSGI官方文档

uwsgi --chdir=/path/to/your/project 
    --module=mysite.wsgi:application 
    --env DJANGO_SETTINGS_MODULE=mysite.settings 
    --master --pidfile=/tmp/project-master.pid 
    --socket=127.0.0.1:49152       # 可以ip地址,也可以是文件 
    --processes=5                  # 进程数量
    --uid=1000 --gid=2000          # 如果是root用户,uwsgi可以有删除权限
    --harakiri=20                  # 一个请求超时时间
    --max-requests=5000            # 一个工作进程最大请求数
    --vacuum                       # 退出时清楚环境
    --home=/path/to/virtual/env    # virtualenv的路径
    -- static                       # 做一个映射,指定静态文件
    --http                          # 这个就和runserver一样指定IP 端口
    --daemonize=/var/log/uwsgi/yourproject.log      # 日志

启动配置,在项目的根目录下新建script文件夹,并新建uwsgi.ini,uwsgi.pid文件

cd /home/mysite/script
$ uwsgi --ini uwsgi.ini   # 启动uwsgi配置
[uwsgi-static] added mapping for /static => /home/trunk/static    # 启动成功

$ uwsgi --stop uwsgi.pid  # 关闭uwsgi
signal_pidfile()/kill(): Operation not permitted [core/uwsgi.c line 1659]

$ uwsgi --reload uwsgi.pid  #重新加载配置

给mysql设置root密码:###

先以第一种方式进入mysql

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> update user set Password = PASSWORD('root') where User ='root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0
mysql> exit
括号里面的'root'就是新的密码
wget https://github.com/git/git/archive/v2.9.2.tar.gz  

1、安装Python3.6.4

目前centos中默认的python是2.7版本,现在需要升级到3.6.4版本,首先下载,解压后配置并安装

下载
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz

解压
tar xf Python-3.6.4.tgz

进入到解压得到的文件夹中
cd Python-3.6.4

依次键入或者复制命令输入
./configure --prefix=/opt/python3 

make && make install 

安装完毕后查看python版本

默认python版本 --> 2.7
python --version

python3版本 --> 3.6.4
python3 --version

如果版本为3.6.4则说明安装成功,有强迫症的可以把python3.6.4的压缩包和解压包都删除

如果选择公共镜像安装的话,centos内置python2,是不会安装python3的,因此需要我们自己安装python3。

5、配置uwsgi启动项目

首先项目“mysite”中创建“uwsgi.ini”文件,如果有则不用创建

cd /home/mysite/script
touch uwsgi.ini

复制下面代码入“uwsgi.ini”

#uwsgi.ini file
[uwsgi]
# 项目目录
chdir=/home/mysite
# 指定项目的application
module= mysite.wsgi:application
# 指定sock的文件路径
socket=127.0.0.1:8088
# Django's wsgi file
wsgi-file =mysite/wsgi.py
# 进程个数
workers=5
pidfile=/home/mysite/script/uwsgi.pid
# 指定IP端口
#http=:8000
# 指定静态文件
static-map=/static=/home/mysite/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/home/mysite/script/uwsgi.log

执行命令后能够查看网页并且按“control C”后依然可以访问说明成功

uwsgi --ini /home/mysite/script/uwsgi.ini && /usr/local/nginx/sbin/nginx

如果报错误可查看文中*.log所在的路径(/home/mysite/script/uwsgi.log),查看错误原因
遇到端口冲突问题时可通过下面命令查看所有进程

netstat -tlnp

输入进程的pid就能够关闭进程

kill pid

如果切换项目运行需要使用同一个端口,使用kill pid不能直接杀死uwsgi对应的进程,需要使用“uwsgi --stop /home/mysite/script/uwsgi.pid”才能直接杀死

virtualenv envpy3 --no-site-packages --python=python3

1、python3安装

ln -s /usr/Python-3.6.5/bin/pip3 /usr/bin/pip3
yum install mysql

yum install mariadb-server mariadb 

yum install mysql-devel

第四步:安装依赖环境

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm  

启动

sudo yum install -y nginx
 pip3 install virtualenv

  

  

ln -s /usr/Python-3.6.5/bin/python3 /usr/bin/python3

 

第七步:创建pip3软链接

(3) 激活

sudo systemctl start nginx.service

 

python3安装基本完成,如果是其他版本把版本号换一下就好了。

 安装

(2)创建

这一步我出现了个错误,少安装了一些环境,通过下面的命令可以解决。

5.创建python3虚拟环境

  

 

 

解压git

解压文件

下载git

 

至此,git 安装完毕。

tar -xzvf v2.9.2.tar.gz  
sudo yum install libcurl-dev libcurl-devel

sudo yum install expat-devel

sudo yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
cd Python-3.6.5
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc 

系统:centos7 

第二步:

 

 

第三步:

  mysql -u root

  mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');

 修改密码:

2、配置Django环境

 

4、nginx安装

  

 

tar -xf Python-3.6.5.tgz

LNMP(centos7, nginx, mysql, python3)

我将Django的环境包放在了我的GitHub项目的requirements.txt文件中, 通过下面这条命令安装。 

添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令:

  

第三步:

3、mysql 安装

第二步:

云服务:腾讯云

添加到环境变量

pip3 install -r requirements.txt

(1)安装virtualenv环境管理工具

第六步:创建python3软链接

source ~/envpy3/bin/activate

  

  

下载最新的python3安装包,

  

  

 

第一步:

 

mkdir /usr/Python-3.6.5            #<=====创建目录

./configure --enable-shared --enable-loadable-sqlite-extensions --enable-optimizations --prefix=/usr/Python-3.6.5   #<====绑定安装目录
make                        #<=====编译初始化
make install                    #<====安装

 

第一步:

yum install gcc-c  
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl--devel   

安装git

本文由彩世界开奖app官网发布于彩世界开奖app官网,转载请注明出处:Ubuntu 14.04下Django&MySQL环境部署

关键词: python学习笔记