更新ubuntu系统
sudo apt-get update
sudo apt-get upgrade
安装nginx
- 安装
apt-get install nginx
- 查看版本
nginx -V
创建虚拟环境
- 安装pip
sudo apt-get install python3-pip
- 升级pip
sudo pip3 install --upgrade pip
- 安装virtualenv虚拟环境
sudo pip3 install virtualenv
- 安装virtualenvwrapper
sudo pip3 install virtualenvwrapper
- 创建目录保存虚拟环境
mkdir $HOME/.virtualenvs
- 如果在更新pip3后使用出现
ImportError: cannot import name main
解决方法:进入/usr/bin/pip3 进行修改修改
将这三行
from pip import main
if __name__ == '__main__':
sys.exit(main())
修改为下面内容后就可以了(ps:如果还是不行,可以尝试退出重新连接一下)
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__.main())
- 接下来在~/.bashrc中添加以下内容
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
- 运行
source ~/.bashrc
- 创建虚拟环境
mkvirtualenv [虚拟环境名]
- 进入虚拟环境
workon myblog_env/bin/activate
安装uwsgi
- 安装
pip install uwsgi
- 查看uwsgi版本
uwsgi --version
- 测试uwsgi,创建test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
- 用uwsgi运行test.py
uwsgi --http :8000 --wsgi-file test.py
- 访问服务器ip:8000,如果出现hello world则说明uwsgi已经能够正常使用了
配置nginx和uwsgi
- 在/home/ubuntu/中创建nginx.conf并在文件中添加以下内容
upstream django{
server 127.0.0.1:8001; # 设置socket端口
}
server {
listen 80; # 监听端口
server_name .hluner.cn;# 自己的域名
charset utf-8;
client_max_body_size 75M; # 最大上传
location /media {
alias /home/ubuntu/myblog/media; # Django项目的media
}
location /static {
alias /home/ubuntu/myblog/static; # Django项目的静态目录
}
location / {
include /home/ubuntu/uwsgi_params; # uwsgi_params绝对路径
uwsgi_pass django; # 对应最上面设置的socket套接字
}
}
创建uwsgi.ini添加
[uwsgi]
# 项目目录
chdir=/home/ubuntu/myblog/
# 指定项目的application
module=myblog.wsgi:application
# 进程个数
workers=5
# 指定静态文件
static-map=/static=/home/ubuntu/myblog/static
# 启用主进程,对应使用的虚拟环境
home=/root/.virtualenvs/myblog_env
master=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 指定socket的文件路径
socket=:8001
vacuum = true
创建uwsgi_params 添加
uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param REQUEST_SCHEME $scheme;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
其中uwsgi_params的内容是固定的,其余两个要根据项目自己编写
在setting.py中添加
STATIC_ROOT ='静态文件的存储位置'
然后需要收集静态文件
python manage.py collectstatic
让nginx.conf生效
- 进入目录
cd /etc/nginx/sites-enabled/
- 删除其中默认的文件
rm default
- 创建软链接
ln -s /home/ubuntu/nginx.conf [重命名名称]
- 重启nginx服务
/etc/init.d/nginx restart
- 进入到/home/ubuntu启动uwsgi
uwsgi --ini uwsgi.ini
输入ip:80查看如果项目启动成功就可以了
- 退出虚拟环境,在真实环境中安装uwsgi,通过外部的uwsgi连接到虚拟环境中的uwsgi
pip3 install uwsgi
- 为了让项目在后台直接运行可以将启动命令写到 /etc/rc.local中
cd /etc/rc.local
在其中添加
/usr/local/bin/uwsgi --ini /home/ubuntu/uwsgi.ini
- 重启服务器
reboot
如果重启成功后访问ip就可以看到项目正常运行则说明已经部署成功
网友评论