nginx uwsgi django supervisord Centos部署

1,建立工程目錄css

mkdir /hk 做爲主工做目錄
cd /hk

2,nginx 安裝html

wget  nginx.org/packages/mainline/centos/7/x86_64/RPMS/nginx-1.9.9-1.el7.ngx.x86_64.rpm
rpm -ivh nginx-1.9.9-1.el7.ngx.x86_64.rpm
yum install nginx
systemctl start nginx.service
//在Centos7 下原service 變成systemctl
systemctl enable nginx.service 
//設置nginx 開機啓動
// nginx 參數配置
cd /etc/nginx/conf.d
vim myproject.conf
//內容以下
server {
	listen 80;
    server_name 192.168.1.198; //本機IP或者域名
  	charset utf-8;
	
	client_max_body_size 75M;
	
	location /media {
		alias /hk/myproject/media;
	}
     
        location /static {
		alias /hk/myproject/static;
	}

	location / {
		uwsgi_pass 127.0.0.1:8001; //關鍵參數,這個參數就是nginx與uwsgi鏈接的套接字
		include /etc/nginx/uwsgi_params;
	}
}

3, 建立django projectpython

django-admin.py startproject myproject
cd myproject
python manage.py startapp mysites
vim myproject/settings.py 
//加入app mysites 保存
python manage.py migrate
# 防火牆開放端口 8001 用於測試,用後須要關閉
firewall-cmd --add-port=8001/tcp --permanent
firewall-cmd reload
python runserver 0.0.0.0:8001
//在其它電腦輸入IP:8001就是django默認的首頁了

// 這是一個最基本的工程,就只是django的默認的首頁
// 通常狀況下須要在/hk/myproject 下還要增長如 static 靜太文件, templates 這些文件夾
// 在這種狀況下,django的後臺默認的css是不能加載,須要collection static

4,uwsgi 安裝mysql

pip install uwsgi
# 防火牆開放端口 8001 用於測試,用後須要關閉
firewall-cmd --add-port=8001/tcp --permanent
firewall-cmd reload
cd /hk/myproject
# 建立測試uwsgi服務器
vim test_uwsgi.py
//內容以下
def application(env, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return 'Hello World'
//保存 執行以下命令
uwsgi --http :8001 --wsgi-file test_uwsgi.py
//這個時修改在其它電腦輸入IP地址:8001就會出現
//Hello World
//表示uwsgi服務良好
//但這並非咱們想要的目的
//咱們須要在uwsgi 是配製文件式
//因此建立 /hk/uwsgi_myproject.ini
//並在文件里加入
[uwsgi]
socket = 127.0.0.1:8001
chdir = /hk/myprject/
wsgi-file = myprject/wsgi.py
master = true
processes = 2
threads = 2
limit-as = 512
deamonize = /var/log/uwsgi/uwsgi8001.log
//保存
uwsgi --ini /hk/hkwebsite/uwsgi_myproject.ini & 
// 這個是已經後臺進程運行了

5 運行nginx

//咱們先運uwsgi 
uwsgi --ini /hk/hkwebsite/uwsgi_myproject.ini & 
// 因爲防火牆的存這個nginx與uwsgi是不能建鏈接的,也就是轉發如要開啓這項功能,代碼以下
setsebool -P httpd_can_network_connect 1
//而後 從新加載
systemctl reload nginx.service
// 在其它電腦輸入IP地址就,nginx默認端口80就轉發uwsgi 8001上了
// 關閉外網直接訪問8001端口, 開啓防火牆
firewall-cmd --zone=public --remove-port=8001/tcp --permanent
firewall-cmd --reload

6 加入supervisorgit

//保證開機自啓動, 通常狀況下還會有mysql redis 這樣的服務須要啓動,在centos下默認爲啓動就能夠了
//對於程序,還須要更多的一些內容
//如django 里加入celery 作定任務,
//如後臺tcp服務器,都須要作成supervisor管理的任務,當出現問題的時候能快束的被發現
//supervisor 配置
[program:myproject]
command=uwsgi --ini /hk/uwsgi_myproject.ini             ; the program (relative uses PATH, can take args)
stopsignal=QUIT
autostart=true
autrestart=true

//supervisord.conf開機啓動
vim /lib/systemd/system/supervisord.service
# dservice for systemd (CentOS 7.0+) 
# by ET-CS (https://github.com/ET-CS) 
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /hk/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

# 保存後
開啓開機啓動
systemctl enable supervisord.service 

systemctl start/restart/stop supervisord.service
# reboot

開機就自行啓動,若是咱們須要在增長supervisor來管理程序,只須要在supervisord.conf 方件裏增長相關程序就能夠了
相關文章
相關標籤/搜索