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

    一直以来想写一篇完整的在阿里云服务器上部署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 Django==2.0.4 pip3 install djangorestframework pip3 install django-cors-headers pip3 install celery pip3 install celery-with-redis pip3 install django-celery

新建工程,并且测试

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 #修改配置文件 vi /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配置文件的时候才会出现下面的欢迎页面,如果修改了以后是不能访问默认欢迎页面的

安装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 # chmod-socket = 664 vacuum = true pythonpath = /usr/bin/python3 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 查看服务 ps aux|grep uwsgi

最后,nginx通过监听80端口反向代理uwsgi启动的django服务,访问网站进行测试

大功告成

转载自:https://v3u.cn/a_id_72

猜你喜欢

转载自www.cnblogs.com/weifeng-888/p/10823317.html