社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

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

刘悦的技术博客 • 5 年前 • 722 次点击  
阅读 0

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

原文转载自「刘悦的技术博客」v3u.cn/a_id_72

一直以来想写一篇完整的在阿里云服务器上部署Django服务结合uwsgi,并且通过nginx做反向代理。因为网上的攻略鱼龙混杂,加上技术不断更新,一些年代久远的文章很容易让人在部署的过程中掉坑里,无法自拔,所以本篇文章以最新的阿里云服务器centos7.6为背景,完全阐述如何部署,亲测可用,其实要说难点完全没有,只要按部就班,就不会有问题。

当你购买了阿里云的ecs,涉及ecs的有两个密码,一定要搞清楚,一个密码是远程链接密码,也就是通过浏览器连接服务器的密码,另外一个是实例密码,这个密码就是ecs的root密码,一般情况下,我们经常用到的是实例密码。

与此同时,需要设置一下安全组策略,将一些必要的端口暴露出来,否则会被拦截

前置操作完成,就可以进行软件的安装了,可以通过一些三方的ssh软件进行连接,win下面流行的putty,xshell,moba等,这里推荐使用moba,可以语法高亮并且自动记住密码

安装python3 和 django 以及一些django扩展

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=false

复制代码

新建工程,并且测试

django-admin startproject mypro
cd mypro
python3 manage.py runserver 0.0.0.0:8000
复制代码

安装mysql

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/70682
 
722 次点击