相关文章推荐
胡子拉碴的绿豆  ·  maven打包忽略单元测试-掘金·  1 年前    · 
卖萌的口罩  ·  UserControl 類別 ...·  2 年前    · 
想旅行的小笼包  ·  关于pyqtgraph可不可以设置坐标刻度间 ...·  2 年前    · 
Code  ›  从0到1【建站:AWS+Ubuntu+Python+Django+uwsgi+nginx+ssl】_aws ubuntu 22.04
nginx uwsgi django python3
https://blog.csdn.net/testleaf/article/details/128692183
礼貌的凳子
1 年前
  • 一、创建服务器
      • 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常用命令

                      发现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;

                      注:centos7安装uwsgi后需要创建一个软链接:
                      如:

                      ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
                      

                      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

                      许可证:BSD njode 广泛依赖于环境设置,这些设置不适用于 Apache/mod_wsgi 设置。 它已经在 Gunicorn/Nginx 甚至 uWSGI/Nginx 上成功部署。 出于配置目的,下表将“njode”环境变量映射到它们的 Django 设置: Django 设置 DJANGO_AWS_ACCESS_KEY_ID AWS_ACCESS_KEY_ID DJANGO_AWS_SECRET_ACCESS_KEY AWS_SECRET_ACCESS_KEY DJANGO_AWS_STORAGE_BUCKET_NAME AWS_STORAGE_BUCKET_NAME DJANGO_CACHES locmem 许可:GPL v 3 80days广泛依赖于环境设置,该环境设置不适用于Apache / mod_wsgi设置。 它已与Gunicorn / Nginx甚至uWSGI / Nginx一起成功部署。 出于配置目的,下表将“ 80days”环境变量映射到其Django设置: Django设置 DJANGO_AWS_ACCESS_KEY_ID AWS_ACCESS_KEY_ID DJANGO_AWS_SECRET_ACCESS_KEY AWS_SECRET_ACCESS_KEY DJANGO_AWS_STORAGE_BUCKET_NAME AWS_STORAGE_BUCKET_NAME DJANGO_CACHES DJANGO_DATABAS 因工作需要,做一些Python爬虫的工作,申请了一个AWS的云服务器,要自己安装Python3环境。把安装过程记录一下,方便有类似需求的人,也给自己做个记录。 这个环境可以实现无界面的selenium测试。详细步骤如下 1. AWS上有现成的yum安装包,先查看一下 [ec2-user@]$ sudo yum list | grep python3 python3.i686                           3.7.4-1.amzn2.0.4              amzn2-core python3.x86_64                         3.7. python -m venv myvenv(가상환경) python source myvenv / scripts / activate(가상환경) pip install -r requirements.txt(모듈) python manage.py collectstatic(정적관리) python manage.py createsuperuser(슈퍼유저) python manage.py运行服务器 一、AWS1. Launch t2.micro ubuntu一台。2. 绑定security group,关闭除443和22之外的所有端口,443和22设为只允许本地访问。如果过了几天发现ping和ssh都没反应了,记得去把安全组里的本地IP更新一下。3. 加载security key。如没有则在线生成。4. 绑定elastic IP二、Putty拷贝public DNS IP到Putty,并设置... 为了方便以后查看,就把过程记录一下。 注意:亚马逊(AWS)服务器默认只能用 user-ec2 账户进行登陆,需要切换一下,使用 root 账户登陆。否则会因为权限不够,导致一些软件或功能无法安装。 参考我之前的文章:使用Xshell登录亚马逊AWS EC2服务器&配置ro... 在aws控制台->ec2->卷,创建新卷,右键连接卷,选择ec2实例,附加完成 ssh连接实例,lsblk 命令查看所有磁盘及挂载点, 创建ext4文件系统 sudo mkfs -t ext4 /dev/xvdf (xv... 在学Linux,想着搞个服务器来玩玩,发现亚马逊云可以弄免费的服务器,跌跌撞撞才了不少坑,最后给弄好了,这里记录一下我的创建Aws EC2示例+用Xshell7连接登录Aws+设置允许使用root登录的整个过程,提供大家参考,也防止自己以后忘记怎么弄。... 通过使用 Ceph 管理器 crash 模块,您可以收集有关守护进程 crashdumps 的信息,并将其存储在 Ceph Storage 集群中,以便进一步分析。崩溃目录按时间、日期和随机生成的 UUID 命名,包含元数据文件 meta 和最新的日志文件,其 crash_id 是相同的。此外,定期监控和维护BCache缓存设备的容量和性能是至关重要的,以确保系统的可靠性和一致性。可以设置不同的缓存规则和策略,根据数据的访问模式来调整数据在SSD上的缓存策略,以最大程度地提高性能。 博客链接1:http://blog.csdn.net/lichangzai/article/details/39379153 百度百科:http://baike.baidu.com/link?url=jedR4AlcW5sB5EnPRrEWmPCs6x3f9JHPpEdSOf2xzXCzl12wjPTyShco8Mmy7_0RINJRHR2BOHRl5ChsvT5_s... 轻微强迫症,对于EC2登录要求使用ec2-user用户,不允许使用root感觉不舒服,特此查询资料解决。1、打开xshell,工具->用户密钥管理者->导入(aws下载的密钥)2、新建session,填写云主机的公有IP和协议、端口号,在用户身份验证处选择用户和密钥3、本次登录使用的ec2-user用户,如果使用root登录会提示:Please login as ... 遇到问题:Connecting to 服务器IP...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.Connection closing...Socket close.Connection closed by foreign host.Disconnected from remote host(连接名) at...
 
推荐文章
胡子拉碴的绿豆  ·  maven打包忽略单元测试-掘金
1 年前
卖萌的口罩  ·  UserControl 類別 (System.Web.UI) | Microsoft Learn
2 年前
想旅行的小笼包  ·  关于pyqtgraph可不可以设置坐标刻度间隔问题_小马在学python啊的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号