Django+uWSGI+nginx阿里云服务器部署-centos6.8环境
2018-04-01 16:30
1231 查看
亲测,一文带你部署django/flask到你的linux服务器(这里是阿里云其他服务器类似),
注意:这里使用的是 阿里云服务器centos6.8 Python3.x Django1.11.x/Flask 0.12.2
前提条件:
1、一定的linux基础
2、一个可正常运行的Django项目/Flask项目
3、如果有数据库,需要自行先安装好(注意数据库一定要在安装/升级Python之前安装完毕)
开始:
1、配置yum和安装wget
2、安装必要的运行时库gcc gcc- c++
3、如果有数据库那么先安装好对应的数据库,如果是MySQL请使用以下方式
获取mysql:
安装用来配置mysql的yum源的rpm包
安装mysql
开启mysql
查看root密码
查看后打开mysql并修改密码
mysql -uroot -p
首次修改密码会提示密码安全等级的错误,因此要先修改安全等级,再次修改才会生效
然后我告诉你怎么开启服务器的远程数据库访问,设置好之后可以在任何地方访问你的数据库
先到/etc/mysql/mysql.conf.d下 将
注意如果找不到,那么就find / -name sql.cnfig.d 会帮你找到路径
bind-address = 127.0.0.1
改为掉
bind-address = 0.0.0.0
允许非本机访问(允许远程连接)
然后重启mysql服务:/etc/mysql/mysql.cnf restart
登陆mysql,从服务器授权
创建一个新的root用户允许所有ip访问登录密码为空:mysql> GRANT ALL PRIVILEGES ON . TO root@”%” IDENTIFIED BY ”;
最后刷新一下。执行:flush privileges;
重新启动mysql(命令如下):
/etc/init.d/mysql stop
/etc/init.d/mysql start
最后到用mysql客户端工具如navicat连接便连接成功
4、安装Python3这里我就不介绍Python2和Python3共存的方案了,直接升级到Python3
下载压缩包
https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
并用xftp上传到服务器,
解压
tar -xzvf Python-3.6.0.tgz 解压后进入安装目录
编译安装包 注意:prefix参数用于指定将Python安装在新目录,防止覆盖系统默认安装的python
./configure –prefix=/usr/local/python36
make && make install 执行安装
修改系统默认的Python路径,因为在终端中输入Python命令时默认是指向Python2.6.6 这里采用的方法是将软链接更名为python2.6.6
注意这里你的服务器可能不是python2.6,但原理是一样的
mv /usr/bin/python /usr/bin/python2.6.6
建立新的软连接指向Python3.6
ln -s /usr/local/python36/bin/python3.6 /usr/bin/python
因为yum是依赖python的,所以这里我们修改了默认的python,就要要修改yum,让其运行指向旧的版本
vi /usr/bin/yum
将第一行中的“#!/usr/bin/python”
修改为“#!/usr/bin/python-2.6.6”,保存即可
配置vi
vi ~/.vimrc 打开之后在里面输入需要配置的内容再保存退出即可
很多人不知道这个是为什么,原因是yum需要python2的支持
5、安装虚拟环境virtualenv和virtualenvwrapper
安装virtualenv virtualenvwrapper
pip install virtualenv virtualenvwrapper
如果没有pip 先安装pip:yum install -y pip
安装好了之后,查找virtualenv位置:find / -name virtualenv
例:返回:/usr/local/python36/bin/virtualenv
查找virtualenvwrapper.sh位置:find / -name virtualenvwrapper.sh
例:返回:/usr/local/python36/bin/virtualenvwrapper.sh
在/usr/bin中添加环境变量(就是新建了一个软连接)
ln -s /usr/local/python36/bin/virtualenv /usr/bin/virtualenv
修改环境变量相关脚本/root/.bashrc
添加如下代码
export WORKON_HOME=/root/.virtualenvs#创建一个存放虚拟环境的目录
export PROJECT_HOME=/root/workspace
source /usr/local/python36/bin/virtualenvwrapper.sh #virtualenvwrapper.sh的位置
然后重启:source ./.bashrc
检验
输入:mkvirtualenv 查看出现的信息,如果提示命令不存在,那么就是没有安装成功
基本命令:
mkvirtualenv test #创建一个虚拟环境默认指向python3
workon test #进入test虚拟环境
deactivate #退出虚拟环境
6、安装nginx
1、关闭防火墙和selinux
关掉selinux指令:setenforce 0 查看selinux状态:getenforce
关闭防火墙:service iptables stop
2、安装依赖软件
3、下载nginx
4、解压 nginx
5、安装
./configure –prefix=/usr/local/nginx
6、然后进入安装目录/usr/local/nginx 进行编译安装
make && make install
7、开启nginx
进入nginx的sbin目录 找到nginx文件
./nginx # 启动nginx
./nginx -s reload # 重新载入配置文件
./nginx -s reopen # 重启 Nginx
./nginx -s stop # 停止 Nginx
重要,然后在浏览器输入你的服务器IP地址,当出现welcome to nginx,表示niginx开始正常工作了
如果没有成功,请继续努力配置好先
7、多说一句关于你自己项目内的pip操作
如果你在项目内也使用了虚拟环境,那么你就需要将所有依赖导出到一个文件
导出python 依赖文件:pip freeze > requirements.txt
这里会在你使用命令的目录下生成一个requirements.txt文件
如果你没有使用虚拟环境,那么你需要在导出依赖文件之后,自己手动删去那些不需要的依赖包,这个必须要做,否则可能会导致你在后来的服务器上安装不上依赖包,
8、将你的项目上传到niginx的html目录下
这里可以使用xftp上传你的项目(将项目直接全部上传到服务器)
个人觉得你应该先使用没有使用数据库的项目进行实验。
9、安装你的依赖到服务器虚拟环境
使用你之前导出的依赖文件一键安装你的项目的所有依赖
激活你的虚拟环境 我这里是workon test,你的激活对应的虚拟环境
使用pip安装你的所有依赖 pip install -r requirements.txt
10、安装uWSGI
使用命令安装pip install uwsgi
目前位置所有的环境已经搭建完成,接下来就是配置运行
11、测试你的项目是否可以正常运行
进入项目目录 python manage.py runserver
相关项目使用对应命令运行
如果没问题就进行下一步,否则解决你的错误
12、配置niginx
在nginx的配置文件/usr/local/nginx/conf/nginx.conf,末尾添加一行
include vhost/*.conf;
在/usr/local/nginx/conf目录下创建vhost目录
mkdir vhost
进入vhost目录,创建一个新的虚拟主机的配置文件(mytest.conf)
cd vhost
vim mytest.conf
mytest.conf文件内容如下:
server {
listen 80;
server_name xx.xx.xx;#这里是你的服务器公网ip地址,当然也可以是你绑定好的域名
#这里是截获你的路由,当前是单一项目部署
location / {
# 包含传递给uwsgi的参数
include uwsgi_params;
# 请求的转发地址
uwsgi_pass 127.0.0.1:5000;
}
}
重启nginx服务
进入nginx的sbin目录 找到nginx文件
./nginx # 启动nginx
./nginx -s reload # 重新载入配置文件
./nginx -s reopen # 重启 Nginx
./nginx -s stop # 停止 Nginx
13、启动uWSGI
如果要启动Flask项目:
uwsgi –socket 127.0.0.1:5000 –wsgi-file manage.py –callable app
项目目录下执行vi uwsgi.ini
将启动参数写入到文件(uwsgi.ini)中,如下:
启动:uwsgi uwsgi.ini
但是我这里建议使用第一种方式,然后使用后台运行命令
nohup uwsgi –socket 127.0.0.1:5000 –wsgi-file manage.py –callable app &
如果你要执行Django项目:
uwsgi –socket 127.0.0.1:5000 –wsgi-file 项目目录下的wsgi.py
例如你的项目名称为mydjango 那么它内部你一定能找到一个wsgi.py文件
然后你需要将 seting.py 里面的DEBUG设置为False
uwsgi –socket 127.0.0.1:5000 –wsgi-file mydjango/wsgi.py
然后就在浏览器里访问你的域名或者ip地址试试吧
接下来是静态文件的安排
很多时候我们的网站或者是webapp都会存在静态文件的,
在django的seting文件里面写入
STATIC_ROOT = os.path.join(BASE_DIR, “static/”)
然后使用命令生成一个static目录
python manage.py collectstatic
这里注意生成的目录应该在mydjango下
然后配置nginx
然后Flask的静态文件处理也是一样的
注意:这里使用的是 阿里云服务器centos6.8 Python3.x Django1.11.x/Flask 0.12.2
前提条件:
1、一定的linux基础
2、一个可正常运行的Django项目/Flask项目
3、如果有数据库,需要自行先安装好(注意数据库一定要在安装/升级Python之前安装完毕)
开始:
1、配置yum和安装wget
配置yum源: cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.backup curl -O http://mirrors.aliyun.com/repo/Centos-6.repo mv Centos-6.repo CentOS-Base.repo yum clean all yum makecache 生成缓存 安装软件: yum install wget yum install -y wget 中间一路yes
2、安装必要的运行时库gcc gcc- c++
yum install -y gcc gcc-c++
3、如果有数据库那么先安装好对应的数据库,如果是MySQL请使用以下方式
获取mysql:
wget https://dev.mysql.com/get/mysql57-community-release-el6-9.noarch.rpm
安装用来配置mysql的yum源的rpm包
rpm -Uvh mysql57-community-release-el6-9.noarch.rpm yum localinstall -y mysql57-community-release-el6-9.noarch.rpm
安装mysql
yum install mysql-community-server
开启mysql
service mysqld start
查看root密码
grep 'temporary password' /var/log/mysqld.log
查看后打开mysql并修改密码
mysql -uroot -p
首次修改密码会提示密码安全等级的错误,因此要先修改安全等级,再次修改才会生效
1、设置安全级别 set global validate_password_policy=0; 2、默认密码为8,可以设置为其他值,最小4位 set global validate_password_length=4; 3、设置root密码 set password for root@localhost = password('新密码');
然后我告诉你怎么开启服务器的远程数据库访问,设置好之后可以在任何地方访问你的数据库
先到/etc/mysql/mysql.conf.d下 将
注意如果找不到,那么就find / -name sql.cnfig.d 会帮你找到路径
bind-address = 127.0.0.1
改为掉
bind-address = 0.0.0.0
允许非本机访问(允许远程连接)
然后重启mysql服务:/etc/mysql/mysql.cnf restart
登陆mysql,从服务器授权
创建一个新的root用户允许所有ip访问登录密码为空:mysql> GRANT ALL PRIVILEGES ON . TO root@”%” IDENTIFIED BY ”;
最后刷新一下。执行:flush privileges;
重新启动mysql(命令如下):
/etc/init.d/mysql stop
/etc/init.d/mysql start
最后到用mysql客户端工具如navicat连接便连接成功
4、安装Python3这里我就不介绍Python2和Python3共存的方案了,直接升级到Python3
下载压缩包
https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
并用xftp上传到服务器,
解压
tar -xzvf Python-3.6.0.tgz 解压后进入安装目录
编译安装包 注意:prefix参数用于指定将Python安装在新目录,防止覆盖系统默认安装的python
./configure –prefix=/usr/local/python36
make && make install 执行安装
修改系统默认的Python路径,因为在终端中输入Python命令时默认是指向Python2.6.6 这里采用的方法是将软链接更名为python2.6.6
注意这里你的服务器可能不是python2.6,但原理是一样的
mv /usr/bin/python /usr/bin/python2.6.6
建立新的软连接指向Python3.6
ln -s /usr/local/python36/bin/python3.6 /usr/bin/python
因为yum是依赖python的,所以这里我们修改了默认的python,就要要修改yum,让其运行指向旧的版本
vi /usr/bin/yum
将第一行中的“#!/usr/bin/python”
修改为“#!/usr/bin/python-2.6.6”,保存即可
配置vi
vi ~/.vimrc 打开之后在里面输入需要配置的内容再保存退出即可
很多人不知道这个是为什么,原因是yum需要python2的支持
5、安装虚拟环境virtualenv和virtualenvwrapper
安装virtualenv virtualenvwrapper
pip install virtualenv virtualenvwrapper
如果没有pip 先安装pip:yum install -y pip
安装好了之后,查找virtualenv位置:find / -name virtualenv
例:返回:/usr/local/python36/bin/virtualenv
查找virtualenvwrapper.sh位置:find / -name virtualenvwrapper.sh
例:返回:/usr/local/python36/bin/virtualenvwrapper.sh
在/usr/bin中添加环境变量(就是新建了一个软连接)
ln -s /usr/local/python36/bin/virtualenv /usr/bin/virtualenv
修改环境变量相关脚本/root/.bashrc
添加如下代码
export WORKON_HOME=/root/.virtualenvs#创建一个存放虚拟环境的目录
export PROJECT_HOME=/root/workspace
source /usr/local/python36/bin/virtualenvwrapper.sh #virtualenvwrapper.sh的位置
然后重启:source ./.bashrc
检验
输入:mkvirtualenv 查看出现的信息,如果提示命令不存在,那么就是没有安装成功
基本命令:
mkvirtualenv test #创建一个虚拟环境默认指向python3
workon test #进入test虚拟环境
deactivate #退出虚拟环境
6、安装nginx
1、关闭防火墙和selinux
关掉selinux指令:setenforce 0 查看selinux状态:getenforce
关闭防火墙:service iptables stop
2、安装依赖软件
yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
3、下载nginx
wget http://nginx.org/download/nginx-1.11.5.tar.gz
4、解压 nginx
tar -zxvf nginx-1.11.5.tar.gz
5、安装
./configure –prefix=/usr/local/nginx
6、然后进入安装目录/usr/local/nginx 进行编译安装
make && make install
7、开启nginx
进入nginx的sbin目录 找到nginx文件
./nginx # 启动nginx
./nginx -s reload # 重新载入配置文件
./nginx -s reopen # 重启 Nginx
./nginx -s stop # 停止 Nginx
重要,然后在浏览器输入你的服务器IP地址,当出现welcome to nginx,表示niginx开始正常工作了
如果没有成功,请继续努力配置好先
7、多说一句关于你自己项目内的pip操作
如果你在项目内也使用了虚拟环境,那么你就需要将所有依赖导出到一个文件
导出python 依赖文件:pip freeze > requirements.txt
这里会在你使用命令的目录下生成一个requirements.txt文件
如果你没有使用虚拟环境,那么你需要在导出依赖文件之后,自己手动删去那些不需要的依赖包,这个必须要做,否则可能会导致你在后来的服务器上安装不上依赖包,
8、将你的项目上传到niginx的html目录下
这里可以使用xftp上传你的项目(将项目直接全部上传到服务器)
个人觉得你应该先使用没有使用数据库的项目进行实验。
9、安装你的依赖到服务器虚拟环境
使用你之前导出的依赖文件一键安装你的项目的所有依赖
激活你的虚拟环境 我这里是workon test,你的激活对应的虚拟环境
使用pip安装你的所有依赖 pip install -r requirements.txt
10、安装uWSGI
使用命令安装pip install uwsgi
目前位置所有的环境已经搭建完成,接下来就是配置运行
11、测试你的项目是否可以正常运行
进入项目目录 python manage.py runserver
相关项目使用对应命令运行
如果没问题就进行下一步,否则解决你的错误
12、配置niginx
在nginx的配置文件/usr/local/nginx/conf/nginx.conf,末尾添加一行
include vhost/*.conf;
在/usr/local/nginx/conf目录下创建vhost目录
mkdir vhost
进入vhost目录,创建一个新的虚拟主机的配置文件(mytest.conf)
cd vhost
vim mytest.conf
mytest.conf文件内容如下:
server {
listen 80;
server_name xx.xx.xx;#这里是你的服务器公网ip地址,当然也可以是你绑定好的域名
#这里是截获你的路由,当前是单一项目部署
location / {
# 包含传递给uwsgi的参数
include uwsgi_params;
# 请求的转发地址
uwsgi_pass 127.0.0.1:5000;
}
}
重启nginx服务
进入nginx的sbin目录 找到nginx文件
./nginx # 启动nginx
./nginx -s reload # 重新载入配置文件
./nginx -s reopen # 重启 Nginx
./nginx -s stop # 停止 Nginx
13、启动uWSGI
如果要启动Flask项目:
uwsgi –socket 127.0.0.1:5000 –wsgi-file manage.py –callable app
项目目录下执行vi uwsgi.ini
将启动参数写入到文件(uwsgi.ini)中,如下:
[uwsgi] socket = 127.0.0.1:5000 wsgi-file = webapp.py callable = app
启动:uwsgi uwsgi.ini
但是我这里建议使用第一种方式,然后使用后台运行命令
nohup uwsgi –socket 127.0.0.1:5000 –wsgi-file manage.py –callable app &
如果你要执行Django项目:
uwsgi –socket 127.0.0.1:5000 –wsgi-file 项目目录下的wsgi.py
例如你的项目名称为mydjango 那么它内部你一定能找到一个wsgi.py文件
然后你需要将 seting.py 里面的DEBUG设置为False
uwsgi –socket 127.0.0.1:5000 –wsgi-file mydjango/wsgi.py
然后就在浏览器里访问你的域名或者ip地址试试吧
接下来是静态文件的安排
很多时候我们的网站或者是webapp都会存在静态文件的,
在django的seting文件里面写入
STATIC_ROOT = os.path.join(BASE_DIR, “static/”)
然后使用命令生成一个static目录
python manage.py collectstatic
这里注意生成的目录应该在mydjango下
然后配置nginx
server { listen 80; server_name xx.xx.xx;#这里是你的服务器公网ip地址,当然也可以是你绑定好的域名 #这里是截获你的路由,当前是单一项目部署 location / { # 包含传递给uwsgi的参数 include uwsgi_params; # 请求的转发地址 uwsgi_pass 127.0.0.1:5000; } location /static { root html/mydjango/static; #或者 alias html/mydjango/static; } }
然后Flask的静态文件处理也是一样的
相关文章推荐
- Flask+nginx+uWSGI阿里云服务器部署-centos6.8
- CentOS nginx+uwsgi+Django 环境部署
- 搭建python的web环境 Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器环境
- 阿里云上CentOS6.5部署Django+nginx+uwsgi
- python Django + uwsgi + nginx 在阿里云Ubuntu环境下的部署
- centos7 nginx配置httpsCenos(6.6/7.1)下从源码安装Python+Django+uwsgi+nginx环境部署(二)
- CentOS+uwsgi+django+nginx 环境部署及分析
- 阿里云 Contos 6.5 + nginx + uwsgi + django环境部署
- python-django 阿里云ECS服务器部署uwsgi+nginx过程解说
- CentOS7部署Django,nginx,uwsgi,redis
- 基于centos搭建nginx+uwsgi运行django环境
- nginx+uwsgi+django(restframework)服务器部署
- nginx uwsgi django supervisord Centos部署
- centos 部署 Nginx + uwsgi + django +mysql 多站点
- 在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境
- nginx+uwsgi+django+celery+supervisord环境部署
- 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的
- Nginx+uWSGI+Django Centos 部署
- 在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
- 基于centos搭建nginx+uwsgi运行django环境