一.安装 Python
先直接执行步骤7,如果已经安装过则无需安装
1.安装依赖包
1)首先安装gcc编译器,gcc有些系统版本已经默认安装,通过 gcc --version 查看,没安装的先安装gcc。
yum -y install gcc
2)安装其它依赖包,(注:不要缺少,否则有可能安装python出错,python3.7.0以下的版本可不装 libffi-devel )
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
2.进入个人目录下,下载python3.6
3.解压
tar -xzvf Python-3.6.5.tgz
4.建立一个空文件夹,用于存放python3程序
mkdir /usr/local/python3
5.执行配置文件,编译,编译安装
cd Python-3.6.5 ./configure --prefix=/usr/local/python3 make && make install
安装完成没有提示错误便安装成功了
6.建立软连接
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
7.测试一下python3是否可以用
python3
和 pip3 --version
二.项目迁移
1.将windows下的文件迁移到linux机器上
windows虚拟环境下: pip3 freeze >requirements.txt
cmd进入linux服务器的项目根目录文件夹中
rz 弹窗选择testTool.zip
unzip testToolzip 解压
2.在linux项目根目录,创建虚拟环境
$ python3 -m venv venv #会创建一个不带其他pip包的干净虚拟环境
执行后,会在myproject目录下生成了一个venv目录,内有三个文件夹Include,Lib,bin,一个文件pyvenv.cfg。
3.切换到虚拟环境
$cd venv/bin
$source activate
(venv) python@ubuntu:/myproject$ # (venv)表示该项目处于虚拟环境中
4.进入项目根目录,安装依赖包
pip3 install -r requirements.txt
三.安装 uwsgi
1.项目根目录,虚拟环境安装uwsgi
pip3 install uwsgi
2.配置
在项目的根目录建立了一个uwsgiconfig.ini的文件。除了ini格式的配置,uwsgi还支持json,xml等多种多样的配置格式。这里以ini格式为例
[uwsgi]
;uwsgi服务器的接口,根据情况使用以下配置
;有nginx转发时,使用socket配置
socket=0.0.0.0:5000
;无nginx转发时,使用http配置
;http=0.0.0.0:5000
;指定项目目录为主目录
chdir=/home/hueili/testTool
;如果有虚拟环境,则需要指定虚拟环境目录; 没有则注释掉
home=/home/hueili/testTool/venv
;项目的目录
pythonpath=/home/hueili/testTool
;项目启动脚本的名字
module=testTool.wsgi:application
;真正的脚本的文件名
wsgi-file=/home/hueili/testTool/testTool/wsgi.py
;首先开启一个uwsgi的管理进程,然后由它开启若干个worker子进程,当子进程挂掉的时候还会自动重启
master=true
;进程数
processes=4
;线程数
threads=2
;存放uwsgi进程的pid,便于重启和关闭操作
pidfile=/home/hueili/testTool/uwsgi.pid
post-buffering=30000
;把uwsgi服务器作为后台进程启动,值为日志文件名
daemonize=/home/hueili/testTool/server.log
3.启动,重启,关闭
$uwsgi uwsgiconfig.ini
$uwsgi --reload uwsgi.pid
$uwsgi --stop uwsgi.pid 或者kill -9 进程id
查看uwsgi运行状态
$uwsgi --connect-and-read uwsgi.status //返回json,显示进程和worker的详细状态
4.查看日志
$tail -f server.log
正常展示如下:
如果出现raise RuntimeError("populate() isn't reentrant")
解决:cd /venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py
注释掉 #if version < (1, 3, 13):
# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
5.下面的nginx配置好后访问后,可查看server.log日志
四.配置 Nginx
如果linux机器上已安装,无需再安装。直接配置nginx即可
1.安装命令如下:
cd ~
wget http://nginx.org/download/nginx-1.5.6.tar.gz
tar xf nginx-1.5.6.tar.gz
cd nginx-1.5.6
./configure --prefix=/usr/local/nginx-1.5.6 --with-http_stub_status_module --with-http_gzip_static_module
make && make install
2.Nginx 配置
找到nginx的安装目录(如:/usr/local/nginx/),打开conf/nginx.conf文件,修改server配置:
#add by hueili
server {
listen 7000;
server_name _;
root /home/hueili;
location / {
try_files $uri $uri/ /index.html;
}
location ^~ /e_commerce { #后端配置
rewrite ^/e_commerce/(.*) /$1 break;
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000; #必须和uwsgi中的设置一致
uwsgi_param UWSGI_SCRIPT ec_testTool.wsgi; #入口文件,即wsgi.py相对于项目根目录的位置,“.”相当于一层目录
uwsgi_param UWSGI_CHDIR /home/hueili/ec_testTool; #项目根目录
index index.html index.htm;
client_max_body_size 35m;
}
location ^~ /web { #前端配置
alias /home/hueili/testtool_m/dist;
index index.html;
}
location ~* ^.+.(css|js|ico|gif|jpg|jpeg|png|woff|ttf)$ { #前端配置
root /home/hueili/testtool_m/dist;
expire 7d;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
设置完成后,在终端运行:
uwsgi --ini /home/hueili/testTool/uwsgiconfig.ini &
切到root权限运行:
/usr/local/nginx/sbin/nginx -s reload
如果不生效 ,ps -ef|grep nginx查看进程,kill进程后执行以下命令
cd /usr/local/nginx/sbin
./nginx -c /usr/local/nginx/conf/nginx.conf
6.windows浏览器访问linux的servername:7000/web/ 可访问前端项目
windows浏览器访问linux的servername:7000/e_commerce/ 可访问后端项目
nginx问题排查:查看nginx的error.log日志