第一步:安装虚拟机
安装VMware,地址https://filehippo.com/download_vmware-workstation-pro/
然后安装Ubuntu,Ubuntu自己下载
第二步:创建root用户
安装好Ubuntu之后创建一个root用户,这是超级管理员用户,拥有最大权限。
sudo passwd root //创建root用户
//然后终端显示Enter new unix password,输入密码按enter再次输入密码便创建了
然后更新系统
sudo apt-get update
第三步:配置ssh
- 首先安装ssh服务器
$ sudo apt-get install openssh-server
- 修改配置文件
$ su -
- 然后
vim /etc/ssh/sshd_config
- 修改一下内容
#Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes
- 重启ssh服务
service ssh restart
- 通过ifconfig查看ip地址
- 下载bitvise ssh client就可以通过ip地址连接到虚拟机
第四步:下载安装python以及相关依赖
sudo apt-get -y install libxml2 libxml2-dev python-dev
sudo apt-get install python-pip
//升级pip
pip install --upgrade pip
升级pip之后需要修改文件,安装vim
sudo apt-get install vim-gtk
安装之后
sudo vim /user/bin/pip
//将原来的
from pip import main
//改成
from pip._internal import main
然后安装虚拟环境
//安装
sudo pip install virtualenv
//创建虚拟环境目录
mkdir python27env
//进入目录
cd python27env
//创建虚拟环境
virtualenv envName
//进入虚拟环境
cd envName
//激活虚拟环境
source bin/activate
这样我们就可以在虚拟环境中安装相关依赖,如果我们某个项目需要用到这个虚拟环境,我们就可以进入这个虚拟环境来执行python manage.py runserver
//进入虚拟环境之后安装相关依赖
pip install django==1.11.13 .......
pip install uwsgi
第五步: 安装nginx
//安装依赖
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/下创建了启动脚本nginx
- 可以在项目目录同目录下或者项目目录下创建一个conf文件,文件内容参考
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_params 和uwsgi.ini文件
uwsgi.ini文件参考
[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文件参考
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;
- 这样我们就可以将项目跟nginx软连接了
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]一致
- 配置好之后,我们便可以通过supervisor来进行进程管理
supervisorctl start project //启动项目
supervisorctl stop project //暂停目录
supervisorctl restart project //重启项目
网友评论