項目上線部署步驟

第一步:安裝虛擬機

安裝VMware,地址filehippo.com/download_vm… 而後安裝Ubuntu,Ubuntu本身下載html

第二步:建立root用戶

安裝好Ubuntu以後建立一個root用戶,這是超級管理員用戶,擁有最大權限。python

sudo passwd root //建立root用戶
//而後終端顯示Enter new unix password,輸入密碼按enter再次輸入密碼便建立了
複製代碼

而後更新系統android

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以後須要修改文件,安裝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
複製代碼

第五步: 安裝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/下建立了啓動腳本nginxvim

  • 能夠在項目目錄同目錄下或者項目目錄下建立一個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文件參考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;
複製代碼
  • 這樣咱們就能夠將項目跟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 //重啓項目
複製代碼
相關文章
相關標籤/搜索