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
人生苦短,我用python!