腾讯云个人博客网站搭建

前言

疫情在家隔离期间,实在无聊,便想着了解一下目前网站相关的技术并选择适合学习并实现的部分实现自己的博客网站。

什么是网站?

网站也可以理解为web应用程序,只不过无需用户下载,只要有网络,随时随地都能访问。网站由域名、网站空间(服务器,vps)、网站程序、数据库等组成。域名和网址是对应的,比如http://14.215.177.39/就是百度,但是数字不好记,就发明了域名。没有域名也可以,那就是使用ip地址访问。使用域名需要解析,需要向域名注册商申请。使用域名也需要备案,凡是你使用的主机在中国大陆,那你当前绑定的域名都需要备案(网站ICP备案),指向外国主机或服务器则不需要备案。网站空间就是服务器,网站程序就是源代码,是程序员的头发换来的,数据库可有可无,如果做静态网站,不需要数据库,但如果是网店,12306,博客,论坛一类,就需要使用数据库进行数据管理和网页的动态显示。

建立一个网站需要什么?

一台能连接互联网的主机,一个域名,一个数据库,一个web工程

如何满足以上需要?

主机笔者使用的是云主机,(具体是哪家不讲,有广告嫌疑),可以同时申请域名并绑定到该云主机;
Web工程使用Django开发(django是使用python开发的一个web框架,使用方便,学习成本低),使用uwsgi+nginx部署;
如果是学习目的,Django可以使用sqlite数据库。

如何开发网站?

参考:https://www.django.cn/course/course-2.html
这里涉及到大量的django知识,笔者打算在后续的文章中展开讲,一来对于django笔者也是刚开始学,好多地方认知也不准确,二来上面所列教程及其详细,甚至有最后实现的源码。所以这儿只放一个笔者实现的效果图。

在这里插入图片描述

如何部署在云服务器上

第一步:把web工程拷贝到云主机上

笔者使用的方法是在本地开发好的web工程,使用github,push到远程仓库,然后在云主机上下载github代码。

第二步:安装python虚拟环境

sudo apt install virtualenv

进入要建立虚拟环境的目录,使用命令

virtualenv –python=python3 –no-site-pakeage venv

成功后可激活虚拟环境

source venv/bin/activate

激活成功后,命令行每行前面括号会有你的虚拟环境名称,笔者是venv。

第三步:安装环境nginx,uwsgi,django

在虚拟环境下,运行

pip3 install uwsgi 
sudo apt-get install nginx
pip3 install django

第四步:测试django

同样,在虚拟环境下,在web工程根目录下运行

python  manage.py runserver 0.0.0.0.8000

在本地开发时可以直接打开浏览器查看结果,在没有界面的云主机上只是用来测试web程序所依赖的环境是否配置成功。

第五步:测试uwsgi

Uwsgi命令参数很多,每次都打很费劲,写一个配置文件uwsgi.ini,放到web工程的根目录。

[uwsgi]
socket = /home/gwj/socktmp/zqxt.sock  # 使用文件转发时使用,对应的配置文件
# socket = 0.0.0.0:8000 # 对应的配置为uwsgi_pass 127.0.0.1:8000,推荐使用此方式
# http = 0.0.0.0:8000  # 直接发布,不使用nginx转发时使用
chdir = /home/gwj/Pycharm  # web工程根目录
wsgi-file = Pycharm/wsgi.py  # 工程名/ wsgi.py
home = /home/gwj/PythonEnv/venv  # 虚拟环境根目录
static-map = /static=/home/gwj/Pycharm/static  # 静态资源目录
processes = 1
threads = 1
buffer-size = 32768 
chmod-socket = 755
vacuum = true
uid=root
gid=root

然后使用uwsgi uwsgi.ini启动,如果要在后台启动,则加-d参数。

第五步:测试nginx

Nginx使用也需要配置
在/etc/nginx/sites-available下建立Pycharm.conf文件,内容如下

server {
    listen      80;
    server_name localhost www.qianrenzhan.com 127.0.0.1;
    charset     utf-8;
 
    client_max_body_size 75M;
 
    location /media  {
        alias /home/ubuntu/Pycharm/media;
    }
 
    location /static {
        alias /home/ubuntu/Pycharm/static;
    }
 
    location / {
        uwsgi_pass  unix:/home/ubuntu/socktmp/zqxt.sock;  # 和uwsgi.ini中对应
        include     /etc/nginx/uwsgi_params;
    }
}

建立软连接,把放到sites-available 的Pycharm.conf 软连接到sites-enabled中

sudo ln -s /etc/nginx/sites-available/Pycharm.conf /etc/nginx/sites-enabled/Pycharm.conf

启动nginx

sudo service nginx reload

然后在本机访问云主机地址,如果可以看到你的网站,则说明所以配置成功;如果网站可以看到,但静态资源无法下载,则需要关注uwsgi.ini文件中的static-map = /static=/home/gwj/Pycharm/static一项,并且在web工程运行django的搜集静态资源命令,把静态资源拷贝到指定的路径中。如果看不到你的网站,但看到了nginx的欢迎页面,则说明nginx配置正确,uwsgi配置有问题。如果无法连接,则说明nginx配置有误。

Web工程操作

搜集静态资源

在setting.py文件中,设置STATIC_ROOT和STATICFILES_DIRS。STATIC_ROOT只能有一个路径,并且不能包含到STATICFILES_DIRS中。

STATIC_ROOT=os.path.join(BASE_DIR, 'static')

STATICFILES_DIRS = (
    # os.path.join(BASE_DIR, 'static'), # 不能包含STATIC_ROOT
    os.path.join(BASE_DIR, 'blog', 'static'),
    os.path.join(BASE_DIR, 'templates', 'static')
)

在运行collectstatic命令过程中,会把STATICFILES_DIRS目录中的内容拷贝到STATIC_ROOT。

数据库迁移

生成迁移文件

python manage.py makemigrations

生成数据库表

python manage.py migrate
发布了113 篇原创文章 · 获赞 132 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/iamqianrenzhan/article/details/104420084