前言
? ?? ?本文记录了本人在将由Django搭建的web迁移至服务器并发布的过程中踩的一些坑。可能存在一些无效操作,但结果是好的。。。如果发现错误欢迎指正。
前期准备
- 云服务器(我使用的是腾讯云的轻量应用服务器)
- 备案好的域名(用的也是腾讯云的)
- 由Django搭建好的web(也可以是没搭建好的。。。)
- 申请好的ssl证书
- vscode(自选,个人觉得vscode挺好用)
项目迁移
? ?? ?使用vscode的话直接利用Remote - SSH这个扩展连接云服务器,安装完扩展后依次点击图中1、2点击完之后选择C:\User\用户名.ssh.config 这里我们需要配置一下目标服务器的信息。如图 这里需要注意一下,腾讯云是不能直接用root用户连接的。
? ?? ?配置完成之后我们需要点右击刚刚配置好的主机名,选择连接。第一次登陆需要依次选择操作系统、继续? ?? ?这时候如果弹出1那个框就输入你刚刚配置的user对应的密码,没有弹出就点击右下角2处输入。(云服务器有时候可能因为各种原因连接不上,多重复两次就行,三次以上还不行就去排查配置、服务器的安全组等) ? ?? ?成功连接至云服务器后我们需要选择一下打开的文件夹,点击左上角打开项目的位置,看到1则连接成功,点击2,弹出3选择你想要迁移目标位置。 ? ?? ?选择好了之后需要重新输入一次密码,后面就简单了,新建文件夹等一系列操作都是和本地操作是一样的,可以直接拖动本地项目到目标位置也可以新建django项目(最好放在/home下,腾讯云因为是ubuntu用户连接,提示没有权限的话就在有权限的位置放置后打开终端,登录root用户cp文件夹过去就行了)。
服务器端配置
? ?? ?在终端进行的一系列安装
sudo apt-get update # 更新源 sudo apt-get install mysql-server # 安装数据库(mysql为例) systemctl status mysql # 验证数据库是否安装成功
sudo apt install python3-django # 安装django pip3 install django
sudo apt list --installed|grep -E ‘libmysqlclient-dev|python3-dev’ # 配置django数据库环境 sudo apt-get install python3-dev default-libmysqlclient-dev # 上面的不成功就用这个
sudo pip3 install mysqlclient
sudo pip3 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 安装uwsgi sudo pip3 freeze|grep -i ‘uwsgi’ # 查看uwsgi版本
sudo apt install nginx # 安装nginx nginx -v # 验证安装
项目结构
? ?? ?myproject文件夹后面有个/Baidu别看漏了
Django配置
? ?? ?除了对项目基础的配置配置外,在项目的settings.py中要对以下三项进行配置,第一个上线的话肯定要改成False,ALLOWED_HOSTS就是你的域名,第三个STATIC_ROOT是自己新增的,为了后面nginx加载做准备。前面的 '/home/myproject_static’是随便你自己新建的文件夹的完整路径,文件夹的访问权限给足了,防止因为访问权限的问题出错。
DEBUG = False ALLOWED_HOSTS = [".baidu.com"] STATIC_ROOT = ‘/home/myproject_static/static’
? ?? ?配置好之后执行
python3 manage.py collectstatic
这样就把项目中所有静态文件迁移至/home/myproject_static/static中了
uWSGI配置
? ?? ?在项目同名文件夹下,就是跟setting.py同级目录下新建一个uwsgi.ini文件。内容如下:
[uwsgi] ; socket = 127.0.0.1:8000 ; 当前工作路径 绝对路径 chdir = /home/myproject/Baidu ; wsgi.py路径,相对 chdir的路径 wsgi-file =Baidu/wsgi.py ; 主要是以上几项不能出错!!!!!!!!!!!!!! ; 进程数 process = 2 ; 每个进程的线程数 threads=8 ; 服务的pip记录文件 pidfile = uwsgi.pid ; 服务的日志文件开启文件 daemonize = uwsgi.log ; 开启主进程管理模式 master = true
uwsgi的一些操作命令,必须启动,每次修改之后都需要先停止后启动!!!(需要在“/home/myproject/Baidu/Baidu”路径下)
uwsgi --ini uwsgi.ini # 启动 uwsgi --stop uwsgi.pid # 停止 ps aux|grep ‘uwsgi’ # 查看进程
Nginx配置
这里参照腾讯云的文档,我ubuntu是改的下面这个文件,没试它的,但配置内容是一样的。
sudo vim /etc/nginx/sites-enabled/default
配置完成之后重启nginx
sudo /etc/init.d/nginx restart
每次修改项目之后都需要 停止uWSGI -> 启动uWSGI -> 重启nginx
|