宝塔bt在配置一个python站点的经历:宝塔python环境搭建

为了在学习python,本来想用python的框架django搭建一个个人学习博客,也就是现在看到的这个。但是经历是痛苦的,本地早早建好了一django个简易博客。而环境的配置不是难点,最难的是根据环境配置网站,可以说为了成功搭建这个博客,我整整用三天时间。
这个django博客链接http://python.zhezhejuan.com:8888/,可以看到确实是可以运行,但其实我是非常不满意的,为啥,就凭那尾部的8888,我已经大失所望,因为我找不到办法去掉他。所以你现在看到了一个http://python.zhezhejuan.com这个站点,没错,他是用php做的。对于才学python十多天时间的新手来说,我实在是找不好的办法,只好先放放,先用php弄个简单的博客出来,等自己基础根据扎实在来解决这个难题!

虽然很失败的经理,但是也要记录一下:

用宝塔管理网站项目是现在比较流行的方式,我相信很多人跟我一样,而最新宝塔系统是用python2.7写的,如果我再配置个python写的网站对原先站点有没有影响?可以肯定的告诉你,完全没有,亲测,哈哈

刚开始在网上找相关资料,发现居然没有这方面的,这就尴尬了。只能一部部摸索:
1,首选我觉得应该建立个虚拟环境,用virtualenv来独立管理博客项目:
所以按照virtualenv:

pip install virtualvev  #居然可行,那么宝塔中肯定有pip包的,我没有去看,大家可以pip list看看

2,然后建立独立站点:
宝塔有专门的建立站点功能,我现在先用virtualvenv来建立目录,等下在创建站点的时候关联这个目录,所有网站都在www/wwwroot目录,所以我也这么干

cd /www/wwwroot/
virtualenv --no-site-pacjages --distribute python
source python/bin/activate

3,进入虚拟环境就可以安装自己想要的包了

pip install Django==1.11.8
pip install uwsgi
pip install python2.7

4,所需的包安装好,开始创建django项目

cd python
django-admin startproject blog_jian
cd blog_jian
python manage.py startapp blog

django项目创建好了。我之前想用宝塔直接关联这个项目站点,可是他会给我配置各种php环境,而且nginx的端口问题也在这里尤为明显,当我后面跑的时候,服务器里面的所有网站都无法打开,报django错误。bug太多,来不及记录了,博客毕竟没建立好,可惜了!

下面把本地的项目放到你创建的目录来,运行:

python manage.py runserver 0.0.0.0:8000

你有可能会打开,有可能打不开,我的经历是,端口没有放行,去阿里云后台放行端口,就在安全组那里,找不到就百度。然后在宝塔后台“安全”里面放行端口,你可能还会发现显示“外网不通”,什么原因?我也不知道,都设置对了,就是不能打开端口,你去把服务器,nginx等等,你能想到的都重启下看看。还是不行如我这样,就直接用了8888端口,没错,是宝塔原始端口。

python manage.py runserver 0.0.0.0:8888

打开连接,你会发现网站跑起来了,可是你关闭putty,网站就跟着挂了,这时候就用到uwsgi了,他是什么,去百度,反正就是个服务器,他跑,你网站也会跑,不过据说uwsgi和nginx一起才完美!

5,配置uwsgi

在项目目录下创建个uwsgi.ini文件,复制下面代码:

uwsig使用配置文件启动

[uwsgi]
# 项目目录
chdir=/www/wwwroot/blog_jian/
# 指定项目的application
module=blog_jian.wsgi:application
# 指定sock的文件路径       
socket=/usr/local/nginx2/logs/uwsgi.sock
# 进程个数       
workers=5
pidfile=/usr/local/nginx2/logs/uwsgi.pid
# 指定IP端口       
http=0.0.0.0:8888
# 指定静态文件
static-map=/static=/www/wwwroot/blog_jian/blog/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/usr/local/nginx2/logs/uwsgi.log

上面nginx2是我在服务器里面安装的第二个nginx,原装的nginx在www/server目录里面,为什么要安装两个nginx,一切都是尝试,当我用原装的nginx跑项目的时候,服务器所有网站都跟着挂了,我的想法是这个python不去碰其它网站的配置是不是就不会影响了,所以我又安装一个nginx

好了又回到uwsgi这来,你配置好后就可以运行一下,看能不能跑起来

uwsgi --ini /www/wwwroot/blog_jian/uwsgi.ini

