搭建和部署django服务器

本文主要是记录简单的创建一个基于django的webserver服务器。

0.环境搭建

python安装

下载python3代码,以下纪录从源码安装 默认源码没有ssl模块,需要先安装好openssl组件 将python3源码中

django安装

安装django,比较麻烦的是对应的requirement

1.django工程创建

django-admin startproject djtest
创建好的工程目录结构
创建的工程在workspace下面
/djtest        #新创建的工程
manage.py  #manage.py 工程管理文件
djtest     #创建的第一个app
settings.py

启动自带的django runserver 
python manage.py runserver localhost:80

2. uwsgi安装

uwsgi性能上强于django自带的runserver服务器
并发量高,方便管理多进程,性能好
pip3 install uwsgi
#uwsgi --version #查看安装的版本
参考示例:
        [uwsgi]               //必须要的部分
        #http = 0.0.0.0:80    //单独启动uwsgi时可以这样设置,我们现在要配合nginx
        socket = 127.0.0.1:9090  //指定好socket,nginx要访问此端口,或设置为:xxx.sock
        #或者 socket = /opt/project/pro.sock
        #设置socket的权限
        #chmod-socket=666
        master = true         //主进程
        vhost = true          //多站模式
        no-site = true        //多站模式时不设置入口模块和文件
        workers = 2           //子进程数
        reload-mercy = 10     
        vacuum = true         //退出、重启时清理文件
        max-requests = 1000   
        limit-as = 512
        buffer-size = 30000
        pidfile = /var/run/uwsgi9090.pid    //pid文件,用于下面的脚本启动、停止该进程
        daemonize = uwsgi9090.log       //指定路径存放uwsgi log

3.nginx

性能较好,静态资源请求交由nginx server处理,动态资源由uwsgi server 处理,实现动,静态资源处理分离 项目配置文件: /etc/nginx/conf.d 可以在该目录下继续创建一个nginx.conf(上级目录下nginx.conf会include conf.d下面的*.conf) 如果出现问题,需要查找nginx /var/log/nginx 常见与遇到的问题

3.1 sock failed (Permission denied)问题

首先在uwsgi.ini文件里面指定好权限 /设置socket读写权限/ chmod-socket=666 确认一下nginx.conf里面的user 默认user nginx; 修改成实际用户: user root;#在配置第一行

3.2 sock failed (2: No such file or directory) 问题

这个问题可以先通过uwsgi --ini uwsgi.ini 启动一下服务器,会自动创建好 这个uwsgi.sock文件

参考示例:
    server {
        listen       80;
        server_name  localhost;

        location / {            
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:9090;              //必须和uwsgi中的设置一致(如果是socket文件,请统一)
            uwsgi_param UWSGI_SCRIPT djtest.wsgi;  //入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
            uwsgi_param UWSGI_CHDIR /root/statison/djtest;       //项目根目录
            index  index.html index.htm;
            client_max_body_size 35m;
        }
    }
启动:
先启动一下uwsgi #uwsgi --ini uwsgi.ini
再启动nginx     #service nginx start
备注:配置HTTPS(准备好证书文件)

4.mysql

使用中多涉及mysql的操作 数据库属性 字符集: utf8 -- UTF-8 Unicode 排序规则:utf8_unicode_ci 开启一下远程访问数据库

1.保证远程服务器的防火墙打开了数据库端口3306
2.需要修改一下远程服务器上的设置

在远程数据库登录上>mysql -u root -p 进入mysl> show databases;

use mysql; show tables; select Host, User from user; update user set Host='%' where User='root'; flush privileges; 重新测试 直接设置mysql权限 // 任何远程主机都可以访问数据库 mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%'WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

mysql上出现中文乱码情况
方法1:

修改安装目录下的my.ini,修改default-character-set=utf8

方法2:

在需要导入的sql文件中, 开头加上set character set utf8;(有的加这个就可以) 在库名后面加上default character set utf8; 在表后面加上default charset =utf8; 在添加数据前加入一行 set character set utf8; mysql修改密码,mysql5.7后版本 use mysql; select User, host,authentication_string from user; 可以查看到密码(加密了),修改密码 update user set 'authentication_string'=PASSWORD('root') where User='root';

5.常见使用命令

5.1 查看系统当前端口情况
#lsof -i:端口号
#netstat -tunlp | grep 端口号
5.2 查看文件被哪些进程占用
#ps -aux | grep xxx.txt
5.3 markdown语法
  半角的空格(一个英文大小)
  全角的空格(一个汉字大小)