当前位置: 首页 > news >正文

从0到1【建站:AWS+Ubuntu+Python+Django+uwsgi+nginx+ssl】

目录

  • 一、创建服务器
      • 1、进入AWS官网
      • 2、启动实例
      • 3、创建新密钥对
      • 4、选择密钥对
      • 5、网络设置
      • 6、配置存储
      • 7、启动实例
      • 8、查看实例
      • 9、配置安全组
  • 二、连接服务器
      • 1、在AWS官网进行连接
      • 2、使用Xshell7进行连接
      • 3、设置允许root登录
  • 三、域名解析
      • 1、进行腾讯云官网
      • 2、管理域名解析
      • 3、绑定公有 IPv4 地址
      • 4、下载SSL证书
  • 四、配置服务器环境
      • 1、查看系统版本
      • 2、查看Python版本
      • 3、更新apt
      • 4、安装pip
      • 5、更换pip镜像源
      • 6、安装django
  • 五、启动Django项目
      • 1、创建项目文件夹
      • 2、获取项目
      • 3、启动Django项目
      • 4、关闭项目
  • 六、用uwsgi进行部署
      • 1、安装uwsgi
      • 2、新建uwsgi.ini文件
      • 3、启动Django项目
  • 七、用nginx进行部署
      • 1、安装netstat
      • 2、关闭uwsgi服务
      • 3、修改uwsgi.ini文件
      • 4、再次启动uwsgi服务
      • 5、安装nginx
      • 6、查看nginx版本
      • 7、查找nginx.conf配置文件的路径
      • 8、修改nginx.conf文件
      • 9、启动nginx
  • 八、nginx适配ssl证书
      • 1、上传ssl证书到服务器
      • 2、修改nginx.conf文件
      • 3、重启nginx服务
  • 九、注意事项
      • 1、注意事项
      • 2、gitee常用命令

一、创建服务器

以AWS(亚马逊Web服务)为例

1、进入AWS官网

AWS官网网址
在这里插入图片描述

2、启动实例

在这里插入图片描述
在这里插入图片描述

3、创建新密钥对

在这里插入图片描述
创建密钥对之后会下载到电脑本地,一定要保存好
在这里插入图片描述

4、选择密钥对

在这里插入图片描述

5、网络设置

在这里插入图片描述

6、配置存储

在这里插入图片描述

7、启动实例

在这里插入图片描述

8、查看实例

在这里插入图片描述
勾选实例,可以查看该实例,记住这里的公有 IPv4 地址;

发现ping不通:
在这里插入图片描述

9、配置安全组

点击这个安全组,然后进去;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将SSH的选为所有流量,并保存规则;
在这里插入图片描述
在本机电脑的cmd,发现可以ping得通了:
在这里插入图片描述
注:这里一定要能够ping得通;

二、连接服务器

1、在AWS官网进行连接

在这里插入图片描述
在这里插入图片描述
发现可以连接得上:
在这里插入图片描述

2、使用Xshell7进行连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
鼠标选中Public Key之后,点击设置;
在这里插入图片描述
在这里插入图片描述
找到刚才在创建密钥对时下载的密钥文件:
在这里插入图片描述
选中导进来的密钥之后点击确定:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现可以登进来了:
在这里插入图片描述

3、设置允许root登录

设置root密码:

sudo passwd root

切换到root账户:

su - root

在这里插入图片描述
给ubuntu用户设置密码:

passwd ubuntu

修改ssh配置文件:

vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password  改成  PermitRootLogin yes
PasswordAuthentication no  改成  PasswordAuthentication yes
UsePAM yes  改成  UsePAM no

在这里插入图片描述
在这里插入图片描述
:wq保存并退出;

修改authorized_keys文件:

sed -ri 's/^/#/;s/sleep 10"\s+/&\n/' /root/.ssh/authorized_keys

重启sshd.service:

systemctl restart sshd.service

在这里插入图片描述
现在可以用Xshell7进行root连接了;
选中“新建会话”,鼠标右键点击,选择属性:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、域名解析

以腾讯云为例

1、进行腾讯云官网

腾讯云域名注册网址
在这里插入图片描述

2、管理域名解析

在这里插入图片描述

3、绑定公有 IPv4 地址

在这里插入图片描述

4、下载SSL证书

如果没有获取SSL证书,要点击获取一下:
在这里插入图片描述
在这里插入图片描述
后面搭建服务器要用到nginx,所以这里下载对应的nginx证书就可以了:
在这里插入图片描述
下载好之后解压:
在这里插入图片描述
可以得到这4个文件:

