八、小试牛刀
1.部署一个简单的uwsgi程序:
在/data目录下新建uwsgi_test.py程序,内容如下:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello uwsgi"]
启动该程序:
cd /data/env/pyweb/bin
source activate
uwsgi --http :9090 --wsgi-file uwsgi_test.py
程序运行效果:
2. 部署一个django demo站点
2.1、初始化站点
cd /data/wwwroot
source /data/env/pyweb/bin/activate
python /data/env/pyweb/bin/django-admin.py startproject mysite
新建项目成功后mysite文件夹下内容如下:
2.2、新建应用blog
python manage.py startapp blog
出现如下错误:
解决方法(修改sqlite源码中版本检查部分):
-1、获取site-package的路径
- 2.修改sqlite源码中版本检查部分
site-packages/django/db/backends/sqlite3/base.py
2.3、修改settings.py
编辑项目里mysite/settings.py文件,
vi /data/wwwroot/mysite/mysite/settings.py
- 在INSTALLED_APPS 列表里添加’blog’应用
- 修改ALLOWED_HOSTS,[‘*’],可以让任何IP访问
- TEMPLATES里添加模板路径os.path.join(BASE_DIR, ‘templates’)
- 尾部追加静态文件路径
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)
2.4、添加模版文件
在templates下添加index.html文件,输入下面内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>我的网站</title>
</head>
<body>
<h1>欢迎光临我的网站!</h1>
</body>
</html>
该文件的路径如下:
vi /data/wwwroot/mystie/templates/index.html
2.5、配置URL
配置项目根目录下的url(将blog应用下的子url包含进来)
vi /data/wwwroot/mysite/mysite/urls.py
from django.contrib import admin
from django.urls import path
from django.urls.conf import include
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', include('blog.urls')),
]
配置blog子应用下的url
vi /data/wwwroot/mysite/blog/urls.py
from django.urls import path
from django.urls.resolvers import URLPattern
from . import views
urlpatterns = [
path('blog/',views.index,name='index'),
]
2.6、编辑视图函数
编辑blog应用中的视图函数,返回静态html页面
from django.shortcuts import render
def index(request):
return render(request,'index.html')
2. 7、测试
启动应用:
访问测试:
至此,一个django应用启动成功!
; 3. 配置uwsgi
网站项目路径是 /data/wwwroot/mysite/,在项目根目录下创建mysite.xml文件,此时项目结构见下图,输入如下内容:
<uwsgi>
<socket>127.0.0.1:8000</socket><!-- 内部端口,自定义 不过需要跟nginx.conf中的端口号一致-->
<chdir>/data/wwwroot/mysite/</chdir><!-- 项目路径 -->
<module>mysite.wsgi</module>
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 -->
</uwsgi>
4. 配置nginx
nginx一般默认安装好的路径为/usr/local/nginx
在/usr/local/nginx/conf/中先备份一下nginx.conf文件,以防意外。
cp nginx.conf nginx.conf.bak
然后打开nginx.conf,把原来的内容删除,直接加入以下内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 80;
server_name 39.100.83.185;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; // 需根mysite.xml文件中配置的端口号一致
uwsgi_param UWSGI_SCRIPT mysite.wsgi;
uwsgi_param UWSGI_CHDIR /data/wwwroot/mysite;
}
location /static/ {
alias data/wwwroot/mysite/static/;
}
}
}
执行./nginx -t命令先检查配置文件是否有错,
nginx -t
没有错就执行以下命令:
进入网站项目目录
cd /data/wwwroot/mysite/
执行下面命令:
uwsgi -x mysite.xml
以上步骤都没有出错的话,执行:
./nginx -s reload
重启nginx ,然后在浏览器里访问你的项目地址!
九、大显身手
1、部署后端django应用
- django后端程序上传至/data/wwwroot目录下
scp -r scp -r /Users/xiangjun/Desktop/jieyueprj/jieyueadmin/assets_admin.zip root@39.100.83.185:/data/wwwroot/
unzip assets_admin.zip
- 用VScode远程登陆到服务器并打开assets_admin文件夹
- 创建数据库
登陆进数据库后,使用以下命令创建数据库
create database assets;
- 修改/data/wwwroot/assets_admin/assets_admin/settings.py中的数据库配置部分
- 迁移数据库(就在物理机中操作)
pip install pymysql
cd /data/wwwroot/assets_admin
pip3 freeze > requirements.txt
pip3 install -r requirements.txt
python manage.py makemigrations
python manage.py migrate
查看数据表结构
- 启动项目
cd /data/wwwroot/assets_admin
uwsgi --ini uwsgi.ini & nginx -s reload
nginx.conf中的注释用#,否则报如下错误!
启动后在浏览器访问:
成功访问到该接口!
- lsof工具安装
yum install lsof
- uwsgi启动与停止
uWSGI 通过 xxx.ini 启动后会在相同目录下生成一个 xxx.pid 的文件,里面只有一行内容是 uWSGI 的主进程的进程号。
uWSGI 启动:
uwsgi --ini xxx.ini
uwsgi 重启:
uwsgi --reload xxx.pid
uwsgi 停止:
uwsgi --stop xxx.pid
2、部署vue项目
在mac终端下运行以下命令打包前端工程
npm run build
scp -r /Users/xiangjun/Desktop/jieyueprj/jieyueadmin/adminweb/dist.zip root@39.100.83.185:/data/wwwroot
后台管理页面访问
39.100.83.185:8080
- 总结项目部署步骤:
1、在生产环境安装配置相同版本的环境
2、django项目迁移
scp -r /Users/xiangjun/Desktop/jieyueprj/jieyueadmin/adminweb/dist.zip root@39.100.83.185:/data/wwwroot
3、用uWSGI替代python3 manage.py runserve方法启动服务器
4、配置nginx反向代理
5、用nginx 配置静态文件路径,解决静态路径问题
参考链接:https://blog.csdn.net/weixin_38650871/article/details/123297674
Original: https://blog.csdn.net/weixin_38650871/article/details/124368359
Author: smileapples
Title: centos7使用nginx+uwsgi部署vue+django前后端分离项目(2)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733131/
转载文章受原作者版权保护。转载请注明原作者出处!