最近在在萬網和阿里雲上分別購買了一個域名和一臺雲服務器,打算用來作點什麼。昨天吃完晚飯稍做休息開始對這個新奇的玩意做了些瞭解並着手配置其運行環境,今早凌晨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