实验一:创建阿里云服务器

1.认识和申请阿里云

  1. 阿里云包含了什么?
  2. 怎么配置云服务器?(硬件、软件部分)

2.云服务器的使用

  1. 控制台管理界面:管理什么?(重启、停止等)
  2. 可以在服务器中干什么?

3.防护机制

4.售后服务:提交工单

实验二:配置SSH远程连接

1.ssh的一个基本原理

2.在阿里云上配置ssh连接

云服务器配置好后,其他电脑都可以建立起和其的连接,实现远程登录,但需要输入远程连接的密码。

例如:windows系统中:(linux系统中同样)

如遇到ssh不是内部命令或外部命令,请检查openssh 客户端是否安装?

openssh 客户端安装方法:

  • 进入“设置” > “应用” > “应用和功能” > “可选功能”。
  • 点击“添加功能”,然后搜索“OpenSSH客户端”。
  • 选择它,然后点击“安装”。
  • 安装完成后,您应该能够使用SSH命令。

注意事项:每次连接云服务都需要ssh连接一下。

实验三:安装Python环境

从下载源码到编译安装Python 3.6.5的整个过程

# 使用wget命令从Python官方FTP服务器下载Python 3.6.5的源代码压缩包。
wget http://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz

# 使用yum包管理器安装zlib-devel。zlib是一个压缩库,Python在安装过程中需要它。
yum install zlib-devel

# 使用tar命令解压下载的Python源码压缩包。
tar -xvf Python-3.6.5.tgz

# 将解压后的Python源码文件夹移动到/usr/local目录下。这一步是为了便于管理和标准化安装位置。
mv Python-3.6.5 /usr/local/

# 切换到移动后的Python源码目录,准备开始编译安装过程。
cd /usr/local/Python-3.6.5

# 在/usr/local目录下创建一个名为python3的文件夹,用于存放Python安装后的文件。
mkdir /usr/local/python3

# 运行configure脚本,设置安装Python的位置(--prefix指定了安装位置)。这一步是准备编译的配置过程。
./configure --prefix=/usr/local/python3

# 编译Python源码并安装到前面指定的位置。这一步可能需要一些时间,因为它会编译Python的源码。
make install

# 检查Python 3的版本,以确保它正确安装。这个命令会显示安装的Python 3的版本号。
python3 --version

# 注释到此位置,最后一行“python3”命令实际上是用于启动Python 3的解释器。
# 如果只是单独的执行这个命令,它会进入Python的交互模式,等待用户输入Python代码。
python3

 除掉注释行后的代码(请在确保前一步没问题的情况下,一行一行执行)

wget http://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
yum install zlib-devel
tar -xvf Python-3.6.5.tgz
mv Python-3.6.5 /usr/local/
cd /usr/local/Python-3.6.5
mkdir /usr/local/python3
./configure --prefix=/usr/local/python3
make install
python3 --version
python3


实验四:部署并启动Django服务

安装和配置Web应用程序过程中,需要的一些基础组件安装命令,如Web框架、虚拟环境工具、应用服务器和Web服务器,理解这些组件如何相互作用搭建Web应用程序的。

一、启动Nginx服务

# 切换当前目录到之前编译安装的Python 3.6.5源代码目录。
cd /usr/local/Python-3.6.5

# 使用pip3命令安装Django框架的1.11.7版本。
# pip3是Python 3的包管理工具,用于安装和管理Python包。
pip3 install Django==1.11.7

# 使用pip3安装virtualenv包。
# virtualenv是一个用于创建隔离的Python环境的工具,可以在不同项目中使用不同版本的包而互不干扰。
pip3 install virtualenv

# 使用pip3安装uwsgi。
# uwsgi是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议,常用于部署Python Web应用。
pip3 install uwsgi

# 创建一个软链接(symbolic link),将/usr/local/python3/bin/uwsgi链接到/usr/bin/uwsgi。
# 这样就可以在任何位置直接调用uwsgi命令而不需要提供完整路径。
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

# 运行django-admin命令。
# django-admin是Django框架的命令行工具,用于执行各种管理任务,比如创建项目、应用等。
# 仅输入django-admin并不会做什么事情,它通常与其他参数一起使用来执行具体操作。
django-admin

