文章目录
更新源
apt update
apt upgrade
安装django
pip3 install django
cd /home
django-admin.py startproject django_project # 创建名为django_project的项目
chown -R www-data:www-data django_project/django_project # 修改文件夹权限
mkdir wwwlogs # 创建log文件夹
安装gunicorn
pip3 install gunicorn
设置网站gunicorn配置文件
vim /home/django_project/gunicorn.py
import multiprocessing
bind = "127.0.0.1:8000" # 绑定的ip与端口
errorlog = '/home/wwwlogs/gunicorn.error.log' # 发生错误时log的路径
accesslog = '/home/wwwlogs/gunicorn.access.log' # 正常时的log路径
loglevel = 'warning' # 日志等级
chdir = '/home/django_project' # gunicorn要切换到的目的工作目录
timeout = 30 # 超时
workers = multiprocessing.cpu_count() * 2 + 1 # 进程数
threads = 2 # 指定每个进程开启的线程数
安装supervisor
pip3 install supervisor
echo_supervisord_conf > /etc/supervisord.conf
修改supervisord.conf文件
vim /etc/supervisord.conf
修改最下方include部分,将我们之后的网站的supervisor配置文件添加进去
[include]
files = /home/django_project/supervisor.conf
设置网站supervisor配置文件
vim /home/django_project/supervisor.conf
[program:django-project]
directory = /home/django_project ; 你的程序目录
command = gunicorn -c gunicorn.py django_project.wsgi ; 你的程序执行命令
autostart = true ; 在 supervisord 启动的时候也自动启动
autorestart = true ; 程序异常退出后自动重启
user = root ; 启动该程序的用户
redirect_stderr = true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile = /home/wwwlogs/supervisor.log ; 日志地址,默认 50MB
reload = True # 只要项目代码有所修改,会自动重启
基本命令
- supervisord,初始启动 Supervisord,启动、管理配置中设置的进程。
- supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx 为 [program:beepkg] 里配置的值,这个示例就是 beepkg。
- supervisorctl start programxxx,启动某个进程
- supervisorctl restart programxxx,重启某个进程
- supervisorctl stop groupworker: ,重启所有属于名为 groupworker 这个分组的进程(start,restart 同理)
- supervisorctl stop all,停止全部进程,注:start、restart、stop 都不会载入最新的配置文件。
- supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
- supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
安装nginx
apt install nginx
设置网站nginx配置文件
cd /home/django_project
vim django.conf # 创建配置文件
server
{
listen 80;
server_name 192.168.0.113;
root /home/django_project;
location ~* ^.+.(webp|jpg|jpeg|gif|css|png|js|ico)$
{
access_log off;
expires 30d;
}
location /
{
proxy_pass http://127.0.0.1:8000;
}
access_log /home/wwwlogs/django_access.log;
error_log /home/wwwlogs/django_error.log;
}
vim /etc/nginx/nginx.conf # 修改nginx配置文件,加入django.conf
在 include /etc/nginx/conf.d/*.conf; 下面添加一行
include /home/django_project/django.conf;
nginx -t # 检查配置是否有错误
service nginx restart # 重启使配置生效
安装mysql
apt install mysql-server
apt install mysql-client
apt install libmysqlclient-dev
pip3 install pymysql
设置mysql远程连接(可选)
mysql -u root -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; # 这里数据库root用户的密码为root
exit
service mysql restart
修改django默认配置
修改语言和时区
cd /home/django_project/django_project
vim settings.py
修改成这样
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
修改默认数据库类型为mysql
修改 settings 中的 DATABASES,将
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
"init_command": "SET sql_mode='STRICT_TRANS_TABLES'", }
}
}
需要先在mysql里面创建名为django_db的数据库,这里我的mysql用户名和密码都是root
python3 的话还需要进行如下修改
vim __init__.py # 修改settings.py同目录下的__init__.py文件
import pymysql
pymysql.install_as_MySQLdb()
修改完默认数据库后,创建数据库表
python3 manage.py migrate
修改allowed_hosts
ALLOWED_HOSTS = ['*', ]
创建一个管理员账号
python3 manage.py createsuperuser
运行django
supervisorctl reload
浏览器访问 192.168.0.113
这边搭建在局域网的一台ubuntu虚拟机上,局域网ip为192.168.0.113
搭建成功
创建一个新的app
cd /home/django_project
python3 manage.py startapp django_app
在 settings 文件中的 INSTALLED_APPS 里注册这个 app