如何部署自己的网站
创建时间:2024年8月8日 / 最近修改:2024年9月6日
这是我的第一篇正式博客!如果有什么错误的地方,也希望大家能向我反馈:)
本篇我将从如何获得一台自己的服务器开始,到最终部署整个网站。搭建自己的网站并上线到互联网上并不是件难事,在这整个过程以及后续对网站的开发和完善中,也希望大家能学到有用的知识,能尝试自己动手部署自己的网站!
注:本网站采用django框架,服务器使用的是阿里云的云服务器,服务器操作系统是Ubuntu22.04,部署采用ngnix+uwsgi方式。菜鸡站长也是刚开始学习,很多地方并不专业,也存在很多错误,其中也有很多地方是比较野路子的写法,希望大家能一起多多交流。
哈哈废话了这么多,现在让我们来开始这次的教程!
一、服务器搭建
首先!我们需要一台属于自己的服务器,那么如何获得一台自己的服务器呢?我们可以去各大平台如阿里云、腾讯云、华为云上租用一台服务器,由于我们的服务器主要功能就是运行我们的网站代码,因此!我们怎么便宜怎么来:)而各大平台也经常有活动优惠,可以以较低的价格购入一台服务器,而为平台的新用户我们也可以先免费试用一台服务器,所以尽情的薅这些人民企业家的羊毛吧!
1.从阿里云上租用服务器
本次教程我们以阿里云为例(https://www.aliyun.com/),从阿里云上租用服务器来部署我们的网站,所以我们需要注册一个阿里云的账户(我相信这一步大家都会的),然后我们依次进入产品->计算->云服务器ECS,点击云服务器ECS。

这时候我们应该进入了如下界面

此时我们往下拉就可以看到这样的免费使用(如果你是新用户的话),我们点击马上试用

然后!我们再点击立即使用,开始我们服务器的配置部分~
2.创建实例(配置服务器)
因为我已经使用过试用资格,所以就从购买服务器的配置界面进行讲解,至于如何选择使用/购买的服务器,由于我们的服务器功能主要是运行我们的网页,因此不需要特别好的服务器,选择经济型的即可。以下是一般服务器的购买配置,如果有活动优惠也可以选择其他性价比更高的选项。
付费类型我们选择包年包月,地域则选择一个离你比较近的就可以了

然后就是我们的实例和镜像部分,实例选择经济型e的2vCPU,2GiB内存。

镜像则选择Ubuntu 22.04 64位,这个也就是你服务器的操作系统。
虽然里面有Window的操作系统,但还是推荐使用Linux的操作系统,世界上大部分的服务器都采用Linux,他比Window更加的稳定。虽然没有图形界面,采用终端的形式进行操作,但学习难度并没有很高,推荐大家可以学习如何使用Linux的操作系统,今后工作如果有涉及硬件方面的话大概率还是会接触到Linux,不学白不学。

储存部分默认即可

接着便是我们的宽带和安全组的选择。注:请务必将公网IP项勾选,还有开通IPv4端口/协议中的HTTP勾选

最后就是我们密码的设置,这里我们选择自定义密码,填写你的密码后即可完成实例创建

最后的最后!便是我们最终要的付款环节!如果你是选择试用的那就是免费: ) 但如果是选择购买的,一般按我这样选择价格估计在80~90之间,平时优惠活动很多,推荐活动时有购入
3.使用第三方应用辅助开发
完成服务器实例的创建后,我们回到阿里云的首页,点击头像右边的控制台

点击左边那个列表图标(三)后,再点击里面的云服务器ECS

然后找到实例与镜像中的实例,选择里面你刚刚创建实例

进入后记住你的公网IP,切记请勿将公网IP随意泄露给他人!!!

然后我们需要安装两个软件以便和我们的服务器建立安全的连接。分别是XSHELL和XFTP,他们有免费版和付费版,以下是他们免费版的链接https://www.xshell.com/zh/free-for-home-school/。

完成两个软件的下载安装和注册后,我们先进入Xshell的界面,右键所有会话,选择新建->会话

