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
。
参考文章