【Linux学习笔记1】-centos6.9部署django
一,centos6.9部署django
部署套件:centos6.9+nginx+mysql+uwsgi+python3+django
首先还是要明白这几个部分之间的关系(自己也是初学者,希望大家多指正):

项目需求租了三年腾讯云的服务器,准备用这台服务器练练手,加做点自己想做的事情;并且申请了一个域名:数据处理研究。那么,让我们开始吧。
远程登陆
使用大名鼎鼎的SecureCRT,这是一个自己拥有一个属于自己的世界的感觉,虽然这个世界现在还一穷二白。

安装lnmp
下载 下载版lnmp(这里下载的是1.4),修改其中的lnmp.conf,变更数据库目录和网站目录。
Download_Mirror='https://soft.vpser.net' Nginx_Modules_Options=''
PHP_Modules_Options='' ##MySQL/MariaDB database directory##
MySQL_Data_Dir='/home/wwwdata/mysql/var'
MariaDB_Data_Dir='/home/wwwdata/mariadb/var'
##Default website home directory##
Default_Website_Dir='/home/wwwroot/default' Enable_Nginx_Openssl='y'
使用rz将压缩包上传到服务器,存入/tmp,进入/lnmp1.4,安装
# 进入tmp目录
cd /tmp # 上传
rz # 解压
tar xf lnmp1.4.tar.gz #安装
cd lnmp1.4
./install.sh
安装过程中mysql选择3,即安装MySQL 5.6.36,需要有1G以上的内存。设置MySQL密码,存储引擎安装:Y。
PHP选择5,即PHP 5.6.31。
内存收集器安装,直接回车。
安装时间还是挺长的,耐心等待(我这花了28min)。
安装好以后发现mysql登陆不上,报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)。
回头再看还忘记了当时数据库咋设置的了,,可以通过该文恢复:
安装python3
进入/tmp/,执行以下命令
cd /tmp/
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
如果实在是慢,可以采用迂回的方式(链接按着ctrl打开,是不是很神奇?)
- 在本地windows电脑上进入 python官网 之后下载 Python-3.6.4.tgz(或者直接进入 python下载 下载压缩包
- SecureCRT中输入rz(相关用法见 在SecureCRT上怎么下载/上传文件 ),上传下载好的文件
下载完成后,解压
tar -xzvf Python-3.6.4.tgz
进入解压后的Python-3.6.4文件夹,依次执行以下命令
cd Python-3.6.4
./configure --prefix=/usr/local/python3
#将python3安装到/usr/local/python3/路径下
make && make install
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
#这两个ln命令建立链接,方便在终端直接使用python3和pip3命令
如果需要更新pip,使用命令
pip3 install --upgrade pip
安装virtualenv并使用虚拟环境
执行命令:
pip3 install virtualenv
python3 -m venv /home/virtualenv/django
# 创建名字为django的虚拟环境,之后进入虚拟环境,执行命令:
cd /home/virtualenv/django/bin
source activate
安装第三方库
在django虚拟环境下,安装第三方库:
首先进入虚拟环境下的tmp,之后创建 requirements.txt
cd /tmp
vi requirements.txt
将下列第三方库的名称写入文件中
diff-match-patch==20121119
Django==2.0.1
django-crispy-forms==1.7.0
django-formtools==2.1
django-import-export==0.6.1
django-pure-pagination==0.3.0
django-ranged-response==0.2.0
django-reversion==2.0.12
django-simple-captcha==0.5.6
djangorestframework==3.8.2
et-xmlfile==1.0.1
future==0.16.0
httplib2==0.9.2
jdcal==1.3
odfpy==1.3.6
openpyxl==2.4.9
Pillow==5.0.0
pytz==2018.4
PyYAML==3.12
six==1.11.0
tablib==0.12.1
unicodecsv==0.14.1
uWSGI==2.0.17
xlrd==1.1.0
xlwt==1.3.0
vi使用(i进入INSERT模式,右键粘贴,ESC进入命令模式,:进入末行模式,输入wq+回车保存退出)
pip安装
pip install -r requirements.txt
之后安装 mysqlclient==1.3.12
pip install mysqlclient==1.3.12
如果报错 /bin/sh: mysql_config: command not found,执行以下命令手动安装:
cd /tmp wget http://mirrors.163.com/pypi/packages/6f/86/bad31f1c1bb0cc99e88ca2adb7cb5c71f7a6540c1bb001480513de76a931/mysqlclient-1.3.12.tar.gz#sha256=2d9ec33de39f4d9c64ad7322ede0521d85829ce36a76f9dd3d6ab76a9c8648e5 tar -xzvf mysqlclient-1.3.12.tar.gz
cd mysqlclient-1.3.12
vi setup_posix.py #修改setup_posix.py下,mysql_config.path = "mysql_config" 改成 mysql_config.path = #"/usr/local/mysql/bin/mysql_config",保存并退出:wq! python setup.py install
上传项目
压缩test1项目,之后使用rz上传到/home/wwwroot/
cd /home/wwwroot/
rz
tar -xzvf test1.tar.gz
下载uWSGI,并设置软链接。uWSGI可提供动态连接服务,往往与nginx配合使用(nginx处理静态文件),组成服务器软件。
浏览器——》服务器——》服务器软件(uWSGI+nginx)——》django
安装过lnmp后,nginx已经装好了,详情可见 LNMP安装了哪些软件?安装目录在哪?
pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
测试样例
创建test.py,进行如下编辑
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"]
之后运行指令:
uwsgi --http :8001 --wsgi-file test.py
# 相应的服务器的安全组要开放8001的入规则
之后进入 http://analysis1.space:8001/ 可以看到

释放某一个端口
netstat -lnp|grep 8001 #找到某一个端口的应用程序
tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN ?????/java kill -9 ????? #结束对应的应用程序
创建并启用test1_uwsgi.ini
vi test1_uwsgi.ini # 在test1_uwsgi.ini中进行如下配置
[uwsgi]
#项目目录
chdir=/home/wwwroot/test1
# 启动uwsgi的用户名和用户组
uid=www
gid=www
# 指定项目的application
module=test1.wsgi
# 指定sock的文件路径
socket= :8001
# 启用主进程
master=true
# 进程个数
workers=2
vacuum=true
#环境
virtualenv = /home/virtualenv/django
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=1028
# 设置日志目录
daemonize=/home/wwwroot/test1/uwsgi.log # 启动UWSGI命令:
uwsgi --ini test1_uwsgi.ini
连接uwsgi与nginx
创建test1.conf
vim /usr/local/nginx/conf/vhost/test1.conf # 输入以下内容
upstream django {
server 127.0.0.1:8001;
}
server {
listen 80;
server_name analysis1.space;
charset utf-8;
client_max_body_size 1G;
location /media {
alias /home/wwwroot/test1/media;
}
location /static {
alias /home/wwwroot/test1/static;
}
location / {
root /home/wwwroot/test1;
uwsgi_pass django;
include uwsgi_params;
}
}
分配用户组、文件读取权限、重启nginx
chown -R www:www /usr/local/nginx/conf/vhost/test1.conf
chmod -R 755 /usr/local/nginx/conf/vhost/test1.conf
/etc/init.d/nginx restart
参考
- bilibili万岁1-感谢 蜡笔凡鑫
- bilibili万岁2-感谢 再敲一行代码
- 与1相对应的博客
- lnmp一键安装包
- 重置密码解决MySQL for Linux错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- python官网
- 在SecureCRT上怎么下载/上传文件
- LNMP安装了哪些软件?安装目录在哪?
【Linux学习笔记1】-centos6.9部署django的更多相关文章
- Linux学习笔记之CentOS6.9 防火墙的关闭以及开启
有的时候,我们需要对系统的防火墙进行操作,今天小编就给大家讲解一下如何开启以及关闭CentOS6.9系统下的防火墙. 输入:cat /etc/issue 查看版本 (一)通过service命令 s ...
- Linux~学习笔记目录索引
回到占占推荐博客索引 本篇文章是对自己学习Linux及在它的环境下部署工具的一个总结,以方便自己查阅,也给他人一个帮助,本文章同时会不断的更新,欢迎大家订阅! 本目录包括的内容会包括linux基础命令 ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- linux学习笔记2-linux的常用命令
第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...
- Linux学习笔记(一)2015.4.13
研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...
- 20160127 linux 学习笔记
Linux学习笔记第一天 Linux基本介绍 Linux的起源和发展: 简单说linux是一种操作系统,可以安装在包括服务器.个人电脑,乃至PDA.手机.打印机等各类设备中. 起源: Linux起源于 ...
- linux —— 学习笔记(汇总)
笔记目录:一.系统知识 和 基本概念 二.常用操作 三.系统管理(内存.设备.服务等管理) ...
- Linux学习笔记-林耐斯Notes-Linux就该这么学
Linux学习笔记... 参考的优秀Linux网站: http://www.w3cschool.cn/linux/ http://www.linuxeye.com/ http://linux.vbir ...
- deepin linux学习笔记(四)进不去图形界面怎么办?
目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...
随机推荐
- TypeScript keyof typeof All In one
TypeScript keyof typeof All In one keyof typeof refs https://www.typescriptlang.org/docs/handbook/re ...
- taro ref & wx.createSeletorQuery
taro ref & wx.createSeletorQuery https://developers.weixin.qq.com/miniprogram/dev/api/wxml/wx.cr ...
- svg rect to polygon points & points order bug
svg rect to polygon points & points order bug https://codepen.io/xgqfrms/pen/vYOWjYr?editors=100 ...
- js 获取包含emoji的字符串的长度
let emoji_exp = /(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ ...
- 一次"内存泄漏"引发的血案
本文转载自一次"内存泄漏"引发的血案 导语 2017年末,手Q春节红包项目期间,为保障活动期间服务正常稳定,我对性能不佳的Ark Server进行了改造和重写.重编发布一段时间后, ...
- 微信小程序(七)-项目实例(原生框架 MINA转云开发)==02-云开发-配置
云开发:1.就是用云函数的型式来使用云存储和云数据库完成各种操作! 2.只关注调什么函数,完成什么功能即可,无需关心HTTP请求哪一套! 3.此模式不代表没有服务器,只是部署在云环境中 ...
- SpringBoot自定义注解
1.注解的概念 注解是一种能被添加到java代码中的元数据,类.方法.变量.参数和包都可以用注解来修饰.注解对于它所修饰的代码并没有直接的影响. 2.注解的使用范围 1)为编译器提供信息:注解能被编译 ...
- python类的内部方法
目录 一.绑定方法与非绑定方法 1.绑定方法 2.非绑定方法 二.property 1.什么是property? 2.为什么要用property? 3.如何使用property? 三.isinstan ...
- pyinstaller打包exe运行失败
使用Pyinstaller来打包自己开发的软件时遇到的几个问题及解决方法.工具主要功能是数据分析,使用机器学习算法完成数据训练和预测功能.主要用到了两个学习库keras和sklearn,所以说在打包时 ...
- 第十届蓝桥杯省赛-试题E: RSA 解密
试题E: RSA 解密 这里涉及到很多数论的知识:质因子分解,扩展欧几里得算法,快速幂算法,利用快速乘算法求解快速幂(mod太大导致不能直接乘,而是需要使用加法来替代乘法) 另外还需要注意扩展欧几里得 ...