进入新建会话后,我们处于连接界面,我们需先填写我们的主机号,也就是我们服务器的公网IP

之后我们再点击左侧用户身份验证,输入你的用户名和密码。(一开始创建好后用户名为root,密码为你创建实例时最后填写的密码)特别强调:root为你服务器的最高权限用户,请勿将root的密码泄露!!!

全部完成后我们点击连接就可以进入到我们服务器的终端界面。Linux的系统可以支持多用户多线程操作,我们可以开启多个服务器的会话窗口,进行多线操作

注:如果点击确定进入会话是需要这个窗口且其中使用密码登录无法选中,我们需要回到阿里云中该实例的界面并重置密码,其中仅重新填写密码确认修改即可(配置SHH需要设置为保持开启)没有遇到该问题请忽略



若无出现上述问题,请忽略上方步骤继续以下操作
然后我们点击上方导航条中的中间绿色的那个(XFTP图标的那个)

如果一切顺利,我们这完成了本地电脑与服务器的连接,之后就可以通过Xshell对服务器进行指令操作,Xftp来实现本地电脑与服务器间的文件传输

至此我们已经完成到服务器实例的创建和连接,接下来我们将讲述如何把网页程序部署到服务器上
二、部署网站
1.使用宝塔面板
对于第一次使用Liunx的同学,我们可以借助宝塔面板来简化部分操作,首先我们进入宝塔面板的官网(https://www.bt.cn/),点击立刻免费安装,下滑找到安装脚本

根据自己服务器实例的操作系统选择安装脚本,我里面选择Ubuntu的安装脚本,在此之前需先在服务器上安装wget(该指令适用于Ubuntu 系统)
sudo apt-get update
sudo apt-get install wget
wget -O install.sh https://download.bt.cn/install/install_lts.sh && sudo bash install.sh ed8484bec
将指令复制到我们Xshell的会话中,按回车执行,如果有碰到输入y/n的,输入y即可。安装完毕后通过会话中的外网面板地址登录宝塔面板

这里我们需要注意了!进入自己服务器的宝塔面板需要在安全组中对端口进行放行,如我这里的地址是xxx.xxx.xxx.xxx:15524,其中的15524就是我需要放行的端口。在网络与安全中找到安全组

点击管理规则,手动添加->端口范围->目的,将目的填写为自己需要开放的宝塔面板端口(不一定是我的15524!!!)。然后将源设置为我的IP或者所有IPv4,如果设置为我的IP则只有本机可以通过外网地址访问到宝塔面板,而所有IPv4则是所有电脑都可以通过外网地址访问,建议设置为我的IP,如果有多台电脑想要访问,则再将其他电脑的IP手动添加到源中


2.配置宝塔面板
完成上述操作后,我们即可通过外网面板地址进入到服务器的宝塔面板中,输入账户密码即可登录。

完成登录后请在Xshell中修改自己密码和用户名,可通过在终端中输入bt呼出宝塔面板的命令,然后输入编号进行操作。也可以直接输入bt 5/bt 6来修改面板的密码或用户名,下次登录时可通过输入bt 14来获取外网面板地址

进入面板后还需绑定自己的宝塔账户,注册登录即可绑定。

绑定后会跳出推荐安装条件,选择LNMP并将MySQL版本选择为8.0,点击一键安装。如果出现安装失败或未弹出该界面,则可以到左侧软件市场搜索进行手动安装。

3.网站文件上传与配置
然后我们就要将自己的网站代码文件上传到服务器上(如果大家还不会使用django在本地部署网站的话,可以先去学习如何使用django,这是django4.2的中文文档https://docs.djangoproject.com/zh-hans/4.2/)。上传的路径我们要安排在/www/wwwroot/”你的网站文件夹“,通过点击Xshell上方的Xftp图标即可建立本地与服务器端的连接。

在上传自己的服务器文件之前,我们需要对自己django文件中进行一番修改
修改DEBUG为False并将ALLOWED_HOSTS设置为['*'],这个的意思是允许其他主机访问你的网站

在INSTALLED_APPS中最上面添加'simpleui',这个是对你的admin界面进行美化

修改你的DATABASES,将数据库从django自带的数据库替换成mysql数据库。先在宝塔面板的数据库中创建一个新的数据库,再在setting中修改

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myblog', #数据库名
'HOST': '127.0.0.1',
'USER': 'myblog', #用户名
'PASSWORD': 'pimM7LfMmLkNL74X', 密码
'POST': 3306
}
}
完成后再确认一下你的static和media设置,这样就完成了最后的修改

