[zz]阿里云计算:CentOS+nginx+Django+Postgresql web环境搭建

原文链接: http://www.cnblogs.com/AllStarGIS/p/3788518.html

参考链接:

1. http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html

2. http://ec58.com/archives/2836

最近在在万网和阿里云上分别购买了一个域名和一台云服务器,打算用来做点什么。昨天吃完晚饭稍作休息开始对这个新奇的玩意作了些了解并着手配置其运行环境,今早凌晨4点多才弄得7788,为此也错过了西班牙VS荷兰的比赛,在此把期间遇到的一些问题和解决办法记录下来以被查阅。

云服务器ECS是什么?(摘自阿里云官网)

  云服务器(Elastic Cloud Service, ECS)是处理能力可弹性伸缩的计算服务,管理方式比物理服务器更简单高效。无需提前采购投入,可以根据业务的需要,随时创建、释放任意多台云服务器实例。

  在使用云服务器时,会接触到一些名词,有的会比较熟悉,有的相对来说会少见一些。这些名词所代表的产品概念组合起来,构成完整的云服务器产品。下面是这些名词及代表的含义:

  • 云服务器实例(简称实例,Instance,如非特指,在云服务器的文档中指的是云服务器实例)是一个虚拟的计算环境,包含CPU、内存等最基础的计算组件,是云服务器对于每个用户的应用的具体体现和实际操作实体。实例的规格定义了实例的CPU、内存的配置。实例是云服务器最为核心的概念,下面描述的磁盘、IP等只有与实例结合后才是有意义的。
  • 地域(Region)是实例的物理位置的选择。在中国区域,根据您的客户群体分布可以选择不同区域的云服务器服务,如杭州、青岛。地域内的实例内网是可以互通的,不同地域之间的实例内网不互通。
  • 镜像(Image)是实例可选择的运行环境模板,一般包括操作系统和预装的软件。您可以选择阿里云提供的镜像,支持Linux和Windows的多个发型版本,也可以创建自己的自定义镜像。
  • 磁盘(Disk)有云磁盘和临时磁盘两种类型。存储在云磁盘上的数据安全性更高,临时磁盘则吞吐性能更好。购买一个实例时,如果选择临时磁盘,那么磁盘的空间大小和个数在未来是不可调整的。
  • 快照(Snapshot)是磁盘上的数据在某一个时间点的拷贝,存储在开放存储服务(OSS)上。快照采用增量备份机制,只有磁盘上发生变化的数据块才会被拷贝到快照中。
  • IP包含内网IP地址和公网IP地址。每个实例默认包含一个内网IP地址,公网IP地址是可选的。
  • ?安全组(SecurityGroup)指定了一个或多个防火墙规则,规则包含容许访问的网络协议、端口、源IP等。防火墙规则对加入安全组的所有实例生效。但加入同一个安全组的实例相互之间的访问是不受规则限制的。

关于单位,1000和1024的描述

  换算单位有两套标准,SI的标准用1000进制表示(如GB),IEC 60027-2的标准是以二进制表示(1024进制,如GiB),bi-表示binary(二进制)的缩写。阿里云的云服务器采用IEC标准,单位为GiB,TiB等。


软硬件环境

  操作系统:CentOS 6.3 64 位。CentOS是Linux再发行版本,有“社区版RedHat”的称号,以稳定著称。为什么选Linux而不是Windows理由有很多。

  CPU:单核

  内存:512M

  带宽:1M(固定IP)

  存储:20G(系统盘) + 50G(数据盘)

  地域:杭州

  费用:(55 + 18.05) 元/月,算把每个月蹭别人的网省下来的钱补到这个里面去了。


远程访问云服务器ECS实例

  首次访问服务器前需要在阿里云管理控制台修改实例访问密码,用户名是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/ //(完成挂载)


ftp软件vsftpd的安装与配置

  vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

  不管是用于提供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

  一直使用的是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



Django的安装

  如果你搭建好了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官网的一段介绍:

  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的安装与配置

  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,从名字上我们可以看出来,这是两个日志文件, 分别记录,访问日志和错误日志。

uWSGI的安装

 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                //后期需要用到

配置nginx:

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

  即上面着色的文件: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

 

[zz]阿里云计算:CentOS+nginx+Django+Postgresql web环境搭建

时间: 2024-08-28 03:14:59

[zz]阿里云计算:CentOS+nginx+Django+Postgresql web环境搭建的相关文章

CentOS+Nginx+Tomcat+Mysql+PHP 环境搭建及系统部署

