安裝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 //重啓項目
複製代碼