安装VMware,地址filehippo.com/download_vm… 而后安装Ubuntu,Ubuntu本身下载html
安装好Ubuntu以后建立一个root用户,这是超级管理员用户,拥有最大权限。python
sudo passwd root //建立root用户
//而后终端显示Enter new unix password,输入密码按enter再次输入密码便建立了
复制代码
而后更新系统android
sudo apt-get update
复制代码
$ sudo apt-get install openssh-server
$ su -
vim /etc/ssh/sshd_config
#Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes
复制代码
service ssh restart
sudo apt-get -y install libxml2 libxml2-dev python-dev
sudo apt-get install python-pip
//升级pip
pip install --upgrade pip
复制代码
升级pip以后须要修改文件,安装vimnginx
sudo apt-get install vim-gtk
复制代码
安装以后web
sudo vim /user/bin/pip
//将原来的
from pip import main
//改为
from pip._internal import main
复制代码
而后安装虚拟环境shell
//安装
sudo pip install virtualenv
//建立虚拟环境目录
mkdir python27env
//进入目录
cd python27env
//建立虚拟环境
virtualenv envName
//进入虚拟环境
cd envName
//激活虚拟环境
source bin/activate
复制代码
这样咱们就能够在虚拟环境中安装相关依赖,若是咱们某个项目须要用到这个虚拟环境,咱们就能够进入这个虚拟环境来执行python manage.py runserverdjango
//进入虚拟环境以后安装相关依赖
pip install django==1.11.13 .......
pip install uwsgi
复制代码
//安装依赖
sudo apt-get -y install libpcre3 libpcre3-dev zlib1g-dev software-properties-common
sudo apt-get -y install nginx
复制代码
注:下面是nginx相关说明,仅供参考。 全部的配置文件都在/etc/nginx下,而且每一个虚拟主机已经安排在了/etc/nginx/sites-available下 启动程序文件在/usr/sbin/nginx 日志放在了/var/log/nginx中,分别是access.log和error.log 并已经在/etc/init.d/下建立了启动脚本nginxvim
server {
listen 80;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location /static {
alias /opt/web/miniboard/miniboard/static;
}
location / {
uwsgi_pass unix:///var/run/miniboard.sock;
include /opt/web/miniboard/uwsgi_params; //肯定项目根目录下有这个文件
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
复制代码
[uwsgi]
socket = /var/run/miniboard.sock
chdir = /opt/web/miniboard //项目目录
module = miniboard.wsgi:application
home = /opt/py2env/miniboard //须要运行的虚拟环境
touch-reload = /opt/web/miniboard/reload
master = true
processes = 4
chmod-socket = 666
env = LANG=en_US.UTF-8
复制代码
uwsgi_params文件参考bash
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 UWSGI_SCHEME $scheme;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;
复制代码
sudo ln -s /opt/web/nginx.conf /etc/nginx/sites-enabled/
// /opt/web/nginx.conf就是刚才咱们本身建立的那个conf文件,不是nginx目录下的conf
//检查一下无误
sudo nginx -t
复制代码
这样咱们就能够经过 uwsgi --ini uwsgi.ini来运行服务器而不是python manage.py runserver服务器
##最后一步: 经过supervisor来进行进程管理
apt- get install supervisor
复制代码
安装成功后,会在/etc/supervisor
目录下,生成supervisord.conf
配置文件。 conf基本不用修改 进程配置会读取/etc/supervisor/conf.d
目录下的*.conf
配置文件,咱们在此目录下建立一个projectName.conf
进程配置文件:
[program:projectName]
command=/opt/web/sh_project.sh //这个是sh文件的位置,须要你本身建立配置,这里只需保证路径正确就行
user=root
autorestart=true
redirect_stderr=true
startsecs=0
stopwaitsecs=0
autostart=true
stdout_logfile=/var/log/supervisor/androidSync.log
复制代码
在刚才配置supervisor时建立的conf指定的路径下建立一个sh_project.sh文件 里面写入shell命令
#!/bin/sh
ps aux | grep "uwsgi" | grep -v grep| cut -c 9-15|xargs kill -9 //筛选并杀死该进程
cd /opt/py2env/project //进入项目的虚拟环境
. bin/activate //激活虚拟环境
cd /opt/web/project //在虚拟环境下进入项目目录
uwsgi --ini uwsgi.ini //启动项目
复制代码
给文件赋予权限
chmod +x /opt/web/sh_projectname.sh
复制代码
更新一下
supervisorctl update projectName
//这里的projectName要跟刚才的配置文件里面的[program:projectName]一致
复制代码
supervisorctl start project //启动项目
supervisorctl stop project //暂停目录
supervisorctl restart project //重启项目
复制代码