阿里云实验:代码+解读
安装和配置Web应用程序过程中,需要的一些基础组件安装命令,如Web框架、虚拟环境工具、应用服务器和Web服务器,理解这些组件如何相互作用搭建Web应用程序的。2、启动Nginx服务失败,加载不出来页面,是因为443和80端口没有添加进云服务的安全组规则中,添加进去就可以正常访问了。1、运行到pip3 install uwsgi,可能提示错误,原因是uwsgi版本太低,需要升级至2.0.18版本。
实验一:创建阿里云服务器
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文件中缺少了一个闭合的花括号 "}"。
更多推荐

所有评论(0)