Django框架-Linux7上部署

目录结构

.
└── www
    └── MangeSystem
        ├── manage.py
        ├── MangeSystem
        │   ├── db_router.py
        │   ├── __init__.py
        │   ├── __pycache__
        │   │   ├── __init__.cpython-36.pyc
        │   │   ├── settings.cpython-36.pyc
        │   │   ├── urls.cpython-36.pyc
        │   │   └── wsgi.cpython-36.pyc
        │   ├── settings.py
        │   ├── urls.py
        │   └── wsgi.py
        ├── static
        │   ├── admin
        │   │   ├── css
        │   │   │   ├── base.css
        │   │   │   ├── changelists.css
        │   │   │   ├── dashboard.css
        │   │   │   ├── fonts.css
        │   │   │   ├── forms.css
        │   │   │   ├── login.css
        │   │   │   ├── rtl.css
        │   │   │   └── widgets.css
        │   │   ├── fonts
        │   │   │   ├── LICENSE.txt
        │   │   │   ├── README.txt
        │   │   │   ├── Roboto-Bold-webfont.woff
        │   │   │   ├── Roboto-Light-webfont.woff
        │   │   │   └── Roboto-Regular-webfont.woff
        │   │   ├── img
        │   │   │   ├── calendar-icons.svg
        │   │   │   ├── gis
        │   │   │   │   ├── move_vertex_off.svg
        │   │   │   │   └── move_vertex_on.svg
        │   │   │   ├── icon-addlink.svg
        │   │   │   ├── icon-alert.svg
        │   │   │   ├── icon-calendar.svg
        │   │   │   ├── icon-changelink.svg
        │   │   │   ├── icon-clock.svg
        │   │   │   ├── icon-deletelink.svg
        │   │   │   ├── icon-no.svg
        │   │   │   ├── icon-unknown-alt.svg
        │   │   │   ├── icon-unknown.svg
        │   │   │   ├── icon-yes.svg
        │   │   │   ├── inline-delete.svg
        │   │   │   ├── LICENSE
        │   │   │   ├── README.txt
        │   │   │   ├── search.svg
        │   │   │   ├── selector-icons.svg
        │   │   │   ├── sorting-icons.svg
        │   │   │   ├── tooltag-add.svg
        │   │   │   └── tooltag-arrowright.svg
        │   │   └── js
        │   │       ├── actions.js
        │   │       ├── actions.min.js
        │   │       ├── admin
        │   │       │   ├── DateTimeShortcuts.js
        │   │       │   └── RelatedObjectLookups.js
        │   │       ├── calendar.js
        │   │       ├── cancel.js
        │   │       ├── change_form.js
        │   │       ├── collapse.js
        │   │       ├── collapse.min.js
        │   │       ├── core.js
        │   │       ├── inlines.js
        │   │       ├── inlines.min.js
        │   │       ├── jquery.init.js
        │   │       ├── popup_response.js
        │   │       ├── prepopulate_init.js
        │   │       ├── prepopulate.js
        │   │       ├── prepopulate.min.js
        │   │       ├── SelectBox.js
        │   │       ├── SelectFilter2.js
        │   │       ├── timeparse.js
        │   │       ├── urlify.js
        │   │       └── vendor
        │   │           ├── jquery
        │   │           │   ├── jquery.js
        │   │           │   ├── jquery.min.js
        │   │           │   └── LICENSE-JQUERY.txt
        │   │           └── xregexp
        │   │               ├── LICENSE-XREGEXP.txt
        │   │               ├── xregexp.js
        │   │               └── xregexp.min.js
        │   ├── css
        │   │   └── mian_coustom.css
        │   └── imags
        │       ├── logo-footer.png
        │       └── logo.jpg
        ├── stuModel
        │   ├── admin.py
        │   ├── apps.py
        │   ├── __init__.py
        │   ├── migrations
        │   │   ├── 0001_initial.py
        │   │   ├── __init__.py
        │   │   └── __pycache__
        │   │       ├── 0001_initial.cpython-36.pyc
        │   │       └── __init__.cpython-36.pyc
        │   ├── models.py
        │   ├── __pycache__
        │   │   ├── admin.cpython-36.pyc
        │   │   ├── apps.cpython-36.pyc
        │   │   ├── __init__.cpython-36.pyc
        │   │   ├── models.cpython-36.pyc
        │   │   ├── urls.cpython-36.pyc
        │   │   └── views.cpython-36.pyc
        │   ├── tests.py
        │   ├── urls.py
        │   └── views.py
        ├── templates
        │   ├── index.html
        │   └── stuSystem
        │       ├── addclass.html
        │       ├── addstu.html
        │       ├── addtea.html
        │       ├── editclass.html
        │       ├── editstu.html
        │       ├── edittea.html
        │       ├── html_stu_model
        │       │   ├── base_add_edit.html
        │       │   ├── base.html
        │       │   └── nav.html
        │       ├── showclass.html
        │       ├── showstu.html
        │       └── showtea.html
        ├── test.py
        ├── uwsgi.ini
        ├── uwsgi.ini.bak
        ├── uwsgi.log
        └── uwsgi.pid