xxx.csr
xxx.key
xxx_bundle.crt
xxx_bundle.pem

四、配置服务器环境

1、查看系统版本

lsb_release -a

在这里插入图片描述
可以看到,我这里使用的是Ubuntu22.04;

2、查看Python版本

python3 -V

在这里插入图片描述
可以看到,我这里使用的是Python3.10.6;

3、更新apt

在我们安装任何软件之前,请务必通过运行以下命令来确保您的系统是最新的 apt 终端中的命令:

apt update
apt upgrade
apt install wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev

注:
遇到问句,输入y就可以了;
遇到界面形式的,Tab到OK,然后Enter就差不多可以了;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、安装pip

现在正式安装pip:

apt-get install python3-pip

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完成,查看pip版本:

pip3 -V

在这里插入图片描述
可以看到,我这里使用的是pip22.0.2;

5、更换pip镜像源

家目录~下创建.pip文件夹

mkdir ~/.pip 

创建pip.conf文件

vi ~/.pip/pip.conf

将以下内容复制进pip.conf中

[global]
index-url = https://repo.huaweicloud.com/repository/pypi/simple/
[install]
trusted-host=repo.huaweicloud.com

:wq保存并退出;
可以看到,我这里使用的是华为云镜像源;

6、安装django

pip3 install django

在这里插入图片描述
可以看到,我这里使用的是django4.1.3;

五、启动Django项目

1、创建项目文件夹

利用Xftp便捷的功能新建/data/www文件夹,并进入:
在这里插入图片描述
在这里插入图片描述

2、获取项目

这里利用git命令获取示例项目

git clone https://gitee.com/leaftest/testdjango.git

3、启动Django项目

这里使用django自带的wsgi模式启动Django项目;
进入项目文件夹下面的目录下面:

cd /data/www/testdjango

启动项目:

python3 manage.py runserver 0.0.0.0:8000

在这里插入图片描述

可以看到,这里django项目默认启动的是8000端口;
现在,就可以在电脑本机进行访问了【也可以换成自己域名进行访问,也要加端口号:8000】:
在这里插入图片描述
注意这里的网址前缀是http://

4、关闭项目

直接在刚才启动的地方按键Ctrl+C就可以了;
在这里插入图片描述

六、用uwsgi进行部署

1、安装uwsgi

pip3 install uwsgi

在这里插入图片描述
查看uwsgi版本:

uwsgi --version

在这里插入图片描述
可以看到,我这里使用的是uwsgi2.0.20;

2、新建uwsgi.ini文件

在项目下新建uwsgi.ini文件:
在这里插入图片描述
uwsgi.ini文件内容如下:

[uwsgi]
http=0.0.0.0:8000
chdir=/data/www/testdjango
wsgi-file=/data/www/testdjango/testdjango/wsgi.py

pidfile=/data/www/testdjango/uwsgi.pid
daemonize=/data/www/testdjango/uwsgi.log

解释说明:

http=0.0.0.0:8000 # 外部通过http方式访问;
chdir=/data/www/testdjango # 项目目录
wsgi-file=/data/www/testdjango/testdjango/wsgi.py # 加载项目下的wsgi.py文件
pidfile=/data/www/testdjango/uwsgi.pid # 指定pid文件,避免启动后不能操作窗口
daemonize=/data/www/testdjango/uwsgi.log # 指定log文件,避免启动后不能操作窗口 

3、启动Django项目

用uwsgi方式启动django项目之前,记得先把刚才的wsgi方式启动的关掉,然后进入刚才新建了uwsgi.ini文件的目录下;
用uwsgi方式启动django项目的命令:

uwsgi --ini uwsgi.ini

在这里插入图片描述

现在,就可以在电脑本机进行访问了【也可以换成自己域名进行访问,也要加端口号:8000】:
在这里插入图片描述
注意这里的网址前缀是http://

七、用nginx进行部署

1、安装netstat

apt install net-tools

在这里插入图片描述
在这里插入图片描述

2、关闭uwsgi服务

先找到uwsgi启动的进程号:

netstat -apn|grep uwsgi

在这里插入图片描述
结束对应进程:

kill -9 16767

再检查一下:

netstat -apn|grep uwsgi

在这里插入图片描述

3、修改uwsgi.ini文件

修改为:

[uwsgi]
socket=0.0.0.0:8000 # 这里修改一下就可以了
chdir=/data/www/testdjango
wsgi-file=/data/www/testdjango/testdjango/wsgi.py

pidfile=/data/www/testdjango/uwsgi.pid
daemonize=/data/www/testdjango/uwsgi.log

4、再次启动uwsgi服务

uwsgi --ini uwsgi.ini

