项目部署二:服务器和环境配置

news/2024/12/21 22:06:19/文章来源:https://www.cnblogs.com/Tmars/p/18442213

2.服务和环境配置

下面的配置和操作均在腾讯云服务器+CentOS 7.5的系统下进行。

2.1 MySQL

  • 安装服务端

    yum install mariadb-server -y
    mariadb-server.x86_64 1:5.5.68-1.el7
    
  • 安装客户端

    yum install mariadb -y
    软件包 1:mariadb-5.5.68-1.el7.x86_64 已安装并且是最新版本
    
  • 服务配置

    • 启动
      systemctl start mariadb
      
    • 设置开机自启动
      systemctl enable mariadb
      
  • 账号初始化

    • 登录

      mysql -u root -p
      
    • root设置密码

      UPDATE user SET password=password('qwe123..') WHERE user='root'; 
      flush privileges;
      
    • 创建用户

      insert into mysql.user(user,host,password) values('xxx','%',password('qwe123..'));# 或更新密码
      UPDATE user SET password=password('qwe123..') WHERE user='xxx'; 
      flush privileges;
      
    • 创建数据库

      CREATE DATABASE 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
      
    • 授权

      grant all privileges on 数据库.* to settle@'%';
      flush privileges;
      
      grant all privileges on 数据库.* to tasker@'127.0.0.1';
      flush privileges;
      

    img

    img

服务器安全组可以进行端口配置

2.2 redis

  • 安装
    yum install redis -y
    
  • 配置
    打开文件vim /etc/redis.conf寻找?requirepass进入编辑状态requirepass qwe123456点击ESC退出编辑状态保存并退出:wq
  • 启动
    • 启动
      systemctl start redis
      systemctl restart redis
      
    • 开机启动
      systemctl enable redis
      

2.3 Python3

  • 安装gcc,用于后续安装Python时编译源码。

    yum install gcc -y
    
  • 安装Python3相关依赖

    yum install zlib zlib-devel -y
    yum install bzip2 bzip2-devel  -y
    yum install ncurses ncurses-devel  -y
    yum install readline readline-devel  -y
    yum install openssl openssl-devel  -y
    yum install xz lzma xz-devel  -y
    yum install sqlite sqlite-devel  -y
    yum install gdbm gdbm-devel  -y
    yum install tk tk-devel  -y
    yum install mysql-devel -y
    yum install python-devel -y
    yum install libffi-devel -y
    
  • 下载Python源码,https://www.python.org/ftp/python/

    cd /data/
    wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
    

    注意:如果没有wget,则先安装 yum install wget

  • 编译安装

    • 解压

      tar -xvf Python-3.9.5.tgz
      
    • 进入目录并编译安装

      cd Python-3.9.5
      ./configure
      make all
      make install
      
    • 测试

      python3 --version/usr/local/bin/python3
      /usr/local/bin/pip3
      /usr/local/bin/pip3.9
      
    • 配置豆瓣源(腾讯云服务器,默认腾讯源)

      pip3.9 config set global.index-url https://pypi.douban.com/simple/
      

2.4 虚拟环境

  • 安装虚拟环境

    pip3.9 install virtualenv
    
  • 创建虚拟环境目录并创建虚拟环境

    mkdir /envs
    virtualenv /envs/nb --python=python3.9
    
  • 安装项目依赖的pip包

    source /envs/nb/bin/activate
    cd /data/www/nb/
    pip install -r requirements.txt
    

2.5 拉取代码和配置

当上述环境准备好之后,接下来需要在线上服务器上做以下步骤:

  • 获取最新代码

  • 安装第三方包

    source /envs/nb/bin/activate # 激活虚拟环境
    pip install -r requirements.txt # 下载gitee上面down下来的代码
    
  • local_settings.py设置线上配置(在虚拟环境中创建本py文件,然后进行项目配置)

    import os
    from pathlib import PathBASE_DIR = Path(__file__).resolve().parent.parent.parentDEBUG = FalseALLOWED_HOSTS = ['*']STATIC_ROOT = os.path.join(BASE_DIR,"allstatic")DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'day06db',  # 数据库名字'USER': 'wangchuan','PASSWORD': 'qwe123..','HOST': '127.0.0.1',  # ip'PORT': 3306,}
    }CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient","CONNECTION_POOL_KWARGS": {"max_connections": 100},"PASSWORD": "qwe123456",}}
    }
    
  • 收集静态文件

    python manage.py  collectstatic
    

2.5 uwsgi

激活虚拟环境并安装uwsgi

source /envs/nb/bin/activate
pip install uwsgi

