本文章的前提是django项目调试已经完成
环境配置
-
安装nginx
sudo apt-get install nginx
-
安装uwsgi
sudo apt-get install libpython3.6-dev
pip install uwsgi
数据库修改字符集(方便插入中文)
修改mysql的配置文件
cd /etc/mysql/mysql.conf.d
sudo cp mysql.cnf mysql.cnf.bak # 修改前先备个份
sudo vim mysql.cnf
在[mysqld]下增加一句:
character_set_server = utf8
保存并重启服务
sudo systemctl restart mysql.service #重启服务
Nginx 配置
include /etc/nginx/sites-enabled/*;
-
配置文件
到/etc/nginx/sites-available 下写配置文件
cd /etc/nginx/sites-available
复制新建一个站点配置文件
sudo cp default your.example.com.conf
sudo vim your.example.com.conf
开始配置
server { listen 80; server_name blog.19950314nina.top; charset utf-8; client_max_body_size 75M; location /static { # 注意静态文件路径配置 alias /home/guoxd/temp/myblog/; } location / { include /etc/nginx/uwsgi_params; # uwsgi_params的>位置, 否则域名无>法访问, 一般与nginx默认配置目录同级 uwsgi_pass 127.0.0.1:8000; # 端口与uwsgi一致 } }
因为是多站,在这里再写一个站点配置
sudo cp default your.example2.com.conf
sudo vim your.example2.com.conf
开始配置
server { listen 80; server_name bt.19950314nina.top; charset utf-8; client_max_body_size 75M; location /static { # 注意静态文件路径配置 alias /home/guoxd/temp/bt/; } location / { include /etc/nginx/uwsgi_params; # uwsgi_params的>位置, 否则域名无>法访问, 一般与nginx默认配置目录同级 uwsgi_pass 127.0.0.1:8001; # 端口与uwsgi一致 } }
创建存放静态文件的文件夹,先创建好,接下来会用到
mkdir -p /home/guoxd/temp/bt
mkdir -p /home/guoxd/temp/myblog
到sites-enabled文件夹,创建软连接,使配置生效
cd /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/your.example.com.conf your.example.com.conf
sudo ln -s /etc/nginx/sites-available/your.example2.com.conf your.example2.com.conf
-
Nginx的使用
sudo nginx -t #对nginx配置是否正确进行测试
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful # 输出这两句,说明配置没问题sudo nginx -s reload # 重启服务 修改完配置,重启后生效
到这里nginx里的站点配置完成
Uwsgi 配置
我在测试时,两个django项目的路径
/home/guoxd/testpro/project2
/home/guoxd/testpro/project3
- uwsgi 配置文件
到项目目录下新建一个 uwsgi.ini 配置文件
cd /home/guoxd/testpro/project2
vim uwsgi.ini
开始配置
[uwsgi]
# 注意 这个端口 要与 对应的站点配置中的端口一致
socket=0.0.0.0:8001
# 项目目录
chdir=/home/guoxd/testpro/project2
# wsgi 文件
wsgi-file=project2/wsgi.py
processes=4
threads=2
master=True
pidfile=uwsgi.pid
daemonize=uwsgi.log
同理在另外的项目中也进行类似的配置, 路径与端口修改一下即可.
到这里,uwsgi的简单配置就完成了.
- uwsgi的使用
uwsgi --ini uwsgi.ini # 启动 uwsgi --stop uwsgi.pid # 停止
Django 配置
修改settings文件
#在settings开头修改 DEBUG=False allow = ['*'] # 在settings末尾添加 STATIC_ROOT = '/home/guoxd/temp/project2/bt' # 执行 collectstatic 时 文件路径 STATIC_URL = '/static/' #把STATICFILES_DIRS注释掉 ''' STATICFILES_DIRS =[ os.path.join(BASE_DIR, 'static'), ] '''
收集静态文件
python manage.py collectstatic
收集完成后,将静态文件复制到nginx站点配置时 对应的静态文件路径下
- 数据库
python manage.py makemigrations
python manage.py migrate
在这里,记录一个mysql 导出和导入的命令
mysqldump -u(username) -p(password) (database_name) (something).sql #导出sql数据库
示例: mysqldump -uroot -p123 bt bt.sql
mysql -u(username) -p(password) --database (database_name) < (something).sql # 导入数据库
示例:mysql -uroot -p123 --database bt < bt.sql # 导入数据库
启动
在django项目下 启动
uwsgi --ini uwsgi.ini