VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解


Posted in Python onJuly 01, 2019

本文实例讲述了VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法。分享给大家供大家参考,具体如下:

昨天试用了VPS,花了一天部署了一个简单应用。在下面的过程中省去了用django 创建project的一步,忘记了你自己一用startporject 创建。

下面是原来边操作,边记录的东西,我习惯文本编辑。可能格式不好看。现在搬到博客中来。

首先安装GCC.

yum -y install gcc automake autoconf libtool make

给CENTOS 安装中文包

查看 CENTOS 版本 cat /etc/redhat-release 我的是 5.7 在官方网站上找 5.7 的,没找到,用5.5的吧。

yum groupinstall chinese-support
vi /etc/sysconfig/i18n

内容如下:

LANG="zh_CN.UTF-8"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

使用locale命令查看系统语言设置:

locale

下面用了 5.5 的字库。

wget http://ftp.dc.volia.com/pub/CentOS/5.5/os/x86_64/CentOS/fonts-chinese-3.02-12.el5.noarch.rpm
wget http://ftp.dc.volia.com/pub/CentOS/5.5/os/x86_64/CentOS/fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm

rpm -ivh 安装就不说了。

安装完毕,然后reboot

安装python2.7.2

wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz

1.

./configure -with-zlib=/usr/include (需要看zlib.h文件在那个目录下 whereis zlib.h)
make install

2. 建立软连接

cd /usr/bin
rm -rf python
ln -s /usr/local/bin/python2.7 python

这样做了之后,可能导致一个问题yum 命令不能用,这时需要修改yum

vi /usr/bin/yum

修改第一行的python路径 #!/usr/bin/python2.4 因为centos 是用的python2.4

安装PIL python 库

wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
python setup.py install

安装Django 1.3

wget http://www.djangoproject.com/download/1.3/tarball/
python setup.py install

安装setuptools

wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg#md5=fe1f997bc722265116870bc7919059ea
sh setuptools-0.6c11-py2.7.egg ?prefix=/usr/local

安装python-mysqldb

wget http://ncu.dl.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz
yum install mysql-devel
python setup.py install

安装MYSQL (CENTOS自带 5.0)

yum install mysql-server

MYSQL 登陆问题:

# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> Update user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
mysql> grant all privileges on *.* to 'root'@'%' identified by 'newpassword' with grant option;

安装UWSGI

wget http://projects.unbit.it/downloads/uwsgi-1.1.tar.gz

解压后

make
cp uwsgi /usr/bin

注:在网上查看资料时,还有需要用python setup.py build 方式操作的,具体的,可以查下uwsgi的官网说明。

在你的django 项目里面建立一个django_wsgi.py 的文件,比如我的在/opt/www/uploadfile下

cd /opt/www/uploadfile
vi django_wsgi.py
import os
import sys
sys.path.append("/opt/www") #与我project路径有关,修改成自己的
os.environ['DJANGO_SETTINGS_MODULE'] = 'uploadfile.settings' #配置有关,修改成自己的
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

建立目录 /home/uwsgi

vi uwsig.ini

内容如下:

[uwsgi]
socket=127.0.0.1:9000
listen=200
master=true
pidfile=/usr/local/nginx/uwsgi.pid
processes=8
pythonpath=/opt/www/uploadfile
pythonpath=/opt/www/
module=django_wsgi
profiler=true
memory-report=true
enable-threads=true
logdate=true
limit-as=6048
daemonize=/opt/www/logs/django.log

运行 uwsgi --ini /home/uwsgi/uwsgi.ini

安装nginx

wget http://nginx.org/download/nginx-1.0.15.tar.gz
yum install glib2-devel openssl-devel pcre-devel bzip2-devel gzip-devel

然后

./configure

可以看到安装后的路径:

nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
make install

然后

cp /usr/local/nginx/sbin/nginx /usr/bin

运行nginx 启动nginx.

如果要停止

nginx -s stop

nginx 如何重启

如下命令:nginx -s  reload

当然也有一个 reopen ,具体区别自己去看吧。哥就不说了。

接下来是配置 nginx 与 django 的配合了。

cd /usr/local/nginx/conf
vi django_uwsgi.conf

内容如下:

server {
listen 80;
server_name 216.24.200.212;
location / {
   uwsgi_pass 127.0.0.1:9000;
   include uwsgi_params;
   access_log off;
}
location ^~ /static {
  root /opt/www/uploadfile;
}
location ^~ /admin/ {
   uwsgi_pass 127.0.0.1:9000;
   include uwsgi_params;
   access_log off;
}
location ~* ^.+\.
(mpg|avi|mp3|swf|zip|pdf|jpg|gif|png|bmp|jpeg|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|rtf|mpeg|js|css)$ {
   root /opt/www/uploadfile/static;
   access_log off;
}
}

然后打开nginx.conf 编辑,在http{}中增加如下:

include django_uwsgi.conf;
client_max_body_size 20m; #这是为了控制上传文件大小用的

====到此配置基本完成,下面启动===========================

查看进程

ps -ef|grep uwsgi|grep -v grep

如果uwsgi 没启动,就如下操作

uwsgi --ini /home/uwsgi/uwsgi.ini

监听端口(俺的配置文件中用的9000)

netstat -an|grep 9000
nginx -s reload

打开网页查看吧,比如

http://myipaddress

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
详解python中executemany和序列的使用方法
Aug 12 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
Apr 28 Python
Python查找最长不包含重复字符的子字符串算法示例
Feb 13 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
python 计算平均平方误差(MSE)的实例
Jun 29 Python
python logging模块书写日志以及日志分割详解
Jul 22 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
Python实现括号匹配方法详解
Feb 10 Python
python爬取音频下载的示例代码
Oct 19 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 Python
python数据抓取3种方法总结
Feb 07 Python
Python之pymysql的使用小结
Jul 01 #Python
linux下安装python3和对应的pip环境教程详解
Jul 01 #Python
python写日志文件操作类与应用示例
Jul 01 #Python
python实现自动化上线脚本的示例
Jul 01 #Python
在Python中构建增广矩阵的实现方法
Jul 01 #Python
django框架实现模板中获取request 的各种信息示例
Jul 01 #Python
Python整数对象实现原理详解
Jul 01 #Python
You might like
php中一个完整表单处理实现代码
2011/11/10 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
Yii中srbac权限扩展模块工作原理与用法分析
2016/07/14 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
一款基jquery超炫的动画导航菜单可响应单击事件
2014/11/02 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
python发送arp欺骗攻击代码分析
2014/01/16 Python
python连接字符串的方法小结
2015/07/13 Python
python爬虫入门教程--正则表达式完全指南(五)
2017/05/25 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
Python模块文件结构代码详解
2018/02/03 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
python实现两张图片的像素融合
2019/02/23 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
精彩的推荐信范文
2013/11/26 职场文书
审美与表现自我评价
2015/03/09 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python