【Vue+DRF 生鲜电商】远程调试(八)

1. ssh 连接远程服务器

服务器终端安装 openssh-server,再使用 xshell 连接服务器:

yum install openssh-server -y

service sshd restart

#xshell连不上,SSH服务端不允许密码验证。
#服务端开启密码验证的方法:

# 把PasswordAuthentication项为yes
vim /etc/ssh/sshd_config

# 重启服务
service sshd restart

xshell 连接不了服务器(公网服务器),可参考第四节。

拷贝代码到服务器

Windows 上找到项目目录,命令行执行 scp 命令,将项目文件上传到远程服务器:

# root:用户名,:/home/hj 为远程服务器路径,回车输入密码
scp -r MxShop root@192.168.131.131:/home/hj

也可以使用其他工具上传,如:winscp

2. 搭建服务器环境

2.1 安装 Python3.6 和 pip

# 提前安装好系统依赖包:
centos: 
    yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++  openssl-devel libffi-devel python-devel mariadb-devel
ubuntu:
   sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev default-libmysqlclient-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev

1. 获取

wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
tar -xzvf Python-3.6.2.tgz -C  /tmp
cd  /tmp/Python-3.6.2/

2. 把Python3.6安装到 /usr/local 目录

./configure --prefix=/usr/local
make
make altinstall

3. 更改/usr/bin/python链接

ln -s /usr/local/bin/python3.6 /usr/bin/python3

安装 pip 和 pipenv

wget https://bootstrap.pypa.io/get-pip.py  --no-check-certificate

sudo python get-pip.py

# 安装 pipenv
pip install pipenv -i https://pypi.douban.com/simple

2.2 安装 MySQL

#1.安装
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-community-server

#2.重启服务
service mysqld restart

#3. 设置bind-ip

    vim /etc/my.cnf
    在 [mysqld]:
        下面加一行
        bind-address = 0.0.0.0

#4.登录mysql
mysql -u root

#5. 设置外部ip可以访问
#mysql中输入命令:
#后面用navicat连接远程服务器mysql的用户名和密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

FLUSH PRIVILEGES;

#6.设置mysql密码
进入mysql:
set password =password('123456');     #密码123456
flush privileges;

2.3 安装 Python 虚拟环境

yum install python-setuptools python-devel
pip install virtualenvwrapper

#编辑.bashrc文件
vim ~/.bashrc

#添加进去
export WORKON_HOME=$HOME/.virtualenvs
source /usr/bin/virtualenvwrapper.sh

#sudo find / -name virtualenvwrapper.sh      查看你的virtualenvwrapper.sh在什么地方

#重新加载.bashrc文件
source ~/.bashrc

#虚拟环境保存的路径
cd ~/.virtualenvs/      (创建的虚拟环境都会保存在这个目录,前面设置的)

#创建指定python版本的虚拟环境方法
mkvirtualenv MxShop --python=python3.6
workon MxShop
#进虚拟环境安装依赖包首先 pip freeze > requirements.txt 将本地的虚拟环境安装包导出来,上传到服务器
pip install -r requirements.txt

#安装mysqlclient出问题

    centos 7:
        yum install python-devel mariadb-devel -y

    ubuntu:
        sudo apt-get install libmysqlclient-dev

    然后:
        pip install mysqlclient

也可以采用 pipenv 管理虚拟环境,不用进行上述操作:

# xshell 连接远程服务器

# 切换到项目目录中
cd /home/hj/Projects/MxShop

# 因为之前在 Windows 上便已经用 pipenv 管理虚拟环境,因此远程服务器上只需 pipenv install 就能安装虚拟环境和依赖包

# 注意:要在项目中与 Pipfile 同级目录执行
pipenv install --skip-lock

# 查看 Python 解释器路径
pipenv --py

2.4 可视化管理数据库

Windows 上使用 navicat 连接远程服务器 MySQL 数据库,创建新的数据库,并将本地数据同步到远程数据库:

3. Pycharm 远程调试代码

目的:

  • Windows 上使用 Pycharm 进行开发,使用环境为远程服务器上 Python 虚拟环境
  • 自动上传代码到远程服务器

这样做的好处就是能够同时利用 Windows 和 Linux 两种环境,充分利用两者的优势(Windows 应用软件丰富,便利,Linux 开发环境可以避开很多坑,接近真实线上环境)

Pycharm ---Tools--Deployment--Configuration

左上角点击 +,选择 SFTP,右侧配置栏 Connection 参数如下:

Type: SFTP
Host: 192.168.131.131
User name: root		# 此处必须是 root,否则配置 Python 解释器时,对 root 目录无权限
Password:# 密码
Root path:/	
Web server URL:http://192.168.131.131

Mappings 映射配置如下:

Local path:F:/pycharm resource/MxShop		# 本地项目目录
Deployment path:/MxShop		# 远程服务器项目相对路径
Web path:/

配置远程 Python 虚拟环境

Pycharm --> settings --> Project MxShp --> Project Interpreter,右侧点击 + ,添加新的 Python 解释器。

解释器类型选择 SSH Interpretr 即远程服务器的 Python 解释器,右侧选择 Existing server configuration,已存在的服务配置 MxShp,选择 Next,进入到具体的配置界面:

Interpreter 配置远程服务器的 Python 解释器(虚拟环境地址),可用 pipenv --py 查看,也可使用输入框后的 文件夹图标选择

Sync folders 为同步目录,选择远程服务器中项目目录,此处应该为 /MxShop,然后勾选 Automatically upload project files to the server 及自动同步代码。

运行支持

Pycharm 右上角,点击 Edit Configurations,左上角 +,添加 Django server

4. 服务器安全组策略配置

Django 服务运行以 8000 端口运行,MySQL 以 3306 端口运行,若项目在公有服务器上运行,还需配置安全组策略,开通这两个端口,以下以阿里云 ECS 服务器为例:

登录阿里云 ---> 控制台 ---> 云服务器 ECS ---> 网络安全 ---> 安全组

配置 Django settings

配置 ALLOWED_HOSTS 为 *,或者服务器 IP,另外将数据库改为远程服务器 MySQL

ALLOWED_HOSTS = ['*']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mxshop',
        'USER': 'root',
        'PASSWORD': 'xxx',
        'HOST': '192.168.131.131',
        'PORT': '3306',
        'OPTIONS': {
            # 这里引擎用innodb(默认myisam)
            # 因为后面第三方登录时,要求引擎为INNODB
            'init_command': 'SET default_storage_engine=INNODB;'
        }
    }
}

至此配置完毕,用 Pycharm 运行项目,访问:http://192.168.131.131:8000

参考文章

centos7 下通过nginx+uwsgi部署django应用

原文地址:https://www.cnblogs.com/midworld/p/13629747.html