在这里插入图片描述

5、安装nginx

apt-get install nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、查看nginx版本

nginx -v

在这里插入图片描述
可以看到,我这里使用的是nginx1.18.0;

7、查找nginx.conf配置文件的路径

nginx -t

在这里插入图片描述
我这里在/etc/nginx/目录下,进去,修改nginx.conf配置文件

8、修改nginx.conf文件

原文件内容如下:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
#
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}

直接替换为:

# 不开启ssl的成功版本

events {
    worker_connections  1024;
}

http {
    upstream django {
       server 127.0.0.1:8000; #web的socket端口
    }

    server{
        listen 80; # 监听80端口
        server_name localhost; 
          
        location / { 
            include uwsgi_params; 
            uwsgi_pass django; 
        }
    }
}

9、启动nginx

nginx

在这里插入图片描述
可以看到,80端口被占用;

netstat -apn|grep 80

在这里插入图片描述

结束对应进程:

kill -9 17349

再次启动nginx:

nginx

在这里插入图片描述
在本地浏览器进行访问,可以看到并不安全【也可以换成自己域名进行访问】:
在这里插入图片描述
注意这里的网址前缀是http://
另外,这里的访问可能会失败,可能是浏览器缓存导致的原因。

也可能是uwsgi服务不小心关闭了,查看一下进程还在不在,没有了就去启动一下:

netstat -apn|grep uwsgi
uwsgi --ini uwsgi.ini

八、nginx适配ssl证书

1、上传ssl证书到服务器

这里需要将之前在腾讯云下载的ssl证书放到指定的位置:/etc/nginx/cert/
没有文件夹就新建;

2、修改nginx.conf文件

直接替换为【ssl证书地址改成自己的】:

# 开启ssl的成功版本

events {
    worker_connections  1024;
}

http {
    upstream django {
        server 127.0.0.1:8000; # web的socket端口
    }
    server {
        listen 80; # 监听80端口
        server_name localhost;
        rewrite ^(.*)$ https://$host$1 permanent;
    }

    server {
        listen 443 ssl; # 监听443端口并开启ssl
        server_name  localhost;
        ssl_certificate /etc/nginx/cert/xxx_bundle.crt; # pem文件也行,这里替换成自己的ssl证书地址
        ssl_certificate_key /etc/nginx/cert/xxx.key; # 这里替换成自己的ssl证书地址
        location / {
            include uwsgi_params;
            uwsgi_pass django;
       }
    }
}

3、重启nginx服务

先找到,再结束进程,再启动:

netstat -apn|grep nginx
kill -9 18455
nginx

在这里插入图片描述
在本地电脑采用域名访问,可以看到,是安全的:
在这里插入图片描述
注意这里的网址前缀是https://

九、注意事项

1、注意事项

由于浏览器存在缓存等原因,可能导致调试不成功;
推荐浏览器:谷歌浏览器、微信的内置浏览器;
由于Ubuntu、Python、Django、uwsgi、nginx的版本原因,可能导致调试不成功;

2、gitee常用命令

git init
git remote add origin https://gitee.com/leaftest/testdjango.git

git add .
git commit -m 'init'
git push origin master

git clone https://gitee.com/leaftest/testdjango.git
git pull origin master

免责声明:
1.编写此文是为了更好地学习,如果损害了有关人的利益,请联系删除;
2.如果文中描述欠妥,请在评论中进行指正;
3.文字编写不易,若感觉有用,点赞收藏关注会让博主很开心哦;
4.此外,转载请注明出处,非常感谢!!!
本文源自:https://blog.csdn.net/testleaf/article/details/128692183

相关文章:

  • wordpress类似qq空间/武汉seo首页优化技巧
  • win7 做网站好吗/微信营销软件免费版
  • 展示型企业网站制作费用/网络营销服务企业
  • 重庆承越网站建设公司/友情链接的英文
  • 百度站长平台快速收录/天津百度关键词推广公司
  • 做便宜网站/厦门百度seo排名
  • Java安装详细教程
  • GaussDB(DWS)数据库的数据迁移实操【玩转PB级数仓GaussDB(DWS)】
  • 低代码平台助力汽车行业构筑新基建
  • java调用python文件的几种方式
  • Linux 中断子系统(八):中断处理流程
  • 从零开始学习Linux
  • Java并发面试题
  • eCharts工具类
  • Spring官方提供【CSRF攻击】解决方案
  • 如何帮助你在经济衰退期间管理你的业务?
  • Docker部署Nexus通过Maven推送及拉取代码
  • win32com操作word 第二集:ApplicationDocuments接口