Django部署之阿里云ECS
2018-01-04 14:20
483 查看
nginx+gunicorn+django+mysql部署(参考:https://www.jianshu.com/p/17af51935b4d)
一、常识:
(1)、删除文件夹
rm -rf 目录名字
-r 就是向下递归,管理有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
这条命令虽然能够帮助你解决问题,但需要提醒的是:
使用这个rm -rf的时候一定要格外小心,众所周知,Linux没有回收站的,一旦删除就永远找不回来了。
当然,rm还有更多的其他参数和用法,可以在终端里边使用man rm查看其他具体使用方法。
(2)、
查找某个文件:
1.whereis 文件名
特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来.我一般的
查找都用这条命令.
2.find / -name 文件名特点:准确,但速度慢,消耗资源大,例如我想找到php.ini的准确位置,就需要用
#find / -name php.ini
3.locate 文件名
强力推荐的方法,最快,最好的方法.
注意:第一次使用该命令,可能需要更新数据库,按照提示的命令执行一下就好了。
(3)、
删除软链接(到快捷方式(软链接)目录下),执行:
rm -rf /目录/目录
或者:
rm -rf /目录/文件名
(4)、ps aux:显示现行终端机下的所有程序
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
14)ps -l 較長,較詳細的顯示該PID的信息
# ps -lA |more
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 76 0 - 1193 109952 ? 00:00:03 init
1 S 0 2 1 0 -40 - - 0 migrat ? 00:00:03 migration/0
1 S 0 3 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0
1 S 0 4 1 0 -40 - - 0 migrat ? 00:00:02 migration/1
1 S 0 5 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/1
1 S 0 6 1 0 -40 - - 0 migrat ? 00:00:02 migration/2
1 S 0 7 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/2
相關信息的意義:
F 進程的標誌(flag),4表示用戶為超級用戶
S 進程的狀態(stat),各STAT的意義見下文
PID 進程的ID
C CPU使用資源的百分比
PRI priority(優先級)的縮寫,
NI Nice值,
ADDR 核心功能,指出該進程在內存的那一部分,如果是運行的進程,一般都是“-”
SZ 用掉的內存的大小
WCHAN 當前進程是否正在運行,若為“-”表示正在運行
TTY 登陸者的終端位置
TIME 用掉的CPU的時間
CMD 所執行的指令
# ps aux |more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4772 564 ? S Sep22 0:03 init [3]
root 2 0.0 0.0 0 0 ? S Sep22 0:03 [migration/0]
root 3 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Sep22 0:02 [migration/1]
root 5 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? Ss+ Sep22 0:02 [migration/2]
root 7 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/2]
root 8 0.0 0.0 0 0 ? S Sep22 0:00 [migration/3]
root 9 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/3]
root 10 0.0 0.0
4000
0 0 ? S< Sep22 0:00 [migration/4]
上述欄位解釋:
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 該进程使用的虚拟內存量(KB);
RSS 該進程占用的固定內存量(KB)(驻留中页的数量);
TTY 該進程在那個終端上運行(登陸者的終端位置),若與終端無關,則顯示(?)。若為pts/0等,則表示由網絡連接主機進程
WCHAN 當前進程是否正在進行,若為-表示正在進行;
START 該進程被觸發启动时间;
TIME 該进程實際使用CPU運行的时间;
COMMAND 命令的名称和参数;
STAT狀態位常見的狀態字符
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换 (从内核2.6开始无效);
X 死掉的进程 (基本很少見);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
(5)、
tar -cvf 打包后的名称.tar 文件夹名 # 仅打包,不压缩
(6)、
http://blog.csdn.net/ygm_linux/article/details/47017295
取消日志:
把以下配置放到 server {} 块.
关闭favicon.ico不存在时记录日志:
不允许访问隐藏文件例如 .htaccess, .htpasswd, .DS_Store (Mac).
众所周知,联盟成员导航是中国博客联盟的特色之一。而网站图标则是导航的装饰之一,起到锦上添花的作用,让页面更精美耐看。
但是随着成员数量的增长,图标便成了页面的拖沓大户,严重拖慢了整体速度。经常有成员反馈页面加载太慢,经仔细检查发现,居然有部分成员的网站图标居然达到了140kb!你老这是要闹哪样啊?这玩意再大也没用啊!
所以,谨以此文献给那些不知网站图标为何物的大神们,希望能赶紧优化你的网站图标,为联盟做点贡献。
(6.1)、图标介绍
favicon.ico一般用于作为缩略的网站标志,它显示在浏览器的地址栏、浏览器标签上或者在收藏夹上,是展示网站个性的缩略logo标志,也可以说是网站头像,目前主要的浏览器都支持favicon.ico图标,如果要让网站看起来更专业、更美、更有个性,favicon.ico是必不可少的。
除此之外,标签式浏览器甚至还有不少扩展的功能,如FireFox甚至支持动画格式的favicon等。
![](https://img-blog.csdn.net/20180109111420913?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmh1YW5xMTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
(7)、查看ubuntu系统的时区:
date +"%Z %z"
![](https://img-blog.csdn.net/20180123191616220?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmh1YW5xMTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
二、步骤:
1、首先:通过xshell登录,阿里云服务器。然后,看服务器上ubuntu系统是多少位的,
![](https://img-blog.csdn.net/20180103184559517?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbmh1YW5xMTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
#查看文件信息,包含32-bit就是32位,包含64-bit就是64位。
查看ubuntu版本:
![](https://img-blog.csdn.net/20180103184836999)
2、
服务器:阿里云服务器ECS
镜像系统:ubuntu14.04 64位
准备建立:nginx+gunicorn+django+mysql(sqlite)的‘saler is a font interface.’的输出。
3、
nginx
简单介绍一下,nginx是一个轻量级的高性能的web服务器,反向代理服务器以及邮件服务器。首先来配置一下nginx
一阵等待之后nginx就安装好了,首先来看一下nginx.conf配置
这一段代码是安装nginx后的nginx的默认配置,关于nginx的配置优化后续再讲,现在重要的是将服务器给搭建起来,首先简单的讲解一下:
(1)、全局设置,主要用来设置nginx的相关配置,比如设定nginx运行的用户和用户组、运行的进程数、运行的文件等。该部分设置在{}之外。
(2)、events设置,从字面理解,events就是事件的意思,这里是设置事件的相关配置,如事件处理方式是epoll还是select、单个进程的最大连接数,网络IO模型等。
(3)、http设置,这里是http服务器的相关配置,从默认配置看,大致有五种,基本配置、SSL配置、Log配置、Gzip配置以及虚拟端口设置。这里我们先看虚拟端口这只,这里用include引入了两个文件,/etc/nginx/conf.d/*.conf 和/etc/nginx/site-enabled/*。我这里就直接将我自己的服务器配置放在conf.d/blog.conf(6.2的内容,即,将6.2的内容软连接到/etc/nginx/conf.d/自己起的名blog.conf上)文件中。
其中可以加上或不加:
这段代码的意思是nginx监听80端口,服务器的地址是final-skynet.xin,location是一个匹配规则,匹配到监听的url,
具体的匹配规则这里就不详细赘述了。匹配成功后,转发到本地的http://127.0.0.1:8080地址,这是gunicorn监听的地址,然后设置其他需要转发的内容。
(4)、最后一个是mail设置,由于本项目现在还用不着,所以就将默认的代码注释删除了。nginx的基本配置就到这里了。4、
5、
创建django项目:
并且在settings.py中写'gunicorn',还有app,
6、
6.1
然后切换到项目目录下,新建gunicorn的配置文件gunicorn.conf.py
注意:workers是工作线程数,一般设置成:服务器CPU个数 + 1
6.2
然后在项目目录下新建nginx的配置文件(自己起名nginx.conf)
添加以下内容:
然后将其链接到/etc/nginx/conf.d/blog.conf (需要root帐号权限或者sudo)
7、
下面需要通过gunicorn来启动django(当前目录是项目的根目录)
同时,必须把nginx.conf里server_name后面的内容(localhost)加入到 settings.py里的ALLOWED_HOSTS:
8、
到项目根目录下:
这样我们现在可以运行一下gunicorn:
显示:
![](https://img-blog.csdn.net/20180104141206078)
注意:&,代表在ubuntu中变成系统程序,一旦执行不受xshell关闭的影响,仍在服务器后天运行。要想关闭gunicorn 的运行,使用命令ps aux查看运行的程序;
![](https://img-blog.csdn.net/20180104140145492)
![](https://img-blog.csdn.net/20180104140319673)
要想关闭,输入kill PID号即可。
9、
然后再打开另一个终端重启nginx服务即可
最后在浏览器中输入网址进行验证,在某台客机浏览器上输入: server_name名称/url名/。
或者8和9交换一下。
补充:
参考链接:http://blog.csdn.net/zhangpp12321/article/details/76076855#comments
一、常识:
(1)、删除文件夹
rm -rf 目录名字
-r 就是向下递归,管理有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
这条命令虽然能够帮助你解决问题,但需要提醒的是:
使用这个rm -rf的时候一定要格外小心,众所周知,Linux没有回收站的,一旦删除就永远找不回来了。
当然,rm还有更多的其他参数和用法,可以在终端里边使用man rm查看其他具体使用方法。
(2)、
查找某个文件:
1.whereis 文件名
特点:快速,但是是模糊查找,例如 找 #whereis mysql 它会把mysql,mysql.ini,mysql.*所在的目录都找出来.我一般的
查找都用这条命令.
2.find / -name 文件名特点:准确,但速度慢,消耗资源大,例如我想找到php.ini的准确位置,就需要用
#find / -name php.ini
3.locate 文件名
强力推荐的方法,最快,最好的方法.
注意:第一次使用该命令,可能需要更新数据库,按照提示的命令执行一下就好了。
(3)、
删除软链接(到快捷方式(软链接)目录下),执行:
rm -rf /目录/目录
或者:
rm -rf /目录/文件名
(4)、ps aux:显示现行终端机下的所有程序
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t <终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u 以用户为主的格式来显示程序状况。
13)ps x 显示所有程序,不以终端机来区分。
14)ps -l 較長,較詳細的顯示該PID的信息
# ps -lA |more
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 76 0 - 1193 109952 ? 00:00:03 init
1 S 0 2 1 0 -40 - - 0 migrat ? 00:00:03 migration/0
1 S 0 3 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/0
1 S 0 4 1 0 -40 - - 0 migrat ? 00:00:02 migration/1
1 S 0 5 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/1
1 S 0 6 1 0 -40 - - 0 migrat ? 00:00:02 migration/2
1 S 0 7 1 0 94 19 - 0 ksofti ? 00:00:00 ksoftirqd/2
相關信息的意義:
F 進程的標誌(flag),4表示用戶為超級用戶
S 進程的狀態(stat),各STAT的意義見下文
PID 進程的ID
C CPU使用資源的百分比
PRI priority(優先級)的縮寫,
NI Nice值,
ADDR 核心功能,指出該進程在內存的那一部分,如果是運行的進程,一般都是“-”
SZ 用掉的內存的大小
WCHAN 當前進程是否正在運行,若為“-”表示正在運行
TTY 登陸者的終端位置
TIME 用掉的CPU的時間
CMD 所執行的指令
# ps aux |more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4772 564 ? S Sep22 0:03 init [3]
root 2 0.0 0.0 0 0 ? S Sep22 0:03 [migration/0]
root 3 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Sep22 0:02 [migration/1]
root 5 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? Ss+ Sep22 0:02 [migration/2]
root 7 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/2]
root 8 0.0 0.0 0 0 ? S Sep22 0:00 [migration/3]
root 9 0.0 0.0 0 0 ? SN Sep22 0:00 [ksoftirqd/3]
root 10 0.0 0.0
4000
0 0 ? S< Sep22 0:00 [migration/4]
上述欄位解釋:
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 該进程使用的虚拟內存量(KB);
RSS 該進程占用的固定內存量(KB)(驻留中页的数量);
TTY 該進程在那個終端上運行(登陸者的終端位置),若與終端無關,則顯示(?)。若為pts/0等,則表示由網絡連接主機進程
WCHAN 當前進程是否正在進行,若為-表示正在進行;
START 該進程被觸發启动时间;
TIME 該进程實際使用CPU運行的时间;
COMMAND 命令的名称和参数;
STAT狀態位常見的狀態字符
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换 (从内核2.6开始无效);
X 死掉的进程 (基本很少見);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
(5)、
tar -cvf 打包后的名称.tar 文件夹名 # 仅打包,不压缩
(6)、
http://blog.csdn.net/ygm_linux/article/details/47017295
2018/01/04 09:59:17 [error] 8856#0: *1 open() "/home/RunHangTech/static/img/favicon.ico" failed (2: No such file or directory), client: 112.172.122.123, server: 23.34.45.3, request: "GET /favicon.ico HTTP/1.1", host: "23.34.45.3", referrer: "http://23.34.45.3/"
取消日志:
把以下配置放到 server {} 块.
关闭favicon.ico不存在时记录日志:
location /favicon.ico { log_not_found off; access_log off; }
不允许访问隐藏文件例如 .htaccess, .htpasswd, .DS_Store (Mac).
location ~ /\. { deny all; access_log off; log_not_found off; }
众所周知,联盟成员导航是中国博客联盟的特色之一。而网站图标则是导航的装饰之一,起到锦上添花的作用,让页面更精美耐看。
但是随着成员数量的增长,图标便成了页面的拖沓大户,严重拖慢了整体速度。经常有成员反馈页面加载太慢,经仔细检查发现,居然有部分成员的网站图标居然达到了140kb!你老这是要闹哪样啊?这玩意再大也没用啊!
所以,谨以此文献给那些不知网站图标为何物的大神们,希望能赶紧优化你的网站图标,为联盟做点贡献。
(6.1)、图标介绍
favicon.ico一般用于作为缩略的网站标志,它显示在浏览器的地址栏、浏览器标签上或者在收藏夹上,是展示网站个性的缩略logo标志,也可以说是网站头像,目前主要的浏览器都支持favicon.ico图标,如果要让网站看起来更专业、更美、更有个性,favicon.ico是必不可少的。
除此之外,标签式浏览器甚至还有不少扩展的功能,如FireFox甚至支持动画格式的favicon等。
(7)、查看ubuntu系统的时区:
date +"%Z %z"
二、步骤:
1、首先:通过xshell登录,阿里云服务器。然后,看服务器上ubuntu系统是多少位的,
#查看文件信息,包含32-bit就是32位,包含64-bit就是64位。
查看ubuntu版本:
2、
服务器:阿里云服务器ECS
镜像系统:ubuntu14.04 64位
准备建立:nginx+gunicorn+django+mysql(sqlite)的‘saler is a font interface.’的输出。
3、
nginx
简单介绍一下,nginx是一个轻量级的高性能的web服务器,反向代理服务器以及邮件服务器。首先来配置一下nginx
sudo apt-get install nginx
一阵等待之后nginx就安装好了,首先来看一下nginx.conf配置
# /etc/nginx/nginx.conf user www-data; worker_processes auto; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
这一段代码是安装nginx后的nginx的默认配置,关于nginx的配置优化后续再讲,现在重要的是将服务器给搭建起来,首先简单的讲解一下:
(1)、全局设置,主要用来设置nginx的相关配置,比如设定nginx运行的用户和用户组、运行的进程数、运行的文件等。该部分设置在{}之外。
(2)、events设置,从字面理解,events就是事件的意思,这里是设置事件的相关配置,如事件处理方式是epoll还是select、单个进程的最大连接数,网络IO模型等。
(3)、http设置,这里是http服务器的相关配置,从默认配置看,大致有五种,基本配置、SSL配置、Log配置、Gzip配置以及虚拟端口设置。这里我们先看虚拟端口这只,这里用include引入了两个文件,/etc/nginx/conf.d/*.conf 和/etc/nginx/site-enabled/*。我这里就直接将我自己的服务器配置放在conf.d/blog.conf(6.2的内容,即,将6.2的内容软连接到/etc/nginx/conf.d/自己起的名blog.conf上)文件中。
server { listen 80; server_name final-skynet.xin(服务器域名,或者ip,多个用逗号隔开); location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
其中可以加上或不加:
location /favicon.ico { alias /home/用户名/项目名/static/img/favicon.ico; }#需要在项目中创建static/img文件夹,或者此处写Django项目中的static路径。
# this prevents hidden files (beginning with a period) from being served location ~ /\. { access_log off; log_not_found off; deny all; }
这段代码的意思是nginx监听80端口,服务器的地址是final-skynet.xin,location是一个匹配规则,匹配到监听的url,
具体的匹配规则这里就不详细赘述了。匹配成功后,转发到本地的http://127.0.0.1:8080地址,这是gunicorn监听的地址,然后设置其他需要转发的内容。
(4)、最后一个是mail设置,由于本项目现在还用不着,所以就将默认的代码注释删除了。nginx的基本配置就到这里了。4、
安装gunicorn和django
sudo pip install gunicorn sudo apt-get install django
5、
创建django项目:
并且在settings.py中写'gunicorn',还有app,
6、
6.1
然后切换到项目目录下,新建gunicorn的配置文件gunicorn.conf.py
vi gunicorn.conf.py
import multiprocessing bind = "127.0.0.1:8080" workers = 2 errorlog = '/home/用户/项目名称/gunicorn.error.log' #accesslog = './gunicorn.access.log' #loglevel = 'debug' proc_name = 'gunicorn_项目名称_project'
注意:workers是工作线程数,一般设置成:服务器CPU个数 + 1
6.2
然后在项目目录下新建nginx的配置文件(自己起名nginx.conf)
添加以下内容:
server {
listen 80;
server_name final-skynet.xin(服务器域名,或者ip,多个用逗号隔开);
access_log /home/用户/项目名称/nginx.access.log;
error_log /home/用户/项目名称/nginx.error.log;
location / {
proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /robots.txt {
alias /home/用户/项目名称/static/robots.txt;
}#可不加
location /favicon.ico {
alias /home/用户/项目名称/static/img/favicon.ico;
}#可不加
location ~ ^/(media|static)/ {
root /home/用户/项目名称;
expires 30d;
}#可不加
# this prevents hidden files (beginning with a period) from being served location ~ /\. { access_log off; log_not_found off; deny all; }#可不加
}
然后将其链接到/etc/nginx/conf.d/blog.conf (需要root帐号权限或者sudo)
ln -s /home/用户/项目名称/自己起名nginx.conf /etc/nginx/conf.d/自己起名.conf
7、
下面需要通过gunicorn来启动django(当前目录是项目的根目录)
gunicorn 项目根目录里面的含wsgi的文件夹模块名.wsgi:application -b 127.0.0.1:8080
同时,必须把nginx.conf里server_name后面的内容(localhost)加入到 settings.py里的ALLOWED_HOSTS:
ALLOWED_HOSTS = ['final-skynet.xin',(服务器域名,或者ip,多个用逗号隔开);]
8、
到项目根目录下:
这样我们现在可以运行一下gunicorn:
nohup /usr/local/bin/gunicorn 跟项目名一致的模块名.wsgi:application -c /home/用户名/项目名/gunicorn.conf.py &
显示:
注意:&,代表在ubuntu中变成系统程序,一旦执行不受xshell关闭的影响,仍在服务器后天运行。要想关闭gunicorn 的运行,使用命令ps aux查看运行的程序;
要想关闭,输入kill PID号即可。
9、
然后再打开另一个终端重启nginx服务即可
service nginx restart
最后在浏览器中输入网址进行验证,在某台客机浏览器上输入: server_name名称/url名/。
或者8和9交换一下。
补充:
参考链接:http://blog.csdn.net/zhangpp12321/article/details/76076855#comments
相关文章推荐
- 阿里云ECS服务器部署django
- 在阿里云ECS上部署 Django+MySQL+uWSGI+Nginx 项目的基本流程
- 阿里云ECS ubuntu 14.04部署python3+django(1.8.2)+uwsgi+nginx
- 阿里云ECSserver部署django
- python-django 阿里云ECS服务器部署uwsgi+nginx过程解说
- 阿里云ECS(win server2008)部署Django
- 如何在阿里云上部署django网站
- 阿里云ECS服务器Linux环境下配置php服务器(三)--项目部署篇
- 阿里云ECS部署node.js及防火墙80端口开启
- 阿里云ECS部署ES
- openjweb部署阿里云ECS服务器注意事项
- centos7+nginx+gunicorn+django阿里云部署
- 阿里云ECS+Gunicorn+Supervisor+Nginx部署Flask
- 阿里云ECS部署node.js及防火墙80端口开启
- 阿里云 ECS 部署:nginx+MySQL+Laravel+PHP7+Redis+Node.js
- 一次java代码部署到阿里云ECS发生的问题
- 阿里云(ECS+RDS)部署PHP+MySQL网站初探
- 阿里云ECS部署Grafana接入zabbix
- 阿里云ECS服务器(CentOs)Tomcat部署JavaWeb项目教程
- 阿里云ECS部署node.js及防火墙80端口开启