用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。
当重置云系统时,秘钥已经改变,需要重新配置公钥。

  1. ssh-keygen - 认证密钥生成、管理和转换
  2. ssh-keygen -R "47.112.154.64" // 删除ip

1.安装软件

  1. # 升级apt-get命令
  2. apt-get update
  3. # 升级pip3
  4. pip3 install --upgrade pip3
  5. #install mysql
  6. apt-get install -y mysql-server-5.7
  7. apt-get install -y mysql-client-5.7
  8. # 安装nginx
  9. apt-get install -y nginx-full
  10. # 安装venv python3创建虚拟环境
  11. apt-get install -y python3-venv
  12. # 安装superctl 进程管理工具
  13. apt-get install -y supervisor
  14. # 安装git
  15. apt-get install -y git
  16. # unbutu 安装redis并设为守护进程
  17. apt-get install -y gcc automake autoconf libtool make #安装依赖包
  18. wget http://download.redis.io/releases/redis-5.0.5.tar.gz
  19. tar xzf redis-5.0.5.tar.gz #解压
  20. cd redis-5.0.5
  21. make && make install
  22. #修改配置文件设为守护进程
  23. vim redis.conf
  24. daemonize yes
  25. # 设置远程访问
  26. protected-mode yes
  27. bind 0.0.0.0
  28. #配置完成后重启redis
  29. redis-server redis.conf

mysql配置使用

  • 一般可以直接使用root用户登入mysql或者是查看mysql生成的默认用户,并重新设置密码。
    sudo cat /etc/mysql/debian.cnf
    ubuntu 部署DJANGO server - 图1
  • 进入mysql修改密码
  1. mysql -uusername -ppassword update mysql.user set authentication_string=PASSWORD('Klipc@2019USA2China'),plugin='mysql_native_password' where user='root';
  • 创建UTF-8编码数据库
  1. CREATE DATABASE online_read DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 更改mysql配置
  1. # mysql远程访问
  2. vim /etc/mysql/mysql.conf.d/mysqld.cnf
  3. bind-address = 0.0.0.0 #添加进去
  4. #设置远程访问
  5. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  6. flush privileges;

注意,authentication_string是密码 ,plugin是验证方式,这两个一定要同时改。从mysql5.7开始root的默认验证方式是auth_socket
这种方式只能用系统root用户登录时才可以登录数据库的root用户。所以需要改为mysql_native_password方式,才可以不受系统用户限制。

  • 重启mysql
  1. service mysql restart