左侧为你电脑本地的文件,右侧为服务器的文件,在左侧找到你网站文件夹,右侧从根目录出发来到/www/wwwroot/,将左侧文件夹右键传输到服务器上。

然后就是导入你的python环境依赖,如果你的代码习惯非常好,会给每个项目建立虚拟环境,你可以在你的python网站项目的虚拟环境下使用如下指令来生成你的requirements.txt文件。
注:此指令需要在终端中输入,可以通过Pycharm的终端直接进入,也可以通过cmd进入终端后先找到网站所在文件夹并进入该项目的虚拟环境后输入
pip freeze > requirements.txt
若你没有为你的网站项目建立虚拟环境,你就需要自己手动导入你安装的依赖。我这里提供一个相对必要的依赖,你可以再自行往里面添加其他依赖
#请在服务器的网站文件夹下创建一个requirements.txt并把以下依赖复制进行
Django==4.2.10
django-simpleui==2022.2.16
PyMySQL==1.0.2
mysqlclient==1.4.3
获取环境依赖并将requirements.txt放置在服务器的网站文件夹下后。我们要在服务器上安装这些依赖,在网站文件的根目录下输入:
pip install -r requirements.txt
完成后我们需要迁移自己的数据库
python3 manage.py makemigrations
python3 manage.py migrate
完成后我们再创建自己的admin账户和完成对static静态文件的收集
创建超级用户,注:Linux系统中输入的密码都是不可见的,如果发现输入密码却没有任何变化为正常现象!输完直接回车就可以了
python3 manage.py createsuperuser
然后我们来收集完整的静态文件,使用指令收集后会在网站根目录下生成staticfiles文件夹,我们只需将以前的static文件夹重命名为static.old,再将新收集的静态文件夹staticfiles命名为static即可
python3 manage.py collectstatic
然后我们安装uwsgi
pip3 install uswgi
之后我们在网站根目录下创建一个uwsgi.ini并在里面写入
[uwsgi]
chdir = /www/wwwroot/myblog/
master = true
processes = 4
threads = 4
socket = :8000
module = myblog.wsgi
之后我们输入
uwsgi --ini uwsgi.ini 若出现以下画面则说明uwsgi配置成功,请不要通过Ctrl+C关闭该服务,我们需要其保持运行。我们可以通过新开启一个会话进行之后的操作

随后我们配置我们的nginx文件,如果是通过宝塔面板安装的nginx,可以通过以下命令找到nginx.conf
cd /www/server/nginx/conf/
nano nginx.conf
然后我们将以下代码粘贴到里面,这段代码粘贴的位置如下
server {
listen 80; # 监听端口
server_name test.nore07.com; # 服务名字,多域名就写域名,如果没有域名则可填写服务器的外网IP随后通过外网IP访问
location / {
uwsgi_pass 127.0.0.1:8000; # django运行的端口
include uwsgi_params; # 固定搭配
}
location /media/{
alias /www/wwwroot/myblog/media;
}
location /static{
alias /www/wwwroot/myblog/static; # django收集的静态文件
}
}

完成后保存并退出,重启我们的nginx服务
nginx -s reload
然后!我们便完成了所有的工作!!!现在然后我通过你nginx中配置的server_name来访问你的网站,如我这里是test.nore07.com

结语
到此为止我们的网站部署教程就结束啦!但这里面还有需要没有完成的工作,比如我们还没有对我们的网站代码进行守护,一旦我们服务器重启或者网站意外中断就需要重新启动uwsgi服务,这里我们便需要用到supervisor来守护我们的进程,让他能在意外中断后能重新启动。
关于supervisor的配置,有时间我再详细讲解~那么感谢大家的观看!!!



