用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。
当重置云系统时,秘钥已经改变,需要重新配置公钥。
ssh-keygen - 认证密钥生成、管理和转换
ssh-keygen -R "47.112.154.64" // 删除ip
1.安装软件
# 升级apt-get命令
apt-get update
# 升级pip3
pip3 install --upgrade pip3
#install mysql
apt-get install -y mysql-server-5.7
apt-get install -y mysql-client-5.7
# 安装nginx
apt-get install -y nginx-full
# 安装venv python3创建虚拟环境
apt-get install -y python3-venv
# 安装superctl 进程管理工具
apt-get install -y supervisor
# 安装git
apt-get install -y git
# unbutu 安装redis并设为守护进程
apt-get install -y gcc automake autoconf libtool make #安装依赖包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz #解压
cd redis-5.0.5
make && make install
#修改配置文件设为守护进程
vim redis.conf
daemonize yes
# 设置远程访问
protected-mode yes
bind 0.0.0.0
#配置完成后重启redis
redis-server redis.conf
mysql配置使用
- 一般可以直接使用root用户登入mysql或者是查看mysql生成的默认用户,并重新设置密码。
sudo cat /etc/mysql/debian.cnf
- 进入mysql修改密码
mysql -uusername -ppassword update mysql.user set authentication_string=PASSWORD('Klipc@2019USA2China'),plugin='mysql_native_password' where user='root';
- 创建UTF-8编码数据库
CREATE DATABASE online_read DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
- 更改mysql配置
# mysql远程访问
vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0 #添加进去
#设置远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
注意,authentication_string是密码 ,plugin是验证方式,这两个一定要同时改。从mysql5.7开始root的默认验证方式是auth_socket
这种方式只能用系统root用户登录时才可以登录数据库的root用户。所以需要改为mysql_native_password方式,才可以不受系统用户限制。
- 重启mysql
service mysql restart
2 准备项目
- 添加账户创建目录将项目copy到指定目录
adduser sites
passwd sites
mkdir /sites
cd /sites
mkdir envs deploy logs
- 拷贝项目文件;也可以从git拉
scp -r /Users/jiangxiaolong/Desktop/klipc_apis root@47.103.xx.xx:/sites
- 创建虚拟环境并安装项目所需包
python3 -m venv klipc_apis #创建虚拟环境
pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple #升级pip命令
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #安装项目依赖包
* 安装gunicorn;python的web服务器遵循WSGI协议.用于启动django项目
pip install gunicorn==19.9.0 -i https:/pypi.tuna.tsinghua.edu.cn/simple
python manage.py migrate #生成表
## 3. 编辑配置文件
3.1 配置gunicorn配置文件
`vim /sites/deploy/gunicorn.conf.py`
gunicorn配置文件:
```plain
#/sites/deploy/gunicorn.conf.py
bind = "127.0.0.1:8877" #运行端口
workers = 5 #开启进程数
TIMEOUT = 300 #超时时间
logfile = "/sites/logs/gunicorn_klipc.log" #日志文件
loglevel = "info" #日志级别
proc_name = "klipc_apis" #项目名称
3.2 supervisor配置文件vim /sites/deploy/supervisor.conf
#/sites/deploy/supervisor.conf
[program:klipc_apis]
command=/sites/envs/klipc_apis/bin/gunicorn --timeout 300 --log-level=DEBUG klipc.wsgi -c /sites/deploy/gunicorn.conf.py
directory=/sites/klipc_apis/
user=sites
autostart=true
autorestart=true
stdout_logfile=/sites/logs/klipc_apis.log
redirect_stderr=true
environment=DJANGO_READ_DOT_ENV_FILE=/home/sites/config/klipc.env
[program:celerytasks]
command=/sites/envs/klipc_apis/bin/celery worker -A celery_task -l info
directory=/sites/klipc_apis/
user=sites
autostart=true
autorestart=true
stdout_logfile=/sites/logs/celerytasks.log
redirect_stderr=true
environment=DJANGO_READ_DOT_ENV_FILE=/home/sites/config/klipc.env
3.3 nginx配置文件
后端nginx配置文件:vim /sites/deploy/klipc_apis.conf
# /sites/deploy/klipc_apis.conf
server {
root /sites/klipc_apis;
listen 8080;
charset utf8;
autoindex off;
client_max_body_size 128m;
access_log /sites/logs/nginx_klipc_apis_access.log;
error_log /sites/logs/nginx_klipc_apis_error.log;
location / {
proxy_pass http://127.0.0.1:8877; #反向代理;访问127.0.0.1:8000/index/ 代理到127.0.0.1:8877/index/
include proxy_params;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
}
location /static/ {
alias /sites/klipc_apis/static/; #alias
}
}
3.4 拉取静态文件
#在项目setting.py中配置目录
STATIC_ROOT = os.path.join(BASE_DIR, "static")
#如果setting.py中配置了STATICFILES_DIRS,需要先注释掉
#STATICFILES_DIRS=(
#os.path.join(BASE_DIR,'static'),
#)
#执行代码拉取静态文件
python manage.py collectstatic
3.5 切换sites目录下文件属组属主为sites用户
cd /
chown -R sites:sites sites
4.建立软链接,启动服务。
4.1 supervisor软链接
#安装supervisor之后默认生成/etc/supervisor/supervisord.conf,如果没有运行以下命令
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
supervisor 调用的 python一定是要python2的。supervisor支持python2,不支持python3
- 建立supervisor软链接:
cat /etc/supervisor/supervisord.conf #查看supervisor配置文件
supervisor会默认去加载/etc/supervisor/conf.d/目录下后缀是.conf的配置文件。
#in 建立链接 -s:建立软链接 -f:强制执行
#建立supervisor配置软链接/etc/supervisor/conf.d/klipc_api.conf
ln -s -f /sites/deploy/supervisor.conf /etc/supervisor/conf.d/klipc_api.conf
supervisor常用命令
supervisorctl #启动supervisor交互
restart xxx #开启xxx进程;不写,默认开启全部
stop xxx #停止xxx进程;不写,默认停掉所有。
restart #重新启动
exit #退出
- 建立nginx软链接
cat /etc/nginx/nginx.conf #查看nginx配置
#去掉 include /etc/nginx/sites-enabled 这行
nginx会/etc/nginx/conf.d/目录下加载后缀带有.conf的配置文件。
建立该目录下的软链接并指向已经写好的配置文件
ln -s -f /sites/deploy/klipc_apis.conf /etc/nginx/conf.d/klipc_apis.conf
nginx常用命令:
nginx -t
nginx -s reload #重新加载配置
service nginx restart #重启nginx服务