• 部署项目的简单笔记


    一 : GitHub


    将项目部署到 GitHub 上,先在GitHub 上创建一个项目,只填写名字。

    在项目路径下运行 git init ,因为在vscode中默认已经对项目进行了该操作已存在 .git
    文件,所以省略此操作。

    然后使用 git add . 将修改的文件放入暂存区,

    使用 git commit -m "修改" 对文件的修改进行说明

    再将项目添加到远程端:git remote add origin https://github.com/Fiy02/manscaped_demo.git 后面的路径为 github 创建项目时自动生成的

    最后将项目推送到远程端:git push -u origin master

    安装python3 :

    进入目录 cd /usr

    下载 Python3.7 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz

    解压 tar -xvzf Python-3.7.1.tgz

    进入解压目录 cd Python-3.7.1/

    建立安装的目录 sudo mkdir -p /usr/local/python3

    编译安装:

    ./configure --prefix=/usr/local/python3 --enable-optimizations

    make

    sudo make install

    安装python3-venv用来创建虚拟环境:

    sudo apt-get update

    sudo apt-get install python3-venv -y

    python3 -m venv my_venv(虚拟环境名称)

    启动虚拟环境:source /my_venv/bin/activate

    退出:deactivate

    部署服务器方面:

    第一种 :直接到github或者gitee上复制项目的地址,将项目拉到服务器中,比如在  /mnt 路径下运行以下命令:

    git clone https://gitee.com/***/*******.git

    第二种:可先在本地使用 scp 将项目传到服务器 /mnt 目录下,例如以下命令为上传某个文件到服务器的 /down_file 目录下

    scp -r 本地路径/rnd_demo root@47...:/mnt/
    
    scp -r D:文件名.txt root@47...:/mnt/uploads/upload-static/static/down_file/

    后端配置 uwsgi 文件

    在/mnt/uwsgi目录下新建文件名,如:my_project.ini

    配置该文件内容: vim my_project.ini 

     1 [uwsgi]
     2 # 开启主进程管理其它进程,关闭相当于关闭所有进程;
     3 master=true
     4 
     5 # 该通信需与nginx中的配置地址一致;
     6 socket=127.0.0.1:5001 7 
     8 # 使用http通信,绕过nginx配置;
     9 #http= :5000
    10 module=app
    11 
    12 # 项目启动文件所在目录,kjcrm_backend是自己的项目目录
    13 chdir=/mnt/kjcrm_backend
    14 
    15 # 启动文件
    16 wsgi-file=/mnt/kjcrm_backend/app.py
    17 
    18 # 个人启动文件中定义的 Flask 实例名称;app = Flask(__name__)
    19 callable=app
    20 
    21 # 进程跟线程
    22 processes=4
    23 threads=2
    24 pidfile=/mnt/uwsgi/pid/kjcrm.pid
    25 daemonize=/mnt/uwsgi/log/kjcrm.log
    26 enable-threads=true
    27 # uwsgi包解析的内部缓存区大小,防止数据报头过大引发错误,默认4k;
    28 buffer-size=65536 
    29 
    30 # 服务停止时自动移除unix Socket 和 Pid 文件;
    31 vacuum = true
    32 # 请求超时时间;
    33 harakiri=600
    34 # 设置缓冲
    35 post-buffering=4096
    36 # 为每个工作进程设置请求数的上限
    37 max-requests =1000
    38 log-maxsize=10240
    39 http-timeout=6000

    在uwsgi目录下启动文件,后面的文件对应创建的文件名

    启动: uwsgi --ini uwsgi.ini 

    重启: uwsgi --reload uwsgi.pid 

    停止: uwsgi --stop uwsgi.pid 

    如:启动: uwsgi --ini my_project.ini  重启  uwsgi --reload /mnt/uwsgi/pid/my_project.pid 

    显示 [uWSGI] getting INI configuration from uwsgi.ini 表明uwsgi运行成功。(mailbox_system.ini为自己定义的文件名)

    杀掉全部 uwsgi ini 进程: pkill -f uwsgi -9 

    查看绑定的端口: netstat -lnp|grep 3342 (uwsgi 端口号)

    可以运行查看 uwsgi 有关的进程 : ps -ef |grep uwsgi ,在右侧可以看到自己创建的 my_project.ini 文件名。没有的说明该文件没运行成功。

    更新服务器上的项目

    在项目所在的文件夹中,拉取项目更新: git fetch origin 

    重置: git reset HEAD --hard 

    合并: git merge origin/master 

    后端更新完重启后端配置的uwsgi文件id: uwsgi --reload /mnt/uwsgi/pid/my_project.pid 

    用来查看服务器是否有代码运行上的报错: tail -n 100 /mnt/uwsgi/log/crossy.log 

    后端配置配置 nginx 文件

    (必做!运行文件)对 /etc/nginx/sites-available/ 下的nginx配置文件 kjcrm.conf (该文件配置nginx的信息)生成软链接在 /etc/nginx/sites-enabled下,文件同名。

    ln -s /etc/nginx/sites-available/kjcrm.conf /etc/nginx/sites-enabled

    在 /etc/nginx/sites-available 下对文件配置 nginx 内容。配置仅作参考,域名与IP需换成自己的。

     1 sites-available/kjcrm.conf
     2 
     3 upstream kjcrm_backend{
     4     server 127.0.0.1:5001;
     5 }
     6 
     7 upstream shifan_kjcrm_backend{
     8     server 127.0.0.1:5002;
     9 }
    10 server {
    11     # the port your site will be served on
    12     keepalive_requests   1000;
    13     server_name shifan.kjcrm.cn;
    14 
    15     charset     utf-8;
    16     client_max_body_size 1024M;
    17     
    18     location / {
    19         proxy_pass http://localhost:3001;
    20         proxy_http_version 1.1;
    21         proxy_set_header Upgrade $http_upgrade;
    22         proxy_set_header Connection 'upgrade';
    23         proxy_set_header Host $host;
    24         proxy_cache_bypass $http_upgrade;
    25     }
    26 location /upload/ {
    27           alias /mnt/uploads/upload-static/;
    28           add_header 'Access-Control-Allow-Credentials' 'true';
    29           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    30           add_header 'Access-Control-Allow-Origin' '*';
    31     }
    32 location /api/ {
    33             uwsgi_pass  shifan_crossy_backend;
    34             include     /etc/nginx/uwsgi_params;
    35     }
    36     listen 80; # managed by Certbot
    37 
    38 }
    39 
    40 
    41 server {
    42    server_name api.kjcrm.cn;
    43    keepalive_requests   1000;
    44    charset     utf-8;
    45     client_max_body_size 1024M;
    46 location /api/ {
    47             uwsgi_pass  crossy_backend;
    48             include     /etc/nginx/uwsgi_params;
    49     }
    50 
    51     listen 80;
    52 }
    53 
    54 server {
    55     # the port your site will be served on
    56     keepalive_requests   1000;
    57     server_name www.kjcrm.cn kjcrm.cn;
    58     
    59     charset     utf-8;
    60     client_max_body_size 1024M;
    61     root /mnt/zhmj-admin-vue/dist;
    62     #index index.html index.htm;
    63 location / {
    64         # root /mnt/saijue-admin-vue/production;
    65     try_files $uri /index.html;
    66     index  index.html index.htm;
    67     }
    68     
    69     location /api/ {
    70             uwsgi_pass  crossy_backend;
    71             include     /etc/nginx/uwsgi_params;
    72     }
    73 location /upload/ {
    74           alias /mnt/uploads/upload-static/;
    75           add_header 'Access-Control-Allow-Credentials' 'true';
    76           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    77           add_header 'Access-Control-Allow-Origin' '*';
    78     }
    79     listen 80;
    80 
    81 }

    配置后测试是否正常: 

    nginx -t

    重启服务:

    service nginx reload

    然后配置 ssl 问题,每个 sever 区块后的 listen 监听端口需为 80。

    运行以下命令生成证书,解决ssl问题:

      certbot --nginx  

    选择要更新的域名,可以选择多个自己配置的域名,用逗号隔开。后续选第二个生成新的证书。同名的可以选择多个放在一个区块。

    成功后会将 listen 端口变为 443。

    如果不是第一次配置 ssl ,那么每个sever区块最后的listen 443 端口需改为80,后面的内容全删掉。最后面带有以下内容也删除,第一次配置时不会有以下内容,端口也不会是443。

    1 server {
    2     if ($host = kjcrm.cn) {
    3     return 301 https://$host$
    4     ....

    参考链接:https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx

    cerbot 报错时的处理:
    先删除:

    sudo apt-get remove certbot

    重新安装:

    sudo snap install --classic certbot
    
    sudo ln -s /snap/bin/certbot /usr/bin/certbot

    重新安装证书:

    sudo certbot --nginx

    最后再重新生成证书:

    certbot --nginx  

    生成后的配置文件:

      1 sites-available/kjcrm.conf
      2 
      3 upstream kjcrm_backend{
      4     server 127.0.0.1:5001;
      5 }
      6 
      7 upstream shifan_kjcrm_backend{
      8     server 127.0.0.1:5002;
      9 }
     10 server {
     11     # the port your site will be served on
     12     keepalive_requests   1000;
     13     server_name shifan.kjcrm.cn;
     14 
     15     charset     utf-8;
     16     client_max_body_size 1024M;
     17     
     18     location / {
     19         proxy_pass http://localhost:3001;
     20         proxy_http_version 1.1;
     21         proxy_set_header Upgrade $http_upgrade;
     22         proxy_set_header Connection 'upgrade';
     23         proxy_set_header Host $host;
     24         proxy_cache_bypass $http_upgrade;
     25     }
     26 location /upload/ {
     27           alias /mnt/uploads/upload-static/;
     28           add_header 'Access-Control-Allow-Credentials' 'true';
     29           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
     30           add_header 'Access-Control-Allow-Origin' '*';
     31     }
     32 location /api/ {
     33             uwsgi_pass  shifan_crossy_backend;
     34             include     /etc/nginx/uwsgi_params;
     35     }
     36     listen 80; # managed by Certbot
     37 
     38 }
     39 
     40 
     41 server {
     42    server_name api.kjcrm.cn;
     43    keepalive_requests   1000;
     44    charset     utf-8;
     45     client_max_body_size 1024M;
     46 location /api/ {
     47             uwsgi_pass  crossy_backend;
     48             include     /etc/nginx/uwsgi_params;
     49     }
     50 
     51     listen 443 ssl; # managed by Certbot
     52     ssl_certificate /etc/letsencrypt/live/api.crossy.cn/fullchain.pem; # managed by Certbot
     53     ssl_certificate_key /etc/letsencrypt/live/api.crossy.cn/privkey.pem; # managed by Certbot
     54     include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
     55     ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
     56 
     57 }
     58 
     59 server {
     60     # the port your site will be served on
     61     keepalive_requests   1000;
     62     server_name www.kjcrm.cn kjcrm.cn;
     63     
     64     charset     utf-8;
     65     client_max_body_size 1024M;
     66     root /mnt/zhmj-admin-vue/dist;
     67     #index index.html index.htm;
     68 location / {
     69         # root /mnt/saijue-admin-vue/production;
     70     try_files $uri /index.html;
     71     index  index.html index.htm;
     72     }
     73     
     74     location /api/ {
     75             uwsgi_pass  crossy_backend;
     76             include     /etc/nginx/uwsgi_params;
     77     }
     78 location /upload/ {
     79           alias /mnt/uploads/upload-static/;
     80           add_header 'Access-Control-Allow-Credentials' 'true';
     81           add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
     82           add_header 'Access-Control-Allow-Origin' '*';
     83     }
     84     listen 443 ssl; # managed by Certbot
     85     ssl_certificate /etc/letsencrypt/live/www.kjcrm.cn/fullchain.pem; # managed by Certbot
     86     ssl_certificate_key /etc/letsencrypt/live/www.kjcrm.cn/privkey.pem; # managed by Certbot
     87     include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
     88     ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
     89 
     90 
     91 }
     92 
     93 
     94 server {
     95     if ($host = kjcrm.cn) {
     96         return 301 https://$host$request_uri;
     97     } # managed by Certbot
     98 
     99 
    100     if ($host = www.kjcrm.cn) {
    101         return 301 https://$host$request_uri;
    102     } # managed by Certbot
    103 
    104 
    105     server_name www.kjcrm.cn kjcrm.cn;
    106 
    107     listen 80;
    108     return 404; # managed by Certbot
    109 
    110 
    111 }

    前端页面的部署:

    对 vue 前端页面的部署关联,nginx中的文件配置,需要 root 指定文件 以及 location / ...的内容:

     1 server {
     2    # the port your site will be served on
     3    keepalive_requests   1000;
     4    server_name app.kjcrm.cn;
     5    
     6    charset     utf-8;
     7    client_max_body_size 1024M;
     8    root /mnt/zhmj-admin-vue/dist;
     9    #index index.html index.htm;
    10   location / {
    11      # root /mnt/saijue-admin-vue/production;
    12       try_files $uri /index.html;
    13       index  index.html index.htm;
    14       }
    15     
    16     location /api/ {
    17        uwsgi_pass  kjcrm_backend;
    18        include     /etc/nginx/uwsgi_params;
    19     }
    20 }
  • 相关阅读:
    IO多路复用
    事件驱动模型
    协程
    进程
    py2与py3的编码问题
    Linux Centos7 网卡无法启动
    监控的法则
    如何优雅的采集activeMQ性能指标
    一分钟性能分析
    beta版 tomcat 应用监控指标
  • 原文地址:https://www.cnblogs.com/liqiongming/p/14583433.html
Copyright © 2020-2023  润新知