打开网站看看吧,能跑,那么肯定就没问题,遇到端口被占,可以先关nginx

service nginx stop

一个尴尬的事情是,nginx一关,所有网站都要挂了,这是在宝塔安装django的麻烦

6, nginx配置
老实说,这个东西难倒我了,一个pid进程,就让我弄了一天,当你运行uwsgi的时候,上面pid会被创建,一个明显的问题就是跑nginx时报错端口被占用。所以你还要关闭nginx服务

service nginx stop

而前面我已经说过我又在服务器里安装了一个nginx,为了不让项目影响其他网站的运行,思路是nginx安装到其它目录,原始宝塔nginx是安装在www/server里面的,我把新的nginx安装在usr/local文件里:

由于nginx依赖于openssl、pcre和zlib,所以在安装nginx时,需要先安装pcre和zlib(为了方便起见,我把pcre、zlib、nginx的包放到了同一个目录下)。这个是别的教程里说的,我不确定宝塔有没有这项依赖,为了避免麻烦,我就当他没有。
openssl本机已经安装故不做说明
1、安装pcre
从pcre的官网下载tar.gz包,官网地址为:https://sourceforge.NET/projects/pcre/files/pcre/,在这里我下载的是:pcre-8.39.tar.gz

tar -zxvf pcre-8.39.tar.gz  
cd pcre-8.39  
./configure   
make  
make install  

2、安装zlib
从zlib的官网下载tar.gz包,官网地址为:http://zlib.Net/,在这里我下载的是:zlib-1.2.8.tar.gz

tar -xvf zlib-1.2.8.tar.gz   
cd zlib-1.2.8  
./configure   
make  
make install  

3、安装nginx
从nginx的官网下载tar.gz包,官网地址为:http://nginx.org/en/download.html,在这里我下载的是: nginx-1.11.6.tar.gz

tar -zxvf nginx-1.11.6.tar.gz  
cd nginx-1.11.5  
./configure --sbin-path=/usr/local/nginx2/sbin/nginx  --conf-path=/usr/local/nginx2/conf/nginx.conf --pid-path=/usr/local/nginx2/sbin/nginx.pid --with-http_ssl_module --with-pcre=../pcre-8.39 --with-zlib=../zlib-1.2.8  
make  
make install

至此,nginx就安装完毕
4、配置并启动nginx
经过上面的安装步骤和目录设置,nginx的启动程序就是/usr/local/nginx2/sbin/nginx,配置文件是/usr/local/nginx2/conf/nginx.conf,可在配置文件里修改端口、反向代理路径等

server {  
        listen       8888;  #修改端口
location ~* /examples{  
  proxy_pass http://localhost:8888;  #修改反向代理
}  

启动nginx的命令为:

/usr/local/nginx2/sbin/nginx -t   //测试nginx.conf的配置是否正确  
  
/usr/local/nginx2/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  //根据nginx.conf里的配置,启动nginx服务 

7,现在可以配置项目的nginx
在项目目录www/wwwroot/blog_jian创建一个blog.conf目录,并复制下面的代码:

user  www www;
worker_processes  1;

error_log /usr/local/nginx2/logs/error.log;
error_log  /usr/local/nginx2/logs/error.log  notice;
error_log  /usr/local/nginx2/logs/error.log  info;

pid       /usr/local/nginx2/logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /usr/local/nginx2/conf/mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
    listen 8888;
    server_name localhost;
    charset     utf-8;
    access_log      /www/wwwroot/blog_jian/nginx_access.log;
    error_log       /www/wwwroot/blog_jian/nginx_error.log;
    client_max_body_size 75M;


    location /static {
        alias /www/wwwroot/blog_jian/blog/static;
    }

    location / {
        include     /usr/local/nginx2/conf/uwsgi_params;
        uwsgi_pass  127.0.0.1:8888;
    }
}

}

然后关闭nginx和uwsgi,再运行这个blog.conf开启nginx服务

/usr/local/nginx2/sbin/nginx -s stop #关闭nginx

uwsgi --stop uwsgi.pid 关闭uwsgi,如果你运行nginx没有被占用端口,可以不用关
开启nginx:

nginx -c /www/wwwroot/blog_jian/blog.conf

其实还有很多bug,已经过了两天,现在来复盘不够完美,如果有大神指点下万分感谢!毕竟自己就是个菜鸟

标签: 宝塔 django

发表评论:

whatsapp营销