项目目录结构

1、安装python3.6

yum -y install yum-utils
yum groupinstall development
yum install https://centos7.iuscommunity.org/ius-release.rpm # 配置官方库
yum install python36u

# 之后执行命令只能用python3.6 开头,可以做别名alias python3='python3.6'并写入到

echo "alias python3='python3.6'" >> /etc/profile
. /etc/profile

2、安装pip包管理器

yum -y install python36u-pip
设置别名[pip安装好后,也只能pip3.6开头执行命令,故需设置别名]
echo "alias pip3='pip3.6'" >> /etc/profile
soure /etc/profile

pip3 list # 查看已安装好的包 可能需要更新,按提示更新即可

3、安装mysql5.7

rpm -ivh http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-release-el7-10.noarch.rpm # 配置官方库

yum -y install mysql-community-server

systemctl start mysqld # 启动后才能生成随机密码,然后才能更改密码
systemctl enable mysqld # 开机自启动

mysql -V 或mysql --version # 查看版本

# mysql5.7版后都会为root生成随机密码在/var/log/mysqld.log中
grep 'temporary password' /var/log/mysqld.log # 找到随机密码,然后复制出来使用
或
mysql -uroot -p$(awk '/temporary password/{print $NF}' /var/log/mysqld.log)

# 登录mysql重置密码
mysql -uroot -p'password'

# 修改登录密码
mysql> alter user 'root'@'localhost' identified by 'Root2018.com';

4、安装pymsql

pip3 install pymysql

5、安装django

pip3 install django==1.11.5

6、安装uwsgi

yum install -y python36u-devel # python.h 开发工具依赖
pip3 install uwsgi

在项目目录下创建uwsgi.ini文件,内容如下

[uwsgi]
# 使用nginx连接时使用功能,上线时才使用socket,指定项目执行的端口号
socket=127.0.0.1:8000
# 项目目录
chdir=/code/www/MangeSystem
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=MangeSystem/wsgi.py
# 最大进程
processess=2
# 最大线程
threads=2
# 开启主进程
master=True
#
pidfile=uwsgi.pid
daemonize=uwsgi.log

配置文件配好后,启动uwsgi服务【最好等下面的django项目配置完成后再启动】

uwsgi在哪个目录启动,就会在哪个目录生成uwsgi.pid和uswgi.log文件,故需要切换到项目目录下执行
启动:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重启:uwsgi --reload uwsgi.pid
强制停止:killall -8 uwsgi
这里我们启动uwsgi服务,可以通过ps -ef | grep uwsgi看到已经有四个uwsgi服务启动。

7、在本地创建目录存放django项目

mkdir /code/www/

将目录code的属主属组改成nginx,因为nginx是通过nginx用户访问该目录的
chown -R nginx:nginx /code

通过xftp将项目目录copy到服务器www目录下如:/code/www/MangeSystem/

在启动django前先将app中的migrations目录下之前在测试环境生成的数据清理掉,不然在Linux上执行数据库迁移命令无法创建对应的表

8、配置django项目setting中其它内容:template,static,allow_hosts等配置

8.1、允许访问IP,及开启debug模式

DEBUG = True
ALLOWED_HOSTS = ['*'] # 1、配置可访问ip

8.2、注册应用

INSTALLED_APPS=[ 'stuModel.apps.StumodelConfig' # 2、注册app]

8.3、模板目录配置

TEMPLATES
'DIRS': [os.path.join(BASE_DIR, 'templates')] ,如果是命令创建项目,需在项目根目录下手动创建templates目录

8.4、数据库配置

# 手动创建数据库

mysql> create database db_stu_system charset utf8;

# 创建用户并授权

mysql> grant all privileges on db_stu_system.* to 'python'@'%' identified by 'Python@2018';

# 配置setting中database模块

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_stu_system',
'USER': 'python',
'PASSWORD': 'Python@2018',
'HOST': '127.0.0.1',
'PORT': 3306,
},
}

# 配置项目于settings.py同级__init__文件

import pymysql
pymysql.install_as_MySQLdb()

# 切到项目目录,执行数据库迁移命令
python3 manage.py makemigrations
python3 manage.py migrate app_name

8.5、配置静态文件目录

STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static') # 需手动在项目根目录下创建static目录
]

8.6、多个app在全局urls配置分发及命名空间,在当个app中配置urls文件写url与视图函数对应关系,及url命名及反向解析操作

9、配置nginx

9.1、添加配置django静态路劲

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/addmoney.conf

vim /etc/nginx/conf.d/addmoney.conf
server {
listen 80;
server_name www.addmoney.top addmoney.top;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT MangeSystem.wsgi;
uwsgi_param UWSGI_CHDIR /code/www/MangeSystem;
rewrite "/(.*)" "/stu_system/show_class/$1" last;
}

location /static {
client_max_body_size 35m;
alias /code/www/MangeSystem/static;

}
#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

}

注:用uwsgi不需要启动django项目,不用uwsgi直接启动django项目也是可以的

10、开启防火墙80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --reload

 

posted @ 2018-10-12 22:00  Alive_2020  阅读(528)  评论(2编辑  收藏  举报