版本信息:Ubuntu14.04 Python3.4 Django1.11 Apache2.4 MySql 14.14
首次尝试自己搭建服务器,用的是BAE。一开始安装的CentOS 7,无奈这个系统对于初学者太过复杂,很多不可预知的问题,尝试了一星期后,搭建不起来,选择放弃。然后重装了一个Ubuntu系统,由于有了前面的经验这次搭建比较顺利,两天时间服务器就跑起来了,下面记录下心路历程:
1.Ubuntu自带Python2,Python3两个版本,这对于Python开发人员来说,实在太方便了,而CentOS 7只自带Python2,需要手动安装Python3,对于新手来说,这个过程就会遇到各种各样的问题,博主遇到最崩溃的一个问题是,整个环境都快搭建好了,Python3的文件乱码了,无法访问,也就是这个问题,让我选择重装一个Ubuntu。
2.由于Ubuntu已经存在两个版本的Python,那我们如何使用呢?
3.pip和django的安装问题
系统自动已经为Python2,安装了pip,如果是用Python2进行开发的小伙伴,直接使用pip install django 安装django框架即可
如果使用的Python3,则需要先为Python3安装pip。sudo apt-get install python3-pip,然后使用pip3 install django,把django框架安装到Python3。
注:可能整个过程还需要用pip安装一些包,同上面的方法选择自己使用的Python版本进行安装即可
Django安装成功后,输入Python3,然后import django,使用django.VERSION可以看到安装的django版本
4.MySQL的安装
sudo apt-get install mysql-server 安装mysql服务器端
sudo apt-get install libmysqlclient-dev 这条命令应该是安装的client所需要到的库,不是很确定
安装过程可能要设置数据库的账号密码,这个自行设置即可
注:网上搜索的Ubuntu安装mysql的教程,一般会直接使用sudo apt-get install mysql-client来安装客户端,但是默认安装的是适配Python2的版本,所以如果使用的是Python3,用pip3 install mysql-client来安装吧。
安装成功后使用 mysql -u root -p 命令来登录mysql:
输入status;可以看到mysql的版本信息
5.安装Apache服务器及mod_wsgi
mod_wsgi:Apache服务器的扩展模块,位于服务器和Python应用之间,实现了Python应用和Web服务器之间的通信。
sudo apt-get install apache2
pip3 install mod_wsgi 注:安装mod_wsgi可能需要其他一些包的支持,自行用pip安装
6.修改apache配置文件,路径/etc/apache2下的apache2.conf,使用vim对其进行编辑
新增以下内容:
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so 加载mod_wsgi模块
WSGIScriptAlias / /var/www/html/Daily/Daily/wsgi.py Django项目中wsgi.py的路径,博主的Django项目路径位于/var/www/html/Daily
WSGIPythonPath /var/www/html/Daily 项目根目录
Alias /static/ /var/www/html/Daily/static/ 项目静态文件的路径,最后一个斜杠千万不能掉,不然找不到静态文件
Require all granted
注:Apache2.2版本需要将Require all granted修改成别的,忘记是什么了,自行百度下
网上很多教程写着需要修改django项目中的wsgi.py,我并没有修改,具体原因暂时不知道,日后研究
7.修改settings.py
ALLOWED_HOST=['127.0.0.1',] 其中增加你云服务器的IP地址,127.0.0.1是本机IP
在底部增加:STATIC_ROOT = '/var/www/html/Daily/static/' 设置好后,使用python3 manage.py collectstatic 可以将应用中的静态文件收集到该路径下
STATIC_URL = '/static/' 具体app下的static目录
至此,大功告成,访问云服务器的IP即可看到你的网页。Django项目一般丢到/var/www/html中,你放到别的位置也可以,那么需要修改配置信息