基于uwsgi运行项目

  • 命令参数

    uwsgi --http :80 --chdir /data/www/xxxxx/ --wsgi-file day06/wsgi.py --master --processes 4 --static-map /static=/data/www/allstatic
    
  • 文件参数

    • 创建 day06_uwsgi.ini

      [uwsgi]
      http = 0.0.0.0:80
      chdir = /data/www/xxxxx/
      wsgi-file = day06/wsgi.py
      processes = 4
      static-map = /static=/data/www/allstaticvirtualenv = /envs/nb/
    • 执行命令

      uwsgi --ini  day06_uwsgi.ini
      

2.6 nginx

利用nginx做反向代理和处理静态文件。

yum install nginx -y

修改nginx.conf配置文件:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;events {worker_connections 1024;
}http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;types_hash_max_size 4096;include             /etc/nginx/mime.types;default_type        application/octet-stream;# Load modular configuration files from the /etc/nginx/conf.d directory.# See http://nginx.org/en/docs/ngx_core_module.html#include# for more information.# include /etc/nginx/conf.d/*.conf;upstream django {server 127.0.0.1:8001;}server {listen       80;listen       [::]:80;server_name  day06.pythonav.com;# Load configuration files for the default server block.# include /etc/nginx/default.d/*.conf;location /static {alias  /data/www/allstatic/;}location / {uwsgi_pass  django;include     uwsgi_params;}}
}

修改uwsgi配置(day06_uwsgi):

[uwsgi]
socket = 127.0.0.1:9000
chdir = /data/www/xxxxx/
wsgi-file = day06/wsgi.py
processes = 4
virtualenv = /envs/video_killer/

接下来就需要启动uwsgi和nginx:

  • nginx

    # 启动
    systemctl start nginx# 开机启动
    systemctl enable nginx
    
  • uwsgi

    uwsgi --ini  day06_uwsgi.ini
    

每次启动都比较麻烦,怎么办?

2.7 shell脚本

2.7.1 reboot.sh

#!/usr/bin/env bashecho -e "\033[34m--------------------wsgi process--------------------\033[0m"ps -ef|grep uwsgi_day06.ini | grep -v grepsleep 0.5echo -e '\n--------------------going to close--------------------'ps -ef |grep uwsgi_day06.ini | grep -v grep | awk '{print $2}' | xargs kill -9sleep 0.5echo -e '\n----------check if the kill action is correct----------'/envs/day06/bin/uwsgi  --ini uwsgi_day06.ini &  >/dev/nullecho -e '\n\033[42;1m----------------------started...----------------------\033[0m'
sleep 1ps -ef |grep uwsgi_day06.ini | grep -v grep
chmod 755 reboot.sh
./reboot.sh

2.7.2 stop.sh

#!/usr/bin/env bashecho -e "\033[34m--------------------wsgi process--------------------\033[0m"ps -ef |grep uwsgi_day06.ini | grep -v grepsleep 0.5echo -e '\n--------------------going to close--------------------'ps -ef |grep uwsgi_day06.ini | grep -v grep | awk '{print $2}' | xargs kill -9sleep 0.5

2.7.3 uwsgi

uwsgi_day06.ini

[uwsgi]
socket = 127.0.0.1:8001
chdir = /data/www/day06/
wsgi-file = day06/wsgi.py
processes = 1
virtualenv = /envs/day06/

2.8 域名和解析

2.8.1 购买域名

img

2.8.2 解析

就是让域名和我们刚才买的服务器绑定,以后通过域名就可以找到那台服务器,不需要再使用IP了。
img

img

img

img

2.9 https

2.9.1 申请证书

2.9.2 下载证书

2.9.3 证书上传

将证书文件上传至服务器,例如:上传至项目目录的ssl文件夹下。

