系统:centOS7
过程比较坑,分为几个部分吧:
-
python3的安装
-
uwsgi的安装
-
nginx和uwsgi的配置
-
selinux的配置
一. python3的安装
centOS7默认安装的是python2,直到centOS8,才换成了python3。但是现在大环境都是在用python3,所以我们第一步是要安装python3.
首先说,不要卸载python2了,因为2和3可以并存,卸载2容易出事儿,系统有些东西也是跟2关联的,不是强迫症建议就不要卸载2,直接安装3就行,不影响。
安装相关编译工具
yum -y groupinstall "Development tools"
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
yum install libffi-devel -y
下载并解压安装包
cd 你自己的目录
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar -xvJf Python-3.7.0.tar.xz
编译及安装
mkdir /usr/local/python3 #创建编译安装目录
cd Python-3.7.0
./configure --prefix=/usr/local/python3
make && make install
创建软连接
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
验证一下
python3 -v
二. uWSGI的安装
坑的地方来了。
一般教程都是让你直接pip安装:
pip install uwsgi
但是pip是python2的,你这样安装,uWSGI使用的是python2,不是3
或者让你下载安装:
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-latest
make
这样也不行,因为make的时候,还是使用的python2.
正确的方式是这样:
pip3 install uwsgi
或者
wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-latest
python3 uwsgiconfig.py --build
python3 setup.py install
看不懂的看这里:python3安装uwsgi
三. uWSGI的配置
uWSGI是个服务器,你可以直接作为你的web服务器,但是更常用的是使用nginx+uWSGI
简单点:
touch一个uwsgi.ini文件,文件名你随意
然后写入文件:
[uwsgi]
socket = 127.0.0.1:9090
这是最简单的配置,这里socket是用于跟nginx连接的,这个ini配置还有很多,不再赘述,你调通了自己慢慢研究
然后启动uwsgi
uwsgi --ini uwsgi.ini
启动了你依旧访问不了,因为我们还没有配置nginx
四. nginx的配置
nginx直接说配置怎么搞,其他简单的你们可以自己google
http{
server{
listen 8080;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090;
}
}
}
这里注意,uwsgi_pass的地址一定要跟上面的uwsgi.ini的socket一致!
配置到这里,如果你是新的centOS系统,基本上你在远端访问:http://服务器IP:8080,就会出现502错误了,哈哈哈哈
原因是centOS7预装了selinux,这个东西限制了http的访问
最粗暴的方式,直接修改selinux的配置,disabled它
如果disabled,网上教程一大堆,但是大部分都没有说清楚一件事:
你要重启centOS!对的,也很简单,如果你是root用户,直接reboot(注意看看有没有别人在跑的业务)
重启后,这时候你再访问:http://服务器IP:8080
出现的就是:Internal Server Error
哈哈,正常,因为你没有配置任何python的application,去配置一下就好了