以下均以Ubuntu为例
阿里云创建实例
这有道云不能上传图片,简单描述,镜像选择的是Ubuntu,其他按照步骤来就行,注意添加规则,默认不添加MySQL的服务。
python环境搭建
# 更新软件
sudo apt-get update
# 安装python3和pip
sudo apt-get python3-dev
sudo apt-get install python3-pip
# 安装虚拟环境
pip3 install virtualenv
# 这个使用需要配置环境变量
pip3 install virtualenvwrapper
# 创建虚拟环境 下面详细介绍参数
virtualenv 环境名称 --python=python3.6 --no-site-packages
# 激活虚拟环境
source 环境名称/bin/activate
# 退出当前虚拟环境
deactivate
用法: virtualenv [OPTIONS] DEST_DIR
选项:
–version
显示当前版本号。
-h, –help
显示帮助信息。
-v, –verbose
显示详细信息。
-q, –quiet
不显示详细信息。
-p PYTHON_EXE, –python=PYTHON_EXE
指定所用的python解析器的版本,比如 –python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器
–clear
清空非root用户的安装,并重头开始创建隔离环境。
–no-site-packages
令隔离环境不能访问系统全局的site-packages目录。
–system-site-packages
令隔离环境可以访问系统全局的site-packages目录。
–unzip-setuptools
安装时解压Setuptools或Distribute
–relocatable
重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。
–distribute
使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。
–extra-search-dir=SEARCH_DIRS
用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的–extra-search-dir路径。
–never-download
禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。
–prompt==PROMPT
定义隔离环境的命令行前缀。
MySQL安装和配置
安装
sudo apt-get install mysql-server
初始化
# 初始进入没有密码
mysql -uroot -p
# 修改密码
update user set authentication_string=password("root") where user="root";
flush privileges;
# 远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
配置
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
修改 bind-address = 0.0.0.0
可以使用本地的navicat连接服务器的数据库
Git安装和配置
1.安装
sudo apt-get install git
2.配置
git config --global user.name ""
git config --global user.email ""
3.创建验证用的公钥
ssh-keygen -C 'you email address@gmail.com' -t rsa
4.添加key
cd ~/.ssh
打开 id_rsa.pub 将公钥添加至仓库服务器
5.拉去代码
git clone https://xxx/xxx.git
6.安装项目依赖
在搭建好的虚拟环境中
pip install -r requirements.txt
uwsgi安装和配置
安装
pip3 install uwsgi
运行测试
# uwsgi --http :8000 --home "虚拟环境" --chdir "项目目录" -w "wsgi文件"
uwsgi --http :8000 --home /home/env/testEnv/ --chdir /home/test/ -w test.wsgi
uwsgi.ini配置
[uwsgi]
# 项目根目录路径(full path)
chdir= /home/test/
# wsgi文件 两种表示方法
module=test.wsgi:application
# wsgi-file = test/wsgi.py
# 虚拟环境目录 (full path)
home=/home/env/testEnv/
# 启用主进程
master=true
# 后台程序的pid
pidfile = uwsgi.pid
# 最大工作进程数(CPU密集型建议设为CPU核心数,IO密集型建议设为CPU核心数的两倍)
processes =2
# unix套接字文
socket=127.0.0.1:8000
# socket文件权限
chmod-socket=777
# 退出时清空环境
vacuum=true
# 设置日志目录
daemonize = /home/test/test_log/run.log
# 表示不记录正常信息,只记录错误信息,否则你的日志可能很快就爆满了!
disable-logging = true
启动:uwsgi --ini uwsgi.init&
& 将一个进程放置到后台运行的时候,Bash 会提示这个进程的进程 ID
Nginx的安装和配置
下载解压
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -zxvf nginx-1.13.7.tar.gz
下载及解压目录 为 /home
安装
sudo ./configure
sudo make
sudo make install
# 一般安装完成之后可以在浏览器中输入IP地址测试是否成功
nginx一般默认安装好的路径为/usr/local/nginx
,进入/usr/local/nginx/conf/
目录,然后备份一下nginx.conf文件,以防意外。
sudo cp nginx.conf nginx.conf.bak
nginx.conf配置
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
...
server {
listen 80;
server_name 服务器名称/IP地址;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT 项目名称.wsgi;
uwsgi_param UWSGI_CHDIR /home/test/; # 项目的路径; uwsgi中配置的chdir
#root html;
#index index.html index.htm;
}
location /static/ {
alias /home/test/static/; #静态资源路径
}
...
}
}
至于静态资源路径,自己settings.py里怎么设置,你就按那个设置就好。下面会详细介绍
进入/usr/local/nginx/sbin/
目录,执行下面命令先检查配置文件是否有错:
./nginx -t
没有错就执行以下命令:
./nginx
终端没有任何提示就证明`nginx启动成功。
总结
配置完成上述内容,项目启动就可以直接在浏览器访问了。但是呢一般会遇到一些问题。别急,下面这篇点击查看详情:uWsgi+Nginx部署Django项目常见的问题及总结将会总结以下常见的问题,以及解决的方法。