怎么样在电脑建qq空间(如何用Python快速部署一个博客网站,打造属于自己的“QQ空间”)
阅读前先讲讲本文中需要的基本技能,起码要知道或者能自己去百度或者谷歌了解一下:
编程语言:Python系统框架:Django数据库:MySQL服务架构:Uwsgi+NginxIDE:Pycharm系统:Linux购买服务器
首先最简单的搭建服务器的方式就是去腾讯云、百度云或者阿里云买一个云服务器,注意不是
云虚拟主机,选择Linux系统(包括centos或Ubuntu),购买成功后,记住IP号和你设置的密码。
云服务器配置选项
新用户第一年一般都很便宜,价格在60-200不等。尽量不要使用其他产品,便宜是便宜但是很坑。
连接服务器
使用各种可以远程连接的软件如xshell或者Termius等,连接我们购买的云服务器。以Termius为例,点击+NEWHOST,按提示输入内容(主要是ip地址跟用户名和密码):
连接成功后,即可进入服务器终端进行命令操作:
安装Python3
目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于3.x版越来越普及,所以安装3.x版本。
第一步:下载python3安装包,版本自己选择就好。
wgethttps://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
第二步:创建安装目录,具体安装位置看个人喜好。
mkdir-p/usr/local/python3
第三步:解压并安装安装包
tar-zxvfPython-3.7.2.tgzcdPython-3.7.2./configure--prefix=/usr/local/python3make&&makeinstall
第四步:建立python3的软链
ln-s/usr/local/python3/bin/python3/usr/bin/python3
第五步:测试是否安装成功
$python3-VPython3.7.2$pip3-Vpip18.1from/usr/local/python3/lib/python3.7/site-packages/pip(python3.7)安装和使用虚拟环境
执行安装命令
pip3installvirtualenv
更新pip3,并再次安装virtualenv
pip3install--upgradepippip3installvirtualenv
创建名字为django_env的虚拟环境
mkvirtualenvdjango_env-ppython3相关命令#虚拟环境mkvirtualenv#创建虚拟环境rmvirtualenv#删除虚拟环境workon#进入虚拟环境、查看所有虚拟环境deactivate#退出虚拟环境#pippipinstall#安装依赖包pipuninstall#卸载依赖包piplist#查看已安装的依赖库
进入django_env虚拟环境
workondjango_envDjango安装及配置
pipinstalldjango#pip安装djangodjango-admin.pystartprojectmyproject#创建django项目cdmyproject#进入项目文件夹pythonmanage.pyrunserver0.0.0.0:8000#运行django项目#打开浏览器访问ip地址:8003,就可以看到Django的欢迎界面了
Django编写的博客系统在网上有很多,可以自己去下载一些自己喜欢的模板进行更改。主要修改的有以下内容:
将本地django目录拷贝到阿里云服务器,在windows下使用cmd窗口执行
scp-rdjango/root@<云服务器公网ip>:/root/
1)修改settings/dev.py配置文件,将其中的DATABASES和CACHES配置项的ip地址改为云服务器公网ip地址
这里我修改了django的默认数据库(sqlite3),改为了mysqlALLOWED_HOSTS=['*']#28行DATABASES={#77行'default':{'ENGINE':'django.db.backends.mysql','NAME':'你的数据库名','USER':'你的mysql账户','PASSWORD':'你的mysql密码','HOST':'localhost','PORT':'3306',}}
2)修改settings/dev.py配置文件,添加跨域请求白名单如下:
CORS_ORIGIN_WHITELIST=(#备注:允许源地址`http://127.0.0.1:8080`向当前API服务器发起跨域请求'http://127.0.0.1:8080',)
3)在settings/dev.py文件中设置STATIC_ROOT配置项,收集Django项目使用的静态文件
#settings/dev.py#设置收集Django项目使用静态文件的保存目录STATIC_ROOT=os.path.join(BASE_DIR,'static')
4)在终端执行命令收集Django项目使用的静态文件
pythonmanage.pycollectstatic
5)使用settings/dev.py配置文件中的内容覆盖settings/prod.py配置文件的内容,并将settings/prod.py文件中的DEBUG改为False
Nginx安装及配置
1)安装Nginx
apt-getinstall-ybuild-essentiallibssl-devlibtoollibpcre3libpcre3-devmakeopensslzlib1g-devapt-getinstallnginx-y
2)检查效果
netstat-tnulp|grepnginx
3)服务相关命令
#启动停止systemctlstart|stop|reload|...nginx/etc/init.d/nginxstart|stop|reload|.../usr/sbin/nginx...-sstop|reload#查看信息nginx-Vnginx-v#检查配置文件nginx-t#检查默认配置文件nginx-t-cfile.conf#指定配置文件进行检查
修改nginx.conf文件
vim/usr/local/nginx/conf/nginx.conf#不修改nginx.conf的原本内容,翻到文件最底部,添加下一行代码includevhost/*.conf;#然后回到conf目录下,新建一个vhost目录,在vhost中新建一个myproject.conf文件,内容如下:server{listen8093;server_nameidandan.vip;#substituteyourmachine'sIPaddressorFQDNcharsetutf-8;#静态文件所在位置,可以自己定义location/static{root/usr/local/nginx/html/django/myprojec/;}location/{root/usr/local/nginx/html/django/myproject;uwsgi_pass127.0.0.1:8010;#端口跟socket端口要保持一致includeuwsgi_params;#theuwsgi_paramsfileyouinstalled}}uWSGI安装及配置
什么是uWSGI
uWSGI是一个web服务器,它实现了WSGI协议、uwsgi协议、http协议等。
WSGI是一种Web服务器网关接口。它是一个Web服务器(uWSGI等服务器)与web应用(如用Django/Flask框架写的程序)通信的一种协议。
uwsgi是一种线路协议而不是通信协议,常用于在uWSGI服务器与其他网络服务器的数据通信。
作用
进行协议之间进行转换
与Pythonapplication进行通信
基本命令
安装:pip3installuwsgi启动uwsgi–ini配置文件路径停止uwsgi–stopuwsgi.pid路径
编辑Django项目里的uwsgi.ini文件
[uwsgi]#使用nginx连接时使用socket=ip:port#直接作为web服务器使用#http=ip:port#项目目录chdir=项目目录#项目中wsgi.py文件的目录,相对于项目目录wsgi-file=项目名/wsgi.pyprocesses=4threads=2master=True#保存启动之后主进程的pidpidfile=uwsgi.pid#设置uwsgi后台运行,uwsgi.log保存日志信息daemonize=uwsgi.logvirtualenv=虚拟环境目录
最后启动nginx及uwsgi即可:
nginxuwsgi--iniuwsgi.ini
注意,在更改django项目内容后,需要重新reloaduwsgi以更新更改的内容。但是我之前都是用的uwsgi--ini/etc/uwsgi/uwsgi.ini来重启,一段时间后发现服务器内存使用率暴增,一看进程,uwsgi有大几十个进程,原来,我用的命令是新开进程,不会把原来的进程kill。所以,使用
uwsgi--reload/etc/uwsgi/uwsgi.pid
就可以更新项目了。
其他
这样你就可以在浏览器中输入你的云服务器公网ip地址访问到你的博客网站啦,你还可以在django后台管理中添加你的想写的内容,访问公网ip/admin即可,当然你得先创建一个超级管理员,使用
pythonmanage.pycreatesupersuer
然后输入用户名和密码即可。
当然mysql数据库的相关内容在我的以前文章中有讲到,不会使用的可以去看看,当然你可能会遇到各种问题,遇到问题最简单的方式就是复制问题然后谷歌或者百度,实在有搞不过去的可以私信我,或者有什么软件不知道去哪下载的也可以私信我,我看到了都会回复的。
作者简介:Python菜鸟工程师,将在接下来的一段时间内与大家分享一些与Python相关的知识点。如若文中出现问题,各位大佬多多指点,互相学习。喜欢的关注一个吧!谢谢!