服务器用的是阿里云,系统为ubuntu
阿里云-常用命令
ssh 用户名(默认为root)@公网IP
ssh root@xx.xxx.xxx.xx
服务器与本地的文件传输
- Mac: FileZilla
- Win: WinSCP
# Remove all BOM characters
:set nobomb
Nginx
常用命令
# Nginx的安装路径在/etc/nginx/
# 建立软链接
ln -s /etc/nginx/sites-available/xxx.conf /etc/nginx/nginx.conf
# 查看,启动和停止Nginx
service nginx status/start/stop/restart/reload # 只reload普通配置
# 开启Nginx后,默认端口为80
# 别忘了改掉默认端口 /etc/nginx/sites-available/default
配置文件
/etc/nginx/sites-available/xxxxx.conf
# the upstream component nginx needs to connect to
upstream django {
#server unix:///var/www/WishList/backend/mysite.sock; # for a file socket
#server 127.0.0.1:8000; # for a web port socket (we'll use this first)
server django-back-end.com;
}
# configuration of the server
server {
# ssl的监听端口
listen 443;
root /etc/nginx/build; # 静态文件的路径
server_name www.xxxxx.com;
index index.html index.htm;
access_log /var/log/nginx/nginx-access.log;
error_log /var/log/nginx/nginx-error.log;
### ssl 证书配置 ###
ssl on;
ssl_certificate cert/xxxxx.pem;
ssl_certificate_key cert/xxxxx.key;
ssl_session_timeout 5m;
ssl_ciphers aaabbbccc;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
######
location / {
try_files $uri /index.html;
### 跨域配置 ###
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
if ($request_method ~* "(GET|POST)") {
add_header "Access-Control-Allow-Origin" *;
}
if ($request_method = OPTIONS ) {
add_header "Access-Control-Allow-Origin" *;
add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
add_header "Access-Control-Allow-Headers" "Authorization, Origin,
X-Requested-With, Content-Type, Accept";
return 200;
}
###
# the domain name it will serve for
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# send all non-media requests to the Django server.
location /api/* {
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always;
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
}
}
server {
# 网站的端口
listen 80;
server_name xxxxx.com;
# 强行ssl加密
rewrite ^(.*) https://www.mayyourwishescometrue.site/$1 permanent;
}
uWSGI
尝试部署Django到uWSGI, 外网可以访问 公网IP:port,但是部署在Nginx的静态页面无法访问Django后端,显示错误信息net:CONNECTIONREFUSED
,推测是跨域问题
最后Django部署在了Heroku上
常用命令
# 占用8000端口的应用
lsof -i:8000
#测试uwsgi是否安装成功,注意开启阿里云安全组
uwsgi --http :8000 --wsgi-file test.py
# 测试
python3
import requests
requests.get('http://127.0.0.1:8000')
# 部署Django
uwsgi --ini uwsgi.ini
配置文件
配置文件所在路径
/var/www/myProject/backend/uwsgi.ini
uwsgi.ini
[uwsgi]
chdir = /var/www/myProject/backend
wsgi-file = /var/www/myProject/backend/wsgi.py
# the virtualenv (full path)
home=/var/www/myProjectEnvironment
master = true
# maximum number of worker processes
processes = 10
# the socket (use the full path to be safe
chmod-socket = 666
socket = /var/www/myProject/backend/mysite.sock
daemonize = wsgi.log
pidfile = uwsgi.pid
vacuum = true
buffer-size=32768