在阿里雲Centos7.6中部署nginx1.16+uwsgi2.0.18+Django2.0.4

原文轉載自「劉悅的技術博客」v3u.cn/a_id_72python

一直以來想寫一篇完整的在阿里雲服務器上部署Django服務結合uwsgi,而且經過nginx作反向代理。由於網上的攻略魚龍混雜,加上技術不斷更新,一些年代久遠的文章很容易讓人在部署的過程當中掉坑裏,沒法自拔,因此本篇文章以最新的阿里雲服務器centos7.6爲背景,徹底闡述如何部署,親測可用,其實要說難點徹底沒有,只要循序漸進,就不會有問題。mysql

當你購買了阿里雲的ecs,涉及ecs的有兩個密碼,必定要搞清楚,一個密碼是遠程連接密碼,也就是經過瀏覽器鏈接服務器的密碼,另一個是實例密碼,這個密碼就是ecs的root密碼,通常狀況下,咱們常常用到的是實例密碼。nginx

與此同時,須要設置一下安全組策略,將一些必要的端口暴露出來,不然會被攔截c++

前置操做完成,就能夠進行軟件的安裝了,能夠經過一些三方的ssh軟件進行鏈接,win下面流行的putty,xshell,moba等,這裏推薦使用moba,能夠語法高亮而且自動記住密碼web

安裝python3 和 django 以及一些django擴展redis

yum install epel-release

yum install python36

wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py

python3 get-pip.py

安裝django 
複製代碼
pip3 install pymysql

pip3 install pillow

pip3 install pycryptodome

pip3 install cryptography

pip3 install Django==2.0.4

pip3 install djangorestframework

pip3 install django-cors-headers

pip3 install celery

pip3 install celery-with-redis

pip3 install django-celery
複製代碼
pip3 install dwebsocket 
複製代碼
安裝opencv-python
複製代碼
複製代碼

yum install numpy opencv* pip3 install opencv-python yum whatprovides libstdc++.so.6 yum install libstdc++-4.4.7-3.el6.i686 yum install libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=falsesql

複製代碼

新建工程,而且測試mongodb

django-admin startproject mypro
cd mypro
python3 manage.py runserver 0.0.0.0:8000
複製代碼

安裝mysqlshell

wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'

rpm -Uvh mysql57-community-release-el7-11.noarch.rpm

yum install -y mysql-community-server
#啓動服務
systemctl start mysqld
#查看服務狀態
systemctl status mysqld

查看數據庫密碼
grep 'temporary password' /var/log/mysqld.log
複製代碼
而後利用這個密碼進入mysql命令行 mysql -uroot -p查到的密碼

SET PASSWORD = PASSWORD('Admin123!');

設置遠程登陸
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;

vim /etc/my.cnf
在[mysqld]下面添加,不須要分號
字符集:注意是utf8而不是utf-8!
character-set-server=utf8
這時候使用show variables like 'char%';就能夠查看到字符集都是utf8了
sql支持group by語句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
設置時區爲東八區
default-time_zone = '+8:00'

重啓服務
systemctl restart mysqld

設置開機啓動
systemctl enable mysqld
systemctl daemon-reload

若是須要更改成簡單的密碼

1.中止mysql服務

systemctl stop mysqld.service


2.修改配置文件無密碼登陸

vim  /etc/my.cnf

在最後加上

skip-grant-tables

保存

3.啓動mysql

systemctl  start  mysqld.service


4.登陸mysql

mysql -u root

注意這裏不要加-p

5.修改密碼,mysql5.7用此語法

use mysql;

update mysql.user set authentication_string=password('123456') where user='root' ;  

6.回到第二部把剛加的那句刪掉

保存,重啓mysql就能夠了
複製代碼

測試mysql服務數據庫

安裝redis

yum install redis

啓動服務
systemctl start redis

查看版本號
redis-cli --version

設置開機啓動
systemctl enable redis.service
複製代碼

測試redis服務

安裝mongodb

vim /etc/yum.repos.d/mongodb-org-3.4.repo

#添加如下內容:
[mongodb-org-3.4]  
name=MongoDB Repository  
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/  
gpgcheck=0
enabled=1  
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

清空緩存
yum makecache

安裝
yum -y install mongodb-org

啓動服務
systemctl start mongod.service

中止服務
systemctl stop mongod.service

查看服務狀態
systemctl status mongod.service

重啓服務
systemctl restart mongod.service
複製代碼

測試mongo

安裝nginx

#設置源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

#安裝
yum install -y nginx

#啓動服務
systemctl start nginx.service

#關閉服務
systemctl stop nginx.service

#開機自啓
systemctl enable nginx.service

#修改配置文件

vim /etc/nginx/conf.d/default.conf

改爲下面的配置

server {
  listen   80;
  server_name localhost;

  access_log   /root/myweb_access.log;
  error_log   /root/myweb_error.log;


  client_max_body_size 75M;


  location / {
    include uwsgi_params;
        uwsgi_pass 127.0.0.1:8000;
    uwsgi_param UWSGI_SCRIPT mypro.wsgi;
    uwsgi_param UWSGI_CHDIR /root/mypro;

  }

  location /static {
    alias /root/mypro/static;
  }
}
複製代碼
設置項目權限
chmod -R 755 /root/mypro 
複製代碼
#修改配置
vim /etc/nginx/nginx.conf
將第一行改成 user root; 
複製代碼
而後重啓nginx
複製代碼
測試nginx服務,這裏注意下,在不修改nginx配置文件的時候纔會出現下面的歡迎頁面,若是修改了之後是不能訪問默認歡迎頁面的
複製代碼
![](https://v3u.cn/v3u/Public/js/editor/attached/image/20190505/20190505115535_20740.png) 
複製代碼

安裝uwsgi

uWSGI自己也是web服務器,但由於性能不高,經過nginx中轉可以發揮更好的效果

安裝依賴
yum install python36-devel

安裝
pip3 install uwsgi

軟鏈接
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

進入項目目錄啓動服務
uwsgi --http :8000 --module mypro.wsgi

效果和 python3 manage.py runserver 0.0.0.0:8000一致

熱啓動
uwsgi --http :8000 --module mypro.wsgi --py-autoreload=1

進入項目,編寫uwsgi.ini配置文件 vim mypro_uwsgi.ini 
複製代碼
複製代碼

[uwsgi]

chdir = /root/mypro module = mypro.wsgi master = true processes = 3 socket = 0.0.0.0:8000 vacuum = true pythonpath = /usr/bin/python3 pidfile = /root/mypro/mypro.pid daemonize = /root/mypro/uwsgi.log

複製代碼
啓動項目,這裏須要注意下,若是你想用uwsgi獨立訪問網站,就須要把上面配置文件中的socket改爲http,若是想用nginx代理,就寫成socket

uwsgi --ini mypro_uwsgi.ini

後臺啓動

uwsgi -d --ini mypro_uwsgi.ini
複製代碼
殺死和關閉 uwsgi服務
複製代碼
killall -s INT /usr/local/bin/uwsgi
複製代碼
中止服務
複製代碼
uwsgi --stop mypro.pid
複製代碼
重載服務
複製代碼
uwsgi --reload mypro.pid

查看服務

ps aux|grep uwsgi
複製代碼

最後,nginx經過監聽80端口反向代理uwsgi啓動的django服務,訪問網站進行測試

大功告成

原文轉載自「劉悅的技術博客」 v3u.cn/a_id_72

相關文章
相關標籤/搜索