首先了解这几个东西的作用
centos7默认安装了 python2.7.5 因为一些命令要用它比如yum,它使用的是python2.7.5。
使用 python -V 命令查看一下是否安装Python。
[root@localhost bin]# python -V
Python 2.7.5
然后使用命令 which python 查看一下Python可执行文件的位置。
[root@localhost bin]# which python
/usr/bin/python
[root@localhost bin]# cd /usr/bin/
[root@localhost bin]# ll py*
lrwxrwxrwx. 1 root root 7 4月 8 2017 python -> python2
lrwxrwxrwx. 1 root root 9 4月 8 2017 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 6月 18 2014 python2.7
python 指向的是python2.7。因为我们要安装python3版本,所以python要指向python3才行。
先yum安装必要的包,用于下载编译python3。
[root@localhost bin]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
安装后防止错误,先做备份:
[root@localhost bin]# mv python python.bak
[root@localhost bin]# ll pytho*
lrwxrwxrwx. 1 root root 9 4月 8 2017 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 6月 18 2014 python2.7
lrwxrwxrwx. 1 root root 7 4月 8 2017 python.bak -> python2
获取安装包。
[root@localhost ~]# wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
解压。
[root@localhost ~]# tar -xvJf Python-3.6.4.tar.xz
切进目录。
[root@localhost ~]# cd Python-3.6.4/
编译,安装。
[root@localhost Python-3.6.4]# ./configure prefix=/usr/local/python3
[root@localhost Python-3.6.4]# make && make install
安装完毕,/usr/local/目录下就会有python3了。
[root@localhost Python-3.6.4]# cd /usr/local/python3/
[root@localhost python3]# ll
总用量 4
drwxr-xr-x 2 root root 4096 3月 21 18:37 bin
drwxr-xr-x 3 root root 23 3月 21 18:37 include
drwxr-xr-x 4 root root 60 3月 21 18:37 lib
drwxr-xr-x 3 root root 16 3月 21 18:37 share
然后我们可以添加软链到执行目录下/usr/bin。
[root@localhost Python-3.6.4]# ln -s /usr/local/python3/bin/python3 /usr/bin/python
同时pip也建立一个软连接。
[root@localhost bin]# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
然后软连接创建完成,查看当前python版本。
[root@localhost python3]# python -V
Python 3.6.4
[root@localhost python3]# python2 -V
Python 2.7.5
[root@localhost python3]# cd /usr/bin/
[root@localhost bin]# ll python*
lrwxrwxrwx 1 root root 30 3月 21 18:40 python -> /usr/local/python3/bin/python3
lrwxrwxrwx. 1 root root 9 4月 8 2017 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 6月 18 2014 python2.7
最后因为执行yum需要python2的版本,所以我们还要修改yum的配置。
[root@localhost bin]# vim /usr/bin/yum
把#!/usr/bin/python 修改为 #!/usr/bin/python2
同理。
[root@localhost bin]# vim /usr/libexec/urlgrabber-ext-down
这样python3版本就安装完成,同时python2也存在。
curl http://uwsgi.it/install | bash -s default /usr/local/uwsgi
[root@localhost src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz
[root@localhost src]# tar zxvf nginx-1.10.2.tar.gz
[root@localhost src]# cd nginx-1.10.2
[root@localhost nginx-1.10.2]# ./configure && make && make install
查找安装路径
whereis nginx
把安装路劲添加到环境变量
vim ~/.bashrc
加上一句上面找到的nginx的路径
export PATH=$PATH:/usr/local/nginx/sbin/
保存并退出
source ~/.bashrc
在执行service nginx start|stop|reload 的时候报错:Failed to reload nginx.service: Unit not found
是因为nginx没有有添加到系统服务,手动手动添加一个即可
详细操作:http://www.zhuhongliang.com/archives/238
/usr/local/nginx/conf/nginx.conf
里面两个服务做了转发test 和blockchain
http://47.110.44.98:9003/ 可以直接访问test 被代理到内部的9001
test监听的9003 转发给内部的9001,blockchain监听的外部80端口转发给内部的8077
下面uwsgi跑起来,编辑配置文件,那里创建都行,我是直接放在flask项目目录下创建uwsgi.ini内容如下:
/home/wwwroot/flask11-10/flask/blockchain.ini
这里的socket就是上面nginx反向代理到内部的端口,如果是uwsgi外网访问则是需要http
先下载flask
[root@localhost flask]# pip install flask
[root@localhost flask]# pwd
/home/wwwroot/flask
尝试直接安装,成功后可直接到配置下一节。
[root@localhost flask]# yum install supervisor
如果有问题
[root@localhost bin]# easy_install supervisor
因为上面的包是安装在py2里面的,所以不能直接跑。
编辑下/usr/bin/supervisord。
#!/usr/bin/python 改成 #!/usr/bin/python2
同理修改这几个命令文件:/usr/bin/echo_supervisord_conf、/usr/bin/supervisorctl
[root@localhost bin]# supervisord -h
至此大概说完,下面开始配置supervisord。
1、创建默认的配置文件。
[root@localhost bin]# echo_supervisord_conf > /etc/supervisord.conf
修改/etc/supervisord.conf文件
直接找到最下面的这个。
[include] # 这里的‘;’注释去掉
;files = relative/directory/*.ini
files = /etc/supervisor/conf.d/*.conf # 这里加入自定义的配置文件文件路径
创建自定义文件配置文件夹
[root@localhost etc]# mkdir -p supervisor/conf.d
[root@localhost etc]# cd supervisor/conf.d
[root@localhost conf.d]# vim uwsgi.conf
; ================================
; uwsgi supervisor
; ================================
[program:uwsgi]
command=/usr/bin/uwsgi --ini /home/wwwroot/flask/uwsgi.ini
directory=/home/wwwroot/flask
user=root
stdout_logfile=/var/log/flask/uwsgi_out.log
stderr_logfile=/var/log/flask/uwsgi_err.log
autostart=true
autorestart=true
startsecs=10
priority=997
都设置完了,下面跑起来吧。
[root@localhost supervisor]# killall supervisord# -c指定配置文件路径,-n可前台运行,方便自己调试,具体自己去看官档
[root@localhost supervisor]# /usr/bin/supervisord -c /etc/supervisord.conf
然后看看跑起来没。
[root@localhost supervisor]# ps -aux | grep supervisord
[root@localhost supervisor]# ps -aux | grep uwsgi
然后客户端可以直接运行会出现命令行调试。
[root@localhost supervisor]# supervisorctl
uwsgi RUNNING pid 16556, uptime 0:26:03
/etc/supervisord.conf 这是我的配置
可以访问http://47.110.44.98:9002/
supervisor管理项目可宕机自动重启服务,可设置开机自启动,批量管理服务
/etc/supervisor/conf.d
/usr/bin/supervisord -c /etc/supervisord.conf 启动supervisord来管理的项目,这里就是test和blockchain
启动多个Flask进程,可以参考
http://www.cnblogs.com/oulala/p/9641715.html