# 使用yum包管理器安装Nginx。
# Nginx是一个高性能的HTTP和反向代理服务器,也可以用作邮件代理服务器。
# '-y'参数表示自动回答所有的提示为'yes',不需要手动确认。
yum install nginx -y

# 启动Nginx服务。
# systemctl是控制systemd系统和服务管理器的命令行工具。
# 'start'命令用于启动指定的服务,在这里是Nginx。
systemctl start nginx

#查看nginx状态,返回内容中显示acting绿色部分即成功
systemctl status nginx
cd /usr/local/Python-3.6.5
pip3 install Django==1.11.7
pip3 install virtualenv
pip3 install uwsgi
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
django-admin
yum install nginx -y
systemctl start nginx

启动成功后,在浏览器中输入:公网ip地址 ,会显示一个Welcome to的界面

注意事项:

1、运行到pip3 install uwsgi,可能提示错误,原因是uwsgi版本太低,需要升级至2.0.18版本

gcc --version
pip3 install uwsgi==2.0.18

2、启动Nginx服务失败,加载不出来页面,是因为443(快速添加)和8080端口(手动添加),80端口没有添加进云服务的安全组规则中(后期根据需要,还需添加其他端口),添加进去就可以正常访问了。出来的是一个Welcome CentOs界面。

3、为什么是Welcome CentOs界面,而不是书中的界面?

是因为ngnix版本不同,在该版本中,界面显示的内容在/usr/share/nginx/html/index.html文件中已经默认设置好了。

二、部署Django服务

部署一个Django应用:使用Nginx作为反向代理服务器,uWSGI作为应用服务器来服务Django应用

# 切换到Python 3.6.5的安装目录
cd /usr/local/Python-3.6.5

# 使用Django命令行工具创建名为HelloWorld的新Django项目
django-admin startproject HelloWorld

# 进入新创建的HelloWorld项目目录
cd HelloWorld/

# 显示当前目录结构,tree命令可以以树状图的形式列出目录内容
tree

# 如果系统没有安装tree命令,使用yum包管理器安装tree工具
yum install tree

# 执行Django项目数据库迁移命令,根据项目的models创建数据库表
python3 manage.py migrate

# 切换到Nginx的配置目录
cd /etc/nginx

# 创建nginx.conf文件的备份
cp nginx.conf nginx.conf.backup

# 使用vim编辑器打开nginx.conf文件进行编辑,按书上内容进行修改配置(注意别少})
# 注意:这一步需要用户手动编辑文件,根据具体要求配置Nginx服务
vim nginx.conf

# 返回到Python 3.6.5的安装目录
cd /usr/local/Python-3.6.5

# 再次进入Django项目的HelloWorld子目录
cd HelloWorld/HelloWorld

# 使用vim编辑器打开Django项目的settings.py文件进行编辑
# 注意:这一步需要用户手动编辑文件,根据具体要求配置Django项目
vim settings.py

# 使用uWSGI运行Django应用程序,以下是参数说明:
# --chdir 指定Django项目的目录
# --module 指定Django项目的wsgi模块
# --socket 指定uWSGI服务器监听的IP地址和端口
# --processes 指定uWSGI启动的工作进程数
uwsgi --chdir=/usr/local/Python-3.6.5/HelloWorld --module=HelloWorld.wsgi:application --socket=127.0.0.1:8080 --processes=5

nginx.conf中添加的内容:注意{ }的配对,最后还有一个与http的 },可参考后面的问题解决截图。(关于vim的用法,vim命令相当于windows中的文本文档编辑,进去之后,确保光标定位该界面,输入法切换至英文,键盘按I,界面下方显示INSERT,即进入编辑插入状态,即可修改里面内容,修改后,键盘按左上角退出Esc键,INSERT消失,如需保存更改,输入:wq后回车,为写入退出的意思,如无需保存修改,输入:q后回车,即可退出)

# 引入uWSGI的参数配置。这些参数定义了与uWSGI服务器交互的一些基本规则和信息。
# 通常这个文件包含了uWSGI请求所需的一些标准参数配置。
include uwsgi_params;

