最近在在万网和阿里云上分别购买了一个域名和一台云服务器,打算用来作点什么。昨天吃完晚饭稍做休息开始对这个新奇的玩意做了些了解并着手配置其运行环境,今早凌晨4点多才弄得7788,为此也错过了西班牙VS荷兰的比赛,在此把期间遇到的一些问题和解决办法记录下来以被查阅。
html
云服务器(Elastic Cloud Service, ECS)是处理能力可弹性伸缩的计算服务,管理方式比物理服务器更简单高效。无需提早采购投入,能够根据业务的须要,随时建立、释听任意多台云服务器实例。python
在使用云服务器时,会接触到一些名词,有的会比较熟悉,有的相对来讲会少见一些。这些名词所表明的产品概念组合起来,构成完整的云服务器产品。下面是这些名词及表明的含义:nginx
换算单位有两套标准,SI的标准用1000进制表示(如GB),IEC 60027-2的标准是以二进制表示(1024进制,如GiB),bi-表示binary(二进制)的缩写。阿里云的云服务器采用IEC标准,单位为GiB,TiB等。sql
操做系统:CentOS 6.3 64 位。CentOS是Linux再发行版本,有“社区版RedHat”的称号,以稳定著称。为何选Linux而不是Windows理由有不少。数据库
CPU:单核django
内存:512Mvim
带宽:1M(固定IP)windows
存储:20G(系统盘) + 50G(数据盘)安全
地域:杭州服务器
费用:(55 + 18.05) 元/月,算把每月蹭别人的网省下来的钱补到这个里面去了。
首次访问服务器前须要在阿里云管理控制台修改实例访问密码,用户名是root,最高权限了。
远程工具:在Winodows下推荐使用puTTY,下载地址:http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
使用外网IP经过SSH协议访问远程云服务器实例。
fdisk -l(因为我已经挂载过数据盘,因此显示的以下信息:)
Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00073f45
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 2611 20970496 83 Linux
Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xa6b22d46
Device Boot Start End Blocks Id System
/dev/xvdb1 1 6527 52428096 83 Linux
如有未挂载的数据盘:
fdisk /dev/xvdb //(对数据盘xvdb进行分区,依次输入如下选项:) n //(新增一个分区) p //(主分区) 1 //(新增分区xvdb1,回车2次) w //(写入分区表并退出) fdisk -l //(查看分区是否划分红功) mkfs.ext3 /dev/xvdb1 //(格式化分区xvdb1为ext3格式,等待完成) cd / mkdir alidata //(建立挂载目录) mount /dev/xvdb1 /alidata/ //(完成挂载)
vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特色。vsftpd 是一个 UNIX 类操做系统上运行的服务器的名字,它能够运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个彻底免费的、开发源代码的ftp服务器软件,支持不少其余的 FTP 服务器所不支持的特征。好比:很是高的安全性需求、带宽限制、良好的可伸缩性、可建立虚拟用户、支持IPv六、速率高等。
不论是用于提供ftp服务仍是用于平常系统管理,安装ftp软件都是颇有必要的。一下简述其安装与配置过程:
yum install vsftpd (版本是vsftpd-2.2.2-11.el6_4.1.x86_64)
安装完成后会自动建立用户:ftp
mkdir /var/ftp //(建立ftp目录) chown ftp /var/ftp/ //(让用户ftp成为 /var/ftp的全部者,后面咱们会禁用匿名访问,因此这步是必须的) chmod o-x /var/ftp/* (撤销用户ftp 对/var/ftp/下的全部文件的执行权限,这样会更安全些。*/ passwd ftp //(设置用户ftp的密码) vim /etc/password //(编辑password文件,将ftp的home目录更为:/var/ftp) vim /etc/vsftpd/vsftpd.conf //(编f辑vsftpd主配置文件,anonymous_enable=NO,listen=YES) service vsftpd start //(启动vsftpd) chkconfig vsftpd on //(设置系统启动时启动vsftpd)
配置完成后就可使用ftp协议访问(上传/下载文件)vsftpd搭建的公网ftp服务器:
一直使用的是python 2.7.5,不想改。CentOS自带了Python 2.6.6,升级须要作一些配置工做。
涉及到多个Python版本的问题,为了后面安装PostgreSQL的Python包:psycopg2,须要先安装python-lib postgresql-devel:
yum install python-lib postgresql-devel
安装sqlite-devel:
yum install sqlite-devel
若是你搭建好了ftp服务器,在windows下可使用资源管理器访问ftp服务器,将Python-2.7.5.tar.gz上传至ftp目录,不然请使用如下命令获取:
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
tar -jxvf Python-2.7.5.tar.bz2 //解压包 cd Python-2.7.5/ ./configure --with-zlib //后面的选项必定要带上以安装zlib make //编译 make install //安装 mv /usr/bin/python /usr/bin/python2.6.6 ln -s /usr/local/bin/python2.7 /usr/bin/python vim /usr/bin/yum //修改yum的shebung为:#!/usr/bin/python2.6.6
若是你搭建好了ftp服务器,在windows下可使用资源管理器访问ftp服务器,将Django-1.6.5.tar.gz上传至ftp目录,不然请使用如下命令获取:
wget https://www.djangoproject.com/m/releases/1.6/Django-1.6.5.tar.gz
编译安装Django 1.6.5:
tar -xzvf Django-1.6.5.tar.gz //解压包 cd Django-1.6.5/ python setup.py install //安装
测试安装是否成功:
>>> import django
>>> django.VERSION
(1, 6, 5, 'final', 0)
如下是来之PostgreSQL官网的一段介绍:
PostgreSQL is a powerful, open source object-relational database system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and correctness. It runs on all major operating systems, including Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), and Windows. It is fully ACID compliant, has full support for foreign keys, joins, views, triggers, and stored procedures (in multiple languages). It includes most SQL:2008 data types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and TIMESTAMP. It also supports storage of binary large objects, including pictures, sounds, or video. It has native programming interfaces for C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, among others, and exceptional documentation.
rpm -qa|grep postgres //检查是否已安装PostgreSQL /*若是是默认yum 安装的话,会安装较低版本的PostgreSQL 8.4,
这不符合咱们的要求。咱们使用PostgreSQL Yum Repository 来安装最新版本的PostgreSQL。*/ rpm -i http://yum.postgresql.org/9.2/redhat/rhel-6-x86_64/pgdg-redhat92-9.2-7.noarch.rpm yum install postgresql92-server postgresql92-contrib //此处安装的是9.2.8版本
/etc/init.d/postgresql-9.2 initdb //初始化数据库 /etc/init.d/postgresql-9.2 start su - postgres psql ALTER USER postgres WITH PASSWORD 'postgres'; //更改数据库用户密码 select * from pg_shadow; \q su - root passwd postgres //更改系统用户postgres密码 vim /var/lib/pgsql/9.2/data/postgresql.conf //根据须要修改listen_address,取消端口5432注释 vim /var/lib/pgsql/9.2/data/pg_hba.conf //根据须要添加远程访问用户认证 eg:host all all 0.0.0.0/0 md5 //容许全部经过md5密码验证的客户端链接. service postgresql-9.2 restart //重启服务 chkconfig postgresql-9.2 on //设置系统启动时启动服务
配置成功后,可使用pgAdmin或者Navcat for PostgreSQL等工具来链接数据库。只有在外网访问限制解除的前提下才可行。
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。如下对其的安装以及配合Django的一些配置工做:
安装依赖库:
yum -y install gcc gcc-g++ autoconf automake yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
下载并安装nginx:
wget http://nginx.org/download/nginx-1.6.0.tar.gz tar -xzvf nginx-1.6.0.tar.gz cd nginx-1.6.0 ./configure make make install
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
默认状况下,nginx被安装到/usr/local/nginx/; 该目录下共有四个文件夹:
conf 存放一些配置文件,其中咱们要重点配置就是这个目录下面的nginx.conf文件
html 这个目录默认状况下就存放了两个html文件,其中一个是index.html,很显然这是测试咱们nginx 是否运行起来的测试显示文件,另一个htnl文件也是相似做用
sbin 默认状况下就是只有一个nginx的可执行文件
logs 这个目录下就只有两个文件:access.log,error.log,从名字上咱们能够看出来,这是两个日志文件, 分别记录,访问日志和错误日志。
wget http://projects.unbit.it/downloads/uwsgi-2.0.5.1.tar.gz tar -xzvf uwsgi-2.0.5.1.tar.gz cd uwsgi-2.0.5.1 python setup.py install cp uwsgi /usr/bin chmod a+x /usr/bin/uwsgi groupadd -g 515 uwsgi //后期须要用到 useradd -g 515 uwsgi //后期须要用到
server { listen 80; server_name www.foxpy.com; #charset koi8-r; access_log /data/www/logs/access.log; error_log /data/www/logs/error.log; location / { #root html; root /data/www; #index index.html index.htm; include uwsgi_params; uwsgi_pass 127.0.0.1:9090; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }
#根据实际状况配置 location /static/ { alias /data/www/statics/; index index.html index.htm; } #根据实际状况配置 location /media/ { alias /data/www/media/; } }
启动nginx并从新加载配置:
/usr/sbin/nginx
nginx -s reload
在继续下面的配置以前有必要说明一下django项目的目录结构:
/data/www/
db.sqlite3
manage.py
uwsgi.ini #uwsgi的配置文件
logs/
access.log #nginx的访问日志
error.log #nginx的错误日志
blogs/
__init__.py
settings.py
urls.py
wsgi.py
mainapp/ #app
__init__.py
admin.py
models.py
tests.py
views.py
即上面着色的文件:uwsgi.ini:
[uwsgi] socket=127.0.0.1:9090 chdir=/data/www/
wsgi-file=/data/www/blogs/wsgi.py uid=515 gid=515 env=DJANGO_SETTINGS_MODULE=blogs.settings module=django.core.handlers.wsgi:WSGIHandler() processes=4 threads=2 stats=127.0.0.1:1080
当你的Django版本小于1.4时,须要配置env,module,pythonpath。
使用uwsgi.ini启动uwsgi:
cd /data/www/ uwsgi uwsgi.ini