python==3.6
pip==10.0.1
mongodb==3.4.5
git==1.9.0
virtualenv==16.0.0
uwsgi==2.0
nginx==1.10.3
Flask
Flask-RESTful
PyJWT
pymongo
httplib2
pyStrich
qiniu
Pillow
adduser xxxx
vim /etc/sudoers
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org=3.4.5 mongodb-org-server=3.4.5 mongodb-org-shell=3.4.5 mongodb-org-mongos=3.4.5 mongodb-org-tools=3.4.5
sudo systemctl enable mongod
sudo service mongod start
sudo mongo
sudo apt-get install git
git --version
sudo apt-get install nginx
nginx -v
sudo systemctl enable nginx
sudo service nginx start
apt-get install python3-setuptools
wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-8.0.2.tar.gz#md5=3a73c4188f8dbad6a1e6f6d44d117eeb
tar -zxvf pip-8.0.2.tar.gz
cd pip-8.0.2
python3 setup.py build
python3 setup.py install
pip -v
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
sudo python get-pip.py
不同的项目可能会引用各种不同的依赖包,为了避免版本与和应用之间的冲突而造成的“依赖地狱”
Virtualenv 就是我们python 项目的必须品了。VirtualEnv 可以为每个Python应用创建独立的开发环境,使他们互不影响,Virtualenv 能够做到:
- 在没有权限的情况下安装新套件
- 不同应用可以使用不同的套件版本
- 套件升级不影响其他应用
sudo pip install virtualenv
virtualenv --version
mkdir /home/username/var/www
cd /home/username/var/www
virtualenv venv
source venv/bin/activate
调用 activate 指令后命令符前就会出现 (venv) 字样。 可通过 deactivate 退出虚拟环境。
Flask 的实际生产运行环境选择并不多,我们现采用的是 uWSGI。接下来就安装uWSGI吧。
pip install uwsgi
报错找不到python.h,肯定是依赖问题,python.h依赖的包是python-dev 和 build-essential, 我们使用的是python3.6,所以操作如下,解决依赖问题:
deactivate
cd
sudo apt-get install libpython3.6-dev
git clone https://gitee.com/xxxxxx/xxxxx.git
cp -rf kps-api_v3 /home/username/var/www
pip install -r xxx/xxxx/requirements.txt
ps:一定要注意在运行这个安装之前启用虚拟环境,否则会直接安装到全局去的!
我们采用 .ini文件作为配置,在项目目录下创建一个 uwsgi.ini (具体见下文)写好后可以这样执行
vim uwsgi.ini
[uwsgi]
# uwsgi 启动时所使用的地址与端口
socket = 127.0.0.1:5001
# 指向网站目录
chdir = /home/username/var/www/xxx/xxxxx
# python 启动程序文件
wsgi-file = run.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 4
# 线程数
threads = 2
#状态检测地址
stats = 127.0.0.1:9191
Ubuntu 上配置 Nginx 也是很简单,不要去改动默认的 nginx.conf 只需要将
/etc/nginx/sites-available/default
文件替换掉就可以了。
vim nginx.conf
server {
listen 80;
server_name http://xxxx.xxxx.xxx/; #公网地址或者ip
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5001;
uwsgi_param UWSGI_PYHOME /home/username/var/www/venv;
uwsgi_param UWSGI_CHDIR /home/username/var/www/xxx/xxxxx;
uwsgi_param UWSGI_SCRIPT run:app;
}
}
sudo cp -rf /home/kplus/var/www/default /etc/nginx/sites-available
结果···当然是有问题的啦啦啦····
错误信息告诉我们,pymongo 对mongodb数据库账户密码认证失败··为什么嘞,因为我们在上述步骤中既没有恢复数据库数据,也没有给数据库创建用户,让我们先恢复数据库数据。
mongodump
mongorestore -h 127.0.0.1:27017 -d DataBaseName /home/username/var/www/xxx/xxxx/DataBaseName
db.createUser(
{
user: "******",
pwd: "***********",
roles: [ { role: "readWrite", db: "DataBaseName" } ]
}
)
uwsgi uwsgi.ini
http://00.000.00.00/xx/xx/x/ci
http://xxx.xxx.cn/xx/xx/x/ci