2.9.4 修改nginx配置

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;events {worker_connections  65536;use epoll;
}http {log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile            on;tcp_nopush          on;tcp_nodelay         on;keepalive_timeout   65;gzip on;gzip_http_version 1.1;gzip_buffers  4 32k;gzip_comp_level 9;include             mime.types;default_type        application/octet-stream;upstream django {server 127.0.0.1:8001; # for a web port socket (we'll use this first)}server {listen      80;server_name day06.pythonav.com;rewrite ^(.*) https://$server_name$1 redirect;}server {listen       443 ssl;server_name  day06.pythonav.com;#证书文件ssl_certificate      /data/www/ssl/8372403_day06.pythonav.com.pem;#私钥文件ssl_certificate_key  /data/www/ssl/8372403_day06.pythonav.com.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers  on;location / {uwsgi_pass  django;include     uwsgi_params;}location /static {alias  /data/www/allstatic;}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808687.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

freeRTOS源码解析4--tasks.c 7

4.2.20 空闲任务调用1--prvCheckTasksWaitingTermination 删除所有终止的任务, 释放资源。简单描述就是清空xTasksWaitingTermination列表,释放资源,递减uxCurrentNumberOfTasks和uxDeletedTasksWaitingCleanUp。接口:static void prvCheckTasksWaitingTermination( void )接…

软件工程师课程辅导

Day1 环境搭建下载vscode下载链接:https://pan.baidu.com/s/1Oo1TIrAKmlEuEfdn9EXgLQ?pwd=nkt9配置vscode的python开发环境教程:https://www.runoob.com/python3/python-vscode-setup.html安装Pycharm下载教程:https://blog.csdn.net/qq_44809707/article/details/12250111…

PAIRDISTILL: 用于密集检索的成对相关性蒸馏方法

在当今海量数据时代,有效的信息检索(IR)技术对于从庞大数据集中提取相关信息至关重要。近年来,密集检索技术展现出了相比传统稀疏检索方法更加显著的效果。 现有的方法主要从点式重排序器中蒸馏知识,这些重排序器为文档分配绝对相关性分数,因此在进行比较时面临不一致性的挑战。…

School New Competition WP

试验一下博客园的基础功能,顺便把学校战队招新赛的Wp传一下, alpaca_search: 直接burp爆破把密码搞出来,在burp多抓几次包会在正确的包里发现一个新的cookie名count,count记录了正确的值 ,然后把它改成999再多发几次包,发到正确的那一个后就拿到了flag RCE_ME!!! 题目直…

pytorch环境安装

pytorch环境安装 1.基础安装 首先安装anaconda打开,进入base,输入命令,这里-n后跟的是环境名字,再往后是python版本,不要太高 conda create -n pytorch python=3.8安装的时候有按y的就按y 创建成功后使用下面命令进入创建的环境 conda activate pytorch2.安装需要的库 pip…

[Trick] 格路记数 - 反射容斥

Perface 模拟赛不会被冲烂了。 Problem I 从 \((0,0)\) 到 \((n,m)\) 方案数。 解法: \(C(n+m,m)\)。 Problem II 从 \((0,0)\) 到 \((n,m)\) 方案,但是不能经过 \(y=x+b\) 的直线。 解法: 考虑映射法。 以一条路径第一次碰到直线的位置为起点,之后所有的路线和 \(y=x+b\) …

Burp功能 细解析

情境 第六周的培训甚是有趣, 更加详细的介绍了Burp工具的功能和使用细节. 虽然很有趣, 但是我学得很慢, 练习达到熟练掌握还需要练习. 以下是第五次培训的练习题 以及我的解答. 最后一题手生, 一开始没做出来.1、安装burp,分别在本机上实现全局代理和局部代理,提供设置过程的…

高级语言程序设计第二次作业(102400106刘鑫语)

这个作业属于课程:https://edu.cnblogs.com/campus/fzu/2024C/ 作业要求:https://edu.cnblogs.com/campus/fzu/2024C/homework/13282 学号:102400106 姓名:刘鑫语 程序清单 最初都很顺利 3.1 3.2 3.3 3.4 3.5 3.6 出现了问题但一直没能解决,回宿舍后试着改成c99 依然报错,…

快乐数学4弧度

4 弧度 我们大多数人都不知道为什么圆要有 360 度。在学习高等数学或物理时,我们会记住一个神奇的数字--“圆的大小”,并将自己设置为一个 “圆的360度”。 专家们说:“弧度让数学变得更简单!”但却没有简单的理由(涉及泰勒级数的讨论并不简单)。今天,我们将揭开弧度的真…

序列化器ser.validated_data、ser.initial_data、ser.data

class LoginPwdSerializer(serializers.Serializer):mobile = serializers.CharField(required=True, validators=[RegexValidator(r"\d{11}", message="格式错误")])password = serializers.CharField(required=True)def validate_mobile(self, value):ex…

12-网络安全审计技术原理与应用

12.1 概述 1)概念 :指对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作。 作用:在于建立“事后”安全保障措施,保存网络安全事件及行为信息,为网络安全事件分析提供线索及证据,以便于发现潜在的网络安全威胁行为,开展网络安全风险分析及管理。 …

林史语其十(101-111)【下半更新】

12345鉴于收集素材与发布素材之间有一定延迟,此后林史一章分两次更新 先把存的旧东西发一下 #101故事源于 joke3579 学长博客里一份证明,涉及到求不定积分的 如果你不知道啥是不定积分,你只需要知道它是导数逆运算就行了 学长博客里写的是 :\(A\) 求导后等于 \(B\) HDK:\(…