帮同学做一个CMS 系统,首选是开源的东东,因为之前搭建过wordpress的,应该算是对wordpress有一定的了解,但是由于工作原因,正处于学习python的阶段,所以这次选择了djangocms,有助于我对python的进一步学习。
为什么选择djangocms,因为它基于django,而django框架是业界比较流行的web framework,他的特色就是MVC(M[model]T[template]V[view]),好处大大的多,有兴趣的可以参考官方网站,在这就不赘述了,另一个原因就是鄙人只熟悉这一个框架,并处于学习阶段。
因为同学主要做外贸,所以选择linode的vm,系统是ubnutu。具体的安装步骤如下:
1. root登陆,创建用户:djangocms.
useradd djangocms :添加用户
passwd djangocms :设置密码
visudo :添加sudo权限
找到 root ALL=(ALL:ALL) ALL 这一行,在他的下面复制一个行。
djangocms ALL=(ALL:ALL) ALL
2.切换user:djangocms 登陆,检查python版本号
python --version: 本机版本为2.7.3,所以满足djangocms的版本要求。
3. 安装g++ or build-essential,python-dev. 这两个是安装django所需的包。
sudo apt-get install gcc-c++
sudo apt-get install python-dev
4. 安装pip,python的包管理工具,让你方便的安装和卸载package。
sudo apt-get install python-pip
5. 安装virtualenv ,因为是小本生意,一个虚拟机上可以发布多个web应用,而这些应用有可能都依赖了不同的开发包,如python的版本,就会很容易有一些不得而知的兼容问题,而virtualenv 的诞生,让你远离了这些苦恼,如果你有处女情结的话,virtualenv 就能满足你的欲望。
pip install --upgrade virtualenv
然后就是创建一个干净的环境。
virtualenv djangocms
source env/bin/activate
现在你已经拥有了一个独立的环境,如果在创建虚拟环境的时候,没有加任何参数,默认会帮你绑定系统的python版本,当然你可以通过参数指定的版本。如:
virtualenv --python=/usr/local/python2.7/bin/python2.7 djangocms
6. 安装djangocms,如果上面的几步顺利完成,这一步就会非常的简单。
激活虚拟环境:
bin/activate
pip install djangocms-installer
然后就可以使用djangocms的命令去创建一个web application.
djangocms -p . cms_blog :根据自己的需要配置里面出现的参数,如 语言等等
使用development server去启动cms_blog,当然这只是开发环境的server不能用来做production server,我们可以用此server去验证是否创建成功。
python manage.py runserver :默认端口是8000,如果没有被其它占用的话,先你可以 通过浏览器 访问 http://localhost:8000
python manage.py runserver 0.0.0.0:8090,你可以指定一个端口,然后通过此端口去访问。
7. 安装nginx 和uwsgi, 当然你可以选择Apache,配置都是大同小异。
sudo apt-get install nginx uwsgi-extra
sudo apt-get install uwsgi
8. nginx 配置,
首先在/etc/nginx/sites-available/ 创建一个cmsblog文件,简单配置如下
server {
listen 8090;
# according to the IP or domain name to define
server_name 100.100.0.100; //服务器的ip或者域名
location / {
uwsgi_pass 127.0.0.1:8000;
include uwsgi_params;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
}
保存之后,做一个软连接到site-enable文件夹
ln -s cmsblog ../site-enable/cmsblog
9. uwsgi 配置,uwsgi的配置有很多方式,你可以在任何一个文件夹上创建一份配置,然后启动的时候,作为参数传入即可, 配置文件可以是xml,或者ini等等。
也可以到/etc/uwsgi/apps-available 文件夹下,创建一个cmsblog.ini 的配置,内容如下:
[uwsgi]
vhost = true
plugins = python
socket = 127.0.0.1:8000 : uwsgi 端口,要与nginx的uwsgi_pass参数一致。
master = true
enable-threads = true
processes = 2
virtualenv = /home/jyw/cms_blog :虚拟环境的根目录也就是上面的cms_blog目录
chdir = /home/jyw/cms_blog/src : web 应用程序根目录,也就是manage.py目录,不能是wsgi.py的目录,否则会有找不到module的错误
wsgi-file =/home/jyw/cms_blog/src/blog/wsgi.py :wsgi 的目录
stats = 127.0.0.1:9191
10. 最后是启动nginx,和uwsgi。
sudo service nginx start
sudo service uwsgi start
正常的情况下,你现在可以访问你的blog网站了。