==============安装centos 7.0=======================选择最小安装,将相关的"调试工具"."兼容性程序库"."开发工具"选中.此操作是为了减少后期安装或编译相关服务时出现依赖.或环境的问题.硬盘分区,可根据个人的习惯而定,不清楚的可以直接选择系统自动分区,由于个人的习惯,本人的分区如下,仅供参考:/boot 500M 用于启动Linux的核心文件swap 5120M(5G) Linux下的交换分区,又称

web 环境搭建00前端自动化构建工具(gulp)

web 环境搭建----前端自动化构建工具(gulp): 1----先下载安装node.js 2----然后在node.js命令行安装:npm install gulp -g (全局下载安装gulp插件) 3----然后进入到项目文件夹(命令cd 文件夹名),在项目文件夹中安装依赖文件:npm install gulp --save-dev (根据依赖文件下载gulp插件) 4----在项目文件夹目录下初始化:npm init (初始化文件) {初始化文件后项目中会出现packgae.json文

Java Web 环境搭建步骤(超详细,包括前期安装步骤)

Java Web 环境搭建步骤 安装对应版本的JDK 配置环境变量 本人安装的路径是C盘,在path中加入C:\Program Files\Java\jdk1.8.0_65\bin 测试配置成功,cmd中输入javac,显示如下界面: 安装Tomcat 本人安装的版本是7.0.版本 测试是否安装成功,在浏览器中输入http://localhost:8080/ 显示如下图,表示安装成功. 5.  在Eclipse中启动Tomcat服务器 1)首先,选择window下面的Preferences 2)

WEB环境搭建

WEB环境搭建 1. Web服务器 Web服务器主要用来接收客户端发送的请求和响应客户端请求. 作为JavaWeb程序来说,还需要有Servlet容器,容器的主要作用就是调用java程序处理用户发送的请求,并响应指定的资源,关于Servlet容器我们还需要一点一点学习. 开发JavaWeb项目Web服务器和Servlet容器是必须的,通常情况二者是合在一起的. 常见的JavaWeb服务器: Tomcat(Apache):当前应用最广的JavaWeb服务器: JBoss(Redhat红帽):支持J

Intellij IDEA工具Java web 环境搭建

Java web 环境搭建 环境依赖 操作系统:Windows 7 64位 开发工具:IntelliJ IDEA 13.1.4 开发工具依赖环境 JDK版本:1.7+ 开发工具依赖插件 包管理:Maven 3.2.3 Web 服务:Tomcat 8.0.24 环境搭建 针对java上述依赖的工具,进行安装和配置,主要包括jdk的安装.intellij idea的安装.maven的安装配置.tomcat的安装配置,具体如下所示 JDK安装 及配置环境变量 下载地址http://www.oracle

JAVA web环境搭建(使用Tomcat8整合httpd)

说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建Tomcat并整合httpd的参考.如果需要查看相关软件版本和主机配置要求,请根据目录自行查看. Linux服务综合搭建的文章目录 8.rhel7 JAVA web环境搭建(使用Tomcat8整合httpd) 8.1 单独安装Tomcat(很简单) 8.1.1 准备httpd和网站目录 1 [[email protected] ~]# yum install httpd 2 3 [[email protected] ~]# sy

在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境

阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在上面搭建一个 nginx + mysql + php-fpm 的环境,这就是常说的 LNMP .我们不过多解释什么是什么,而是着重讲流程与方法,想了解具体的细节,去搜索下吧:)这个手册是在阿里云上测试的,不过应该也适用于其它使用 CentOS 系统的服务器. 背景 宁皓网的< CentOS:在阿里云

CentOS 7 yum nginx MySQL PHP 简易环境搭建

用centos自带的yum源来安装nginx,mysql和php,超级方便,省去编译的麻烦,省去自己配置的麻烦,还能节省非常多的时间. 我们先把yum源换成国内的阿里云镜像源(当然不换也可以),先备份一下原来的源镜像文件,以免出错后可以恢复: [[email protected]192 ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载新的CentOS-Base.repo 到/e

阿里云ECS+CentOS 7.0+Docker+Redmine环境搭建

前言 搭建Redmine环境可以选择使用分别安装Ruby+Rails+Redmine+MySQL的方式, 但是过程中需要解决各种扰人的依赖问题.Docker为我们提供的Plan B,方便,快捷. 安装环境 当然可以选择Ruby+Rails+Redmine+MySQL的安装方式,请参考: http://www.jyguagua.com/?p=2026 阿里云ECS安装 因为是实际生产需要,所以,直接购买阿里云的ECS. 安装和使用方法参考: https://bbs.aliyun.com/read/