查看后台程序的运行
netstat -nltp 按端口号
ps -ef | grep 程序名
环境的配置
- 把准备好的博客文件拷贝一份至虚拟机中
- 在虚拟机中安装docker
安装nginx
yum search nginx
yum install nginx -y
启动nginx、设置开机自启动
systemctl start nginx
systemctl enable nginx
查看运行状态
systemctl status nginx
安装django
pip install django -i https://mirrors.aliyun.com/pypi/simple
或者指定版本安装
pip install django==1.11.16 #安装指定版本的django,'=='后面的是django的版本号
django卸载
pip uninstall django
设置数据库端口号和密码
docker run -di --name=blog_linux -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7
测试数据库
打开Navichat,新建一个mysql的连接,连接名随意,主机号选择虚拟机中的网络端口,也就是MobaXterm命令行窗口上方的地址号,密码是我们刚刚设置的密码,点击测试连接
部署redis
docker pull redis
启动并设置redis的名称、对外和对内的端口号
docker run -di --name=blog_redis -p6379:6379 redis
修改设置文件
进入博客的目录,修改 settings文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'HOST': '127.0.0.1', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': 'root', # 数据库用户名
'PASSWORD': '123456', # 数据库用户密码
'NAME': 'blog_linux' # 数据库名字
},
}
安装pyMySQL扩展
pip install PyMySQL
配置Redis数据库
检查并安装django-redis拓展包
pip install django-redis
将项目移动到opt文件夹下
mv -v django_blog/ /opt/
编写脚本文件,配置uwsgi启动方式
vim 文件名.ini
[uwsgi] # uwsig使用配置文件启动
chdir=/opt/项目名称 #项目路径
module=项目名称.wsgi # 指定项目的application
http-socket =:8000 #指定端口号
master=True # 启用主进程
processes=4 # 进程数
threads=1 # 线程数
vacuum=true # 自动移除unix Socket和pid文件当服务停止的时候
配置日志文件
创建文件夹并修改配置文件
mkdir -pv pid
mkdir -pv log_uwsgi
vim django_blog.ini
daemonize=%(chdir)/log_uwsgi/uwsgi-8000.log
log-maxize=1024*1024*1024
pidfile=%(chdir)/pid/uwsgi-8000.pid
启动nginx、设置开机自启动
systemctl start nginx
systemctl enable nginx
查看运行状态
systemctl status nginx
在nginx配置文件下添加uwsgi的路径
cd /etc/nginx/
对配置文件做备份
cp -v nginx.conf nginx.conf.backup
vim nginx.conf
upstream uwsgi {
server 127.0.0.1:8000;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
charset utf-8;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://uwsgi;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
配置完成后重启服务器使配置生效
systemctl restart nginx
屏蔽8000端口
找到之前新建的uwsgi的配置文件,修改内容
日志跟踪nginx
cd /etc/nginx
vim nginx.conf
access_log /var/log/nginx/nginx-uwsgi.log;
修改django的静态文件并配置到nginx中
找到django项目的settings文件
import os
STATIC_ROOT=os.path.join(BASE_DIR,'static/')
python manage.py collectstatic
应用场景:线上部署(Linux) 注意:执行时,需要与manag.py处于同一路径下
作用:执行该命令时,将所有STATICFILES_DIRS中的所有文件夹中的文件及各APP中static中的文件都复制到
静态文件根目录下:STATIC_ROOT
把静态文件配置到服务器中
cd /etc/nginx
ls
vim nginx.conf
location /static{
alias /opt/项目名称/static;
}
重启nginx
systemctl restart nginx
生成迁移文件
python manage.py makemigrations users
python manage.py makemigrations home
可能的错误:django.db.utils.IntegrityError: (1215, ‘Cannot add foreign key constraint’) site:blog.csdn.net
# 修改settings.py,在配置DATABASES中,添加以下代码,取消外键检查
'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;",
}
执行迁移文件
python manage.py migrate
测试项目
#80端口是nginx使用的
python manage.py runserver 0.0.0.0:81
运行起来之后,打开浏览器,输入虚拟机的地址,跟上81端口号
需要我们添加分类管理
创建管理员账户
python manage.py createsuperuser
接着按照提示来就行
浏览器输入管理员站点,登录管理员账户,添加分类类别
项目运行成功
使用uwsgi+nginx部署项目
完成配置文件的修改后,通过脚本启动项目
uwsgi --ini 脚本名.ini
启动之后,在浏览器输入虚拟机地址:端口号,查看项目
端口号为nginx.conf文件中配置的端口号,我使用的是1000
uwsgi配置启动文件内容:
对于部署后的账号,我直接往数据库中插入了一条账号数据,密码和管理员相同