# 指定uWSGI服务器的地址和端口。这里告诉Nginx将请求转发到运行在本机(127.0.0.1)的8080端口上的uWSGI服务器。
# 这是uWSGI服务监听的地址和端口,Django应用通过uWSGI在这个地址上接收请求。
uwsgi_pass 127.0.0.1:8080;

# 设置一个指定的uWSGI参数。这里的参数名为UWSGI_CHDIR,用于指定uWSGI服务器启动时的工作目录。
# '/usr/local/Python-3.6.5/HelloWorld'是Django项目的根目录,uWSGI会在这个目录下查找和执行Django项目。
uwsgi_param UWSGI_CHDIR /usr/local/Python-3.6.5/HelloWorld;

去除注释后的:

 include uwsgi_params;
 uwsgi_pass 127.0.0.1:8080;
 uwsgi_param UWSGI_CHDIR /usr/local/Python-3.6.5/HelloWorld;

settings.py中修改的内容见课本(注意settings.py文件中原本是有内容的,在HelloWorld/HelloWorld路径下

启动uwsgi服务 uwsgi --chdir=/usr/local/Python-3.6.5/HelloWorld --module=HelloWorld.wsgi:application --socket=127.0.0.1:8080 --processes=5

在本地浏览器输入公网ip,即可见如下界面:

问题

1、无法访问Django页面(如果nginx.conf有任何修改,需要重启nginx,即先执行systemctl stop nginx停止,再执行systemctl start nginx):

(1)问题一及解决方式:未启动nginx服务,下次登陆时需先执行以下命令,以先启动nginx服务:

systemctl start nginx

或设置为系统启动时nginx自动启动(下次再启动的时候,无需自行启动。)

systemctl enable nginx 

(2)问题二及解决方式:修改ngnix.conf文件最后一行为:(原来路径忘记修改了)

uwsgi_param UWSGI_CHDIR /usr/local/Python-3.6.5/HelloWorld;

(3)问题三及解决方式:未启动uwsgi服务,需要启动

uwsgi --chdir=/usr/local/Python-3.6.5/HelloWorld --module=HelloWorld.wsgi:application --socket=127.0.0.1:8080 --processes=5

(4)问题四及解决方式:没有打开端口,可以在阿里云安全组中选择端口全部打开,也可以只打开8000端口(8000端口通常用于网络服务的通信,一些Web服务器或Web应用程序可能会使用8000端口作为默认端口)。

全部打开的方式:

只打开8000端口的方式:

2、调试中常用的一些命令

# 卸载已安装的uWSGI服务
pip3 uninstall uwsgi

# 安装uWSGI所需的依赖库
yum install -y pcre pcre-devel pcre-static

# 安装uWSGI服务,不使用缓存
pip3 install uwsgi --no-cache-dir

# 创建uWSGI的软链接,方便全局调用
ln -s /usr/local/bin/uwsgi /usr/bin/uwsgi

# 使用vi编辑器修改Nginx的默认首页文件
vi /usr/share/nginx/html/index.html

# 设置Nginx服务开机自启
systemctl enable nginx

# 查看Nginx服务的状态
systemctl status nginx

# 查看系统中所有运行的uWSGI进程
ps aux | grep uwsgi

# 列出所有正在使用的端口及其相关信息
netstat -tulnp

# 切换到Python安装目录
cd /usr/local/Python-3.6.5

# 编辑Django项目的视图文件,通常包含业务逻辑
vi HelloWorld/views.py

# 切换到Django项目的根目录
cd /usr/local/Python-3.6.5/HelloWorld

# 运行Django开发服务器,监听所有公网IP的8000端口,用于开发和测试
python3 manage.py runserver 0.0.0.0:8000

3、登录后找不到阿里云实例(界面或功能更新改版的原因)

这是因为进入引导界面,需要点击红圈部分跳过引导

在我的导航中找到云服务器ECS即可看到你的实例。

4,Nginx服务启动失败

问题一:

原因是配置文件 /etc/nginx/nginx.conf 在第 46 行有一个未知的指令 "Location/"(抄错了!!!)。这通常意味着配置文件中存在语法错误。如下图所示

修改后如下:

问题二:

nginx.conf文件中缺少了一个闭合的花括号 "}"。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