django+uwsgi+nginx部署服务

注意: 本方案使用Ubuntu16 + python3 部署:
一、Python版本级依赖包相关安装:
1、确定默认使用的python版本,并根据需求升级到自己项目相关的版本。
在Ubuntu默认已经已经装好两个版本的python(python2.X ,python3.X)。
如果你的项目是使用的python3.X 的版本,建议把默认的Python 切换到python3.X,方法:
打开文件 :vi ~/.bashrc   添加 一行:alias python='/usr/bin/python3'  
测试:
python -V 会看到当前默认的版本

2、安装python的包管理器 pip工具:
apt-get install python3-pip
注意,如果是使用的python3,一定要安装 python3-pip,再使用 pip3 install [models]装上自己工程需要的相关依赖包。
否则 安装的依赖包会全部安装 在python2.X下,导致工程无法正常启动。

以上安装完过后可以在本地使用django 默认的运行服务的命令跑一下,看下程序是否能正常启动。如 python manage.py runserver 0.0.0.0:8000
如果能成功运行,恭喜你,你的项目运行环境已成功配置完成。

二、安装配置uwsgi:
1、安装 :
使用 pip3 install uwsgi
注意,一定是pip3,最后你在访问你的项目的时候一定会出错,比如502,503什么的
在你的项目下创建 uwsgi.ini文件。
如 :在/root/blog/blog/uwsgi.ini。
2、配置uwsgi.ini文件。
相关配置如:
[uwsgi]
# Django项目本地端口
socket = :8000
# 项目根目录位置
chdir = /root/blog/
# wsgi.py文件在项目的中的相对位置
wsgi-file = /blog/wsgi.py
module =blog.wsgi
# 进程设置,无需变动
# master
master = true
# maximum number of worker processes
# 启动4个uwsgi进程
processes = 4
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum = true
pidfile=uwsgi.pid
daemonize=uwsgi.log
3、启动 uwsgi.
uwsgi在哪个目录启动,就会在哪个目录生成uwsgi.pid和uswgi.log文件。 
启动:uwsgi --ini uwsgi.ini 
停止:uwsgi --stop uwsgi.pid 
重启:uwsgi --reload uwsgi.pid 
强制停止:killall -9 uwsgi 
这里我们启动uwsgi服务,可以通过ps -ef | grep uwsgi看到已经有四个uwsgi服务启动。
三 安装 配置nginx
1、安装 :apt-get install nginx
2、如果你项目的静态文件和你项目是分开存放的,就需要设置权限,如果在项目中,则不需要。
如:
在服务器上创建目录结构:/var/www/blog/ 
修改目录权限:sudo chmod 777 /var/www/blog 
创建static目录,注意顺序是先分配权限,再创建目录:mkdir static 
这里/root/blog/blog/settings.py中的部分设置如下
# 如果DEBUG=True   -> 使用项目目录下static内的静态文件
# 如果DEBUG=False  -> 使用STATIC_ROOT指定目录下的静态文件
STATIC_URL = '/static/'
STATIC_ROOT = '/var/www/NickBlog/static/'


# 设置静态文件查找目录
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)


# 如果是home路径下则需要先设置目录权限
# 在模板中使用 fileObj.fileFieldName.url 代表网络可访问的资源路径
MEDIA_URL = '/media/'  # 代表访问media的url路径,例如 127.0.0.1/media/1.png
# 无论是否debug,都会访问此路径下的media资源(包括上传和访问)
MEDIA_ROOT = '/var/www/NickBlog/media/'

收集所有静态文件到static_root指定目录:python manage.py collectstatic
3、配置:
首先创建配置文件,nginx的默认配置目录为/etc/nginx/conf.d
cd /etc/nginx/conf.d/
vim blog.conf
内容如下 :
server { # 这个server标识我要配置了
listen 80; # 我要监听那个端口
server_name 192.168.2.108 ; # 你访问的路径前面的url名称,你服务器的ip地址。 
access_log /var/log/nginx/access.log main; # Nginx日志配置
charset utf-8; # Nginx编码
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型


error_page 404 /404.html; # 错误页面
error_page 500 502 503 504 /50x.html; # 错误页面


# 指定项目路径uwsgi
location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
uwsgi_pass unix:/opt/proj/script/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他
}


# 指定静态文件路径
location /static/ {
alias /root/blog/blog/;
index index.html index.htm;
}

  }


3、重启nginx
/etc/init.d/nginx restart

这样,你的服务就部署成功了。
注意,如果你是部署到服务器上,你还需要额外的设置:
1、如你的服务器是买的云服务,你需要在平台上公开设置你的端口。因为你买的云服务器默认只开了22端口。如你需要打开 80,3306,8000,等等。
2、你可能会发现能访问服务了,但不能加载静态文件。则需要设置下nginx.conf 文件。
vi /etc/nginx/nginx.conf 
有个user *****;什么的,改成 user root;就行了

mysql数据库的 安装与配置 :
apt-get install mysql-server mysql-client
在安装过程中会让设置mysql的密码,输入两次确认,一定不要忘了。以后会用这密码登陆数据什么的进行操作。
netstat -tap | grep mysql
通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功。
登陆mysql数据库可以通过如下命令:
mysql -u root -p
如:mysql -uroot -p123456
root是帐号,123456是密码
-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql。
登陆成功后可以使用以下命令修改mysql的访问权限,这样你可以从远程机上访问你服务器上的数据库。
grant all privileges on *.* to 'root'@'%' identified by '你的密码';
再执行
flush privileges;   一定要执行这句,你上面设置的才能生效
修改配置文件
vi /etc/mysql/mysql.conf.d/mysqld.cnf
注释这一行:bind-ipaddress = 127.0.0.1
再重启mysql :
/etc/init.d/mysql restart  或者依次执行: service mysql stop  ;service mysql start

这样你就可以在远程机上访问你的服务器上的mysql数据库了,如果 不能连接,请检查你是否公开你的端口,默认3306;

猜你喜欢

转载自blog.csdn.net/yxs646512415/article/details/80282491
今日推荐