- 环境:Ubuntu18
一、Python与虚拟环境
1.升级python与pip
一、安装(Ubuntu18
已内置安装Python3.6
):
sudo apt install python3
sudo apt install python3-pip
二、环境配置:
# 删除原来的软链接
sudo rm -rf /usr/bin/python
sudo rm -rf /usr/bin/pip
# 建立新的软链接
sudo ln -s /usr/bin/python3 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip
至此,系统使用的python
与pip
皆为所安装的最新版本。
2.安装并激活虚拟环境
①安装:
pip install virtualenv
pip install virtualenvwrapper
②配置:使用编辑器打开/home/ubuntu/.bashrc
(~/.bashrc
)文件,在文件末端输入:
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh
然后执行:
source ~/.bashrc
如果出现错误提示:
则再执行:
python -m pip install --user virtualenvwrapper --upgrade
③管理虚拟环境:
- 创建虚拟环境
mkvirtualenv -p python Blogenv
- 查看已创建的虚拟环境
lsvirtualenv
- 激活/切换虚拟环境
workon Blogenv
- 退出当前虚拟环境
deactivate
- 删除虚拟环境
rmvirtualenv Blogenv
- 进入虚拟环境目录
cdvirtualenv
- 进入虚拟环境包安装目录
cdsitepackages
3.安装项目所需包
在开发环境的项目目录下,执行:
pip freeze > requirements.txt
在服务器上,根据requirements.txt
安装所需包(需将项目文件传输到服务器):
pip install -r requirements.txt
在当前虚拟环境安装项目运行所需的所有包。
二、安装配置MySql数据库
具体的安装见Ubuntu18安装配置MySql数据库,这里需要做的是创建好数据库,并在项目的settings.py
中做好配置。
配置完成后,执行迁移脚本:
python manage.py migrate
理论上完成上述操作后,就可以在测试服务器上运行项目了,执行:
python manage.py runserver 0.0.0.0:8000
然后在浏览器中输入服务器公网ip:8000
若能正常访问,表示上述操作正常。
三、安装并测试uwsgi
pip install uwsgi
进入项目目录下,执行:
uwsgi --http :8000 --module MyBlog.wsgi
同样,若能访问,说明uwsgi
安装成功
四、安装配置nginx
sudo apt install nginx -y
拷贝配置参数至项目目录下,执行:
cp /etc/nginx/uwsgi_params .
cd ..
退出到项目目录的上一层,sudo vim uwsgi.ini
新建初始化文件,输入:
[uwsgi]
chdir=/srv/MyBlog # 项目目录
module=MyBlog.wsgi:application
pythonhome=~/.virtualenvs/Blogenv # 虚拟环境的位置(通过cdvirtualenv查看虚拟环境位置)
master=true
processes=10
socket=:8001
chmod-socket = 666
vacuum=true
执行命令:uwsgi --ini uwsgi.ini
,若运行正常,则说明配置正确。
可能遇到的问题:
解决:
- 确保正确配置了使用的
python
(虚拟环境)的位置(使用pythonhome
配置而非home
);- 虚拟环境的python版本错误,删除虚拟环境后重新安装,使用
mkvirtualenv -p /usr/bin/python3 MyBlogenv
进入到项目目录下,sudo vim MyBlog_nginx.conf
新建配置文件(注意路径配置都需使用绝对路径):
upstream django {
# server unix:/root/xueyiwang/xueyiwang.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server
server {
# the port your site will be served on
listen 80;
# the domain name it will serve for
server_name wjiaman.fun; # substitute your machine's IP address or FQDN
charset utf-8;
# max upload size
client_max_body_size 75M; # adjust to taste
# Django media
location /media {
alias /srv/MyBlog/media; # your Django project's media files - amend as required
}
location /static {
alias /srv/MyBlog/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /srv/MyBlog/uwsgi_params; # the uwsgi_params file you installed
}
}
使用sudo nginx -t
来测试配置文件能否正常使用,再使用sudo service nginx restart
重启nginx服务器。
可能遇到的问题:
此时通过公网ip
,访问到仍是nginx默认的欢迎页,此时需进入/etc/nginx/sites-enabled
,sudo vim default
编辑default文件,将其中监听的:listen 80 default_server; listen [::]:80 default_server;
随便改为其他的端口:
llisten 81 default_server; listen [::]:81 default_server;
重启,此时可以直接通过服务器的
ip
访问到部署的项目。