2 准备项目

  • 添加账户创建目录将项目copy到指定目录
  1. adduser sites
  2. passwd sites
  3. mkdir /sites
  4. cd /sites
  5. mkdir envs deploy logs
  • 拷贝项目文件;也可以从git拉
  1. scp -r /Users/jiangxiaolong/Desktop/klipc_apis root@47.103.xx.xx:/sites
  • 创建虚拟环境并安装项目所需包
  1. python3 -m venv klipc_apis #创建虚拟环境
  2. pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple #升级pip命令
  3. pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #安装项目依赖包
  1. * 安装gunicornpythonweb服务器遵循WSGI协议.用于启动django项目
  1. pip install gunicorn==19.9.0 -i https:/pypi.tuna.tsinghua.edu.cn/simple
  2. python manage.py migrate #生成表
  1. ## 3. 编辑配置文件
  2. 3.1 配置gunicorn配置文件
  3. `vim /sites/deploy/gunicorn.conf.py`
  4. gunicorn配置文件:
  5. ```plain
  6. #/sites/deploy/gunicorn.conf.py
  7. bind = "127.0.0.1:8877" #运行端口
  8. workers = 5 #开启进程数
  9. TIMEOUT = 300 #超时时间
  10. logfile = "/sites/logs/gunicorn_klipc.log" #日志文件
  11. loglevel = "info" #日志级别
  12. proc_name = "klipc_apis" #项目名称

3.2 supervisor配置文件
vim /sites/deploy/supervisor.conf

  1. #/sites/deploy/supervisor.conf
  2. [program:klipc_apis]
  3. command=/sites/envs/klipc_apis/bin/gunicorn --timeout 300 --log-level=DEBUG klipc.wsgi -c /sites/deploy/gunicorn.conf.py
  4. directory=/sites/klipc_apis/
  5. user=sites
  6. autostart=true
  7. autorestart=true
  8. stdout_logfile=/sites/logs/klipc_apis.log
  9. redirect_stderr=true
  10. environment=DJANGO_READ_DOT_ENV_FILE=/home/sites/config/klipc.env
  11. [program:celerytasks]
  12. command=/sites/envs/klipc_apis/bin/celery worker -A celery_task -l info
  13. directory=/sites/klipc_apis/
  14. user=sites
  15. autostart=true
  16. autorestart=true
  17. stdout_logfile=/sites/logs/celerytasks.log
  18. redirect_stderr=true
  19. environment=DJANGO_READ_DOT_ENV_FILE=/home/sites/config/klipc.env

3.3 nginx配置文件
后端nginx配置文件:
vim /sites/deploy/klipc_apis.conf

  1. # /sites/deploy/klipc_apis.conf
  2. server {
  3. root /sites/klipc_apis;
  4. listen 8080;
  5. charset utf8;
  6. autoindex off;
  7. client_max_body_size 128m;
  8. access_log /sites/logs/nginx_klipc_apis_access.log;
  9. error_log /sites/logs/nginx_klipc_apis_error.log;
  10. location / {
  11. proxy_pass http://127.0.0.1:8877; #反向代理;访问127.0.0.1:8000/index/ 代理到127.0.0.1:8877/index/
  12. include proxy_params;
  13. proxy_connect_timeout 300s;
  14. proxy_read_timeout 300s;
  15. }
  16. location /static/ {
  17. alias /sites/klipc_apis/static/; #alias
  18. }
  19. }

3.4 拉取静态文件

  1. #在项目setting.py中配置目录
  2. STATIC_ROOT = os.path.join(BASE_DIR, "static")
  3. #如果setting.py中配置了STATICFILES_DIRS,需要先注释掉
  4. #STATICFILES_DIRS=(
  5. #os.path.join(BASE_DIR,'static'),
  6. #)
  7. #执行代码拉取静态文件
  8. python manage.py collectstatic

3.5 切换sites目录下文件属组属主为sites用户

  1. cd /
  2. chown -R sites:sites sites

4.建立软链接,启动服务。

4.1 supervisor软链接

  1. #安装supervisor之后默认生成/etc/supervisor/supervisord.conf,如果没有运行以下命令
  2. mkdir /etc/supervisor
  3. echo_supervisord_conf > /etc/supervisor/supervisord.conf

supervisor 调用的 python一定是要python2的。supervisor支持python2,不支持python3

  • 建立supervisor软链接:
    ubuntu 部署DJANGO server - 图2
    cat /etc/supervisor/supervisord.conf #查看supervisor配置文件
    supervisor会默认去加载/etc/supervisor/conf.d/目录下后缀是.conf的配置文件。
  1. #in 建立链接 -s:建立软链接 -f:强制执行
  2. #建立supervisor配置软链接/etc/supervisor/conf.d/klipc_api.conf
  3. ln -s -f /sites/deploy/supervisor.conf /etc/supervisor/conf.d/klipc_api.conf

supervisor常用命令

  1. supervisorctl #启动supervisor交互
  2. restart xxx #开启xxx进程;不写,默认开启全部
  3. stop xxx #停止xxx进程;不写,默认停掉所有。
  4. restart #重新启动
  5. exit #退出
  • 建立nginx软链接
    cat /etc/nginx/nginx.conf #查看nginx配置
    ubuntu 部署DJANGO server - 图3
  1. #去掉 include /etc/nginx/sites-enabled 这行
  2. nginx会/etc/nginx/conf.d/目录下加载后缀带有.conf的配置文件。
  3. 建立该目录下的软链接并指向已经写好的配置文件
  4. ln -s -f /sites/deploy/klipc_apis.conf /etc/nginx/conf.d/klipc_apis.conf

nginx常用命令:

  1. nginx -t
  2. nginx -s reload #重新加载配置
  3. service nginx restart #重启nginx服务