python语言网站_部署基于python语言的WEB发布环境

news/2024/5/10 3:09:57/文章来源:https://blog.csdn.net/weixin_39832829/article/details/110112971

一、部署说明

1、python语言介绍

2、实验环境

实验机器:Vmware虚拟机 8核10G

网卡:桥接模式

系统:centos7.5

防火墙:关闭

Selinux:关闭

网段:192.168.10.0/25

WEB01:192.168.10.42

二、部署流程

Centos7.5 + Nginx + python + Django + uwsgi + mysql来部署网站(服务)。

1、部署Nginx

$ wget http://nginx.org/download/nginx-1.15.5.tar.gz -P /usr/src # 下载nginx

$ cd /usr/src

$tar xvf nginx-1.15.5.tar.gz

$ cd nginx-1.15.5$yum -y install gcc# nginx是c写的

$yum -y install pcre-devel # url重写用到的包

$yum -y install zlib zlib-devel # 解压缩用到的包

# 配置安装环境

$ ./configure --prefix=/usr/local/nginx

# 编译源码生成可执行程序 依赖gcc

$make -j4

# 安装程序

$make install# 启动nginx

$/usr/local/nginx/sbin/nginx

# 访问nginx首页

$ elinks http://192.168.10.42 -dump

# 当前系统监听tcp端口的进程

$ netstat-ntpl

# 删除不再需要的源码

$rm -rf nginx-1.15.5

2、Mysql安装部署

Mysql是一个关系型数据库,由瑞典的AB公司开发,后卖给oracle公司,目前分为商业版和社区版。

现在主要是使用两大Myql版本:mysql5和mysql8。目前大多数公司使用5版本,因此在这里使用5.7的最新版本。

# 1.安装依赖包

$yum -y install ncurses-devel gcc-* bzip2-*bison

#2.升级cmake工具

# 软件获取:https://cmake.org/download

$ wget https://cmake.org/files/v3.13/cmake-3.13.0-rc2.tar.gz

$ tar xf cmake-3.13.0-rc2.tar.gz # 解压

$ ./configure # 配置

$make -j4 # 多核编译减少等待时间

$make install# 安装

# 检查是否安装完成

$ cmake--version

#3. 升级boost库文件

# boost库获取:https://www.boost.org

# 由于这里是安装5.7的mysql,因此下载的是boost_1_59_0.tar.bz2

$tar xf boost_1_59_0.tar.bz2 # 解压

$mv boost_1_59_0 /usr/local/boost

在上面部署准备完成后,开始执行mysql安装

# 4.安装mysql

# 添加用户与组

$ useradd-s /sbin/nologin -r mysql

$mkdir -pv /usr/local/mysql/data

# 软件获取:https://www.oracle.com=>下载=>myql=>社区版本,此处下载mysql-5.7.24.tar.gz

# wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

$tar xf mysql-5.7.24.tar.gz # mysql解压

# 用cmake配置

# 如果配置失败要重新配置,删除CMakeCache.txt文件即可

$ cmake . \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data/\-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \-DWITH_INNBASE_STORAGE_EGNINE=1\-DWITH_MYISAM_STORAGE_ENGINE=1\-DENABLED_LOCAL_INFILE=1\-DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf-8 -DDEFAULT_COLLATION=utf8_general_ci \-DWITH_DEBUG=0\-DWITH_EMBEDDED_SERVER=1\-DDOWNLOAD_BOOST=1 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost

# 解释

$ cmake . \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ # 指定安装路径-DMYSQL_DATADIR=/usr/local/mysql/data/\ # 指定数据目录-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ # 指定sock文件路径-DWITH_INNBASE_STORAGE_EGNINE=1\ # 安装Innodb存储引擎-DWITH_MYISAM_STORAGE_ENGINE=1\ # 安装myisam存储引擎-DENABLED_LOCAL_INFILE=1\ # 运行使用Load data命令从本地导入数据-DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf-8 -DDEFAULT_COLLATION=utf8_general_ci \ # 安装所有字符集、默认字符集utf-8、检验字符-DWITH_DEBUG=0\ # 关闭debug-DWITH_EMBEDDED_SERVER=1\ # 生成一个libmysqld.a(.so)的库,这个库同时集成了mysql服务与客户端API-DDOWNLOAD_BOOST=1 -DENABLE_DOWNLOADS=1 -DWITH_BOOST=/usr/local/boost # 运行boost 允许下载boost库文件

# 编译

$make -j4

# 安装

$make install#5.启动测试

$cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

$chmod 755 /etc/init.d/mysql # 赋权限

$ useradd-s /sbin/nologin -r mysql # 添加用户

$chown mysql:mysql /usr/local/mysql/ -R # 修改目录权属

# 建立链接

$ln -sf /usr/local/mysql/bin/*/usr/bin/

$ ln -sf /usr/local/mysql/lib/* /usr/lib/

$ ln -sf /usr/local/mysql/libexec/* /usr/local/libexec

$ ln -sf /usr/local/mysql/share/man/man1/* /usr/share/man/man1

$ ln -sf /usr/local/mysql/share/man/man8/* /usr/share/man/man8

$ ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock

# 修改配置文件 /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql # mysql软件在哪

datadir=/usr/local/mysql/data # mysql的数据在哪

socket=/usr/local/mysql/mysql.sock

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysql.log

pid-file=/var/run/mysql.pid

# 初始化数据库

$ /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysqld/data/

# 注意:初始化后会得到一个临时密码

# 启动数据库

$ /etc/init.d/mysql start

$ lsof -i :3306 # 查看端口情况

# 修改密码

$ mysql_secure_installation # 要使用刚刚得到的临时密码

# 登录数据库

$ mysql -uroot -pabc123

3、python安装

# 下载python包

$wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz

# python安装

$tar xf python-3.7.1.tar.xz

$ cd Python-3.7.1$yum -y install gcc-* openssl-* libffi-devel sqlite-devel

$ ./configure --prefix=/usr/local/python3--enable-optimizations --with-openssl=/usr/bin/oponssl # --enable-optimizations是包优化参数

$make -j4 # 由于有加配置优化,这个步骤会很久

$make install# 建立软链

$ln -s /usr/local/python3/bin/python3 /usr/bin/python3

python的默认安装路径:/usr/local/lib/python3.7

安装测试:

[root@web01 Python-3.7.1]# python3

Python3.7.1 (default, Oct 27 2018, 22:51:15)

[GCC4.8.5 20150623 (Red Hat 4.8.5-28)] on linux

Type"help", "copyright", "credits" or "license" for moreinformation.>>>

>>> exit();

当我们从Python官方网站下载并安装好Python 3.7后,我们就直接获得一个官方版本的解释 :CPython。

4、升级pip

pip是python包管理工具,该工具提供对python包的查找、下载、安装、卸载功能。由于我们下载了最新的python,因此需要更新pip。

$ ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

$ pip3install --upgrade pip

如果出现报错:pip is configured with locations that require TLS/SSL,however the ssl module in Python is not available.

需要修改 ~/Python-3.7.1/Modules/Setup文件,将注释去除。

211 SSL=/usr/local/ssl212_ssl _ssl.c \213 -DUSE_SSL -l$(SSL)/include -l$(SSL)/include/openssl \214 -L$(SSL)/lib -lssl -lcrypto

然后重新执行make && make install。

5、安装python虚拟环境

virtualenv 是一个创建隔绝的Python环境的工具。

virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用 Python 工程所需的包。

[root@web01 ~]# pip3 install virtualenv

6、使用虚拟环境及安装django

[root@web01 ~]# virtualenv web01 # 创建环境

[root@web01~]# source web01/bin/activate # 环境生效

# 前面带有(web01)说明在环境中

(web01) [root@web01~]# pip3 installdjango

# 用django新建一个项目

(web01) [root@web01~]#django-admin.py startproject myweb

# django启动

(web01) [root@web01~]#python3 manage.py runserver 192.168.10.42:8000# 修改ALLOWED_HOSTS

(web01) [root@web01~]# vim myweb/settings.py

ALLOWED_HOSTS= ['*']

此时在网站上可以看到django初始页面:

1311506-20190317184021435-1631633208.png

三、发布WEB

1、业务逻辑图

1311506-20190317224245751-1236068005.png

2、安装uwsgi

uwsgi是服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回。

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

nginx 和 uWSGI交互就必须使用同一个协议,而上面说了uwsgi支持fastcgi、uwsgi、http协议,这些都是nginx支持的协议,只要大家沟通好使用哪个协议,就可以正常运行了。

[root@web01 ~]# pip3 installuwsgi

# 运行uwsgi 报错:[uwsgi: command not found] 解决方案:建立软链接

[root@web01~]# ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi

(1)编辑uwsgi配置文件

[root@web01 ~]# mkdir /etc/uwsgi

[root@web01~]# vim /etc/uwsgi/uwsgi.ini

[uwsgi]

chdir=/home/huangqs/EduCRM

module=EduCRM.wsgi:application

socket=127.0.0.1:7070wsgi-file=EduCRM/wsgi.py

master=true //主进程

reload-mercy=10processes=4threads=2vacuum=true //退出、重启时清理文件

max-requests=1000limit-as=512pidfile=/var/run/uwsgi7070.pid

daemonize=/var/log/uwsgi7070.log

home=/home/huangqs/educrm_env

(2)启动uwsgi

[root@web01 ~]#uwsgi --ini /etc/uwsgi/uwsgi.ini

(3)关闭uwsgi

[root@web01 ~]#cat /var/run/uwsgi7070.pid

101446[root@web01 ~]#kill -9 101446

3、uwsgi服务脚本管理

(1)定制uwsgi管理脚本

vim /etc/init.d/uwsgi ,init脚本内容如下所示:

#! /bin/sh

DESC="uwsgi daemon"NAME=uwsgi

DAEMON=/usr/bin/uwsgi #指向uwsgi的命令路径

CONFFILE=/etc/uwsgi/$NAME.ini #uwsgi.ini配置文件路径

PIDFILE=/var/run/${NAME}7070.pid #pid文件路径

SCRIPTNAME=/etc/init.d/$NAME #启动脚本路径

FIFOFILE=/tmp/uwsgififo

set-e

[-x "$DAEMON" ] || exit 0do_start() {if [ ! -f $PIDFILE];then$DAEMON $CONFIGFILE || echo -n “uwsgi running”elseecho"The PID is exist..."fi

}

do_stop() {if [ -f $PIDFILE];then$DAEMON --stop $PIDFILE || echo -n "uwsgi not running"rm-f $PIDFILEecho"$DAEMON STOPED."

elseecho"The $PIDFILE doesn't found."fi

}

do_reload() {if [ -p $FIFOFILE];then

echo w> $FIFOFILE

else

$DAEMON --touch-workers-reload $PIDFILE || echo -n "uwsgi can't reload"fi

}

do_status() {

ps aux|grep $DAEMON}

case"$1" instatus)

echo-en "Status $NAME: \n"do_status

;;

start)

echo-en "Starting $NAME: \n"do_start

;;

stop)

echo-en "Stopping $NAME: \n"do_stop

;;

reload|graceful)

echo-en "Reloading $NAME: \n"do_reload

;;*)

echo"Usage: $SCRIPTNAME {start|stop|reload}" >&2exit3;;

esac

exit0

(2)脚本配置和使用

#授权

[root@home-ct75211 html]#chmod 755 /etc/init.d/uwsgi

#关闭

[root@home-ct75211 html]#/etc/init.d/uwsgi stop

Stopping uwsgi:/usr/local/bin/uwsgi STOPED.#启动

[root@home-ct75211 html]#/etc/init.d/uwsgi start

Starting uwsgi:

[uWSGI] getting INI configuration from/etc/uwsgi/uwsgi.ini#查看

[root@home-ct75211 html]#netstat -ntpl

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp0 0 127.0.0.1:21190 0.0.0.0:* LISTEN 26572/uwsgi

tcp0 0 0.0.0.0:80 0.0.0.0:* LISTEN 26560/nginx: master

tcp0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1081/sshd

tcp0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1380/master

tcp60 0 :::3306 :::* LISTEN 2425/mysqld

tcp60 0 :::22 :::* LISTEN 1081/sshd

tcp60 0 ::1:25 :::* LISTEN 1380/master

(3)设置开机启动

$ chkconfig --add /etc/init.d/uwsgi

#'service uwsgi does not support chkconfig'如果出现了这样的报错,是因为添加脚本用service启动,必须要脚本里面包含这2行:

# chkconfig:- 85 15# description: nginx is a World Wide Web server. It is used to serve

$ cd/etc/init.d

$ chkconfig--level 2345uwsgi on

$ chkconfig--list

Note: This output shows SysV services only and does not include native

systemd services. SysV configuration data might be overridden by native

systemd configuration.

If you want to list systemd services use'systemctl list-unit-files'.

To see services enabled on particular target use'systemctl list-dependencies [target]'.

jenkins0:off 1:off 2:on 3:on 4:on 5:on 6:off

jexec0:off 1:on 2:on 3:on 4:on 5:on 6:off

netconsole0:off 1:off 2:off 3:off 4:off 5:off 6:off

network0:off 1:off 2:on 3:on 4:on 5:on 6:off

uwsgi0:off 1:off 2:on 3:on 4:on 5:on 6:off

4、nginx服务配置

nginx服务网站页面目录默认在/root/myweb目录下,但是/root目录权限不足,需要将应用目录换地方:

$ ls -ld /root/dr-xr-x--- . 10 root root 4096 10月 28 07:55 /root/

$ mv /root/myweb /usr/local/nginx/html

修改默认配置文件:/usr/local/nginx/conf/nginx.conf

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout65;

server {

listen8000;

server_name localhost;

location/{

include uwsgi_params;

uwsgi_pass127.0.0.1:7070; // 必须与uwsgi配置一致

uwsgi_param UWSGI_CHDIR/home/huangqs/EduCRM; // 项目根目录

uwsgi_param UWSGI_SCRIPT EduCRM.EduCRM.wsgi; // 入口文件,即wsgi.py相对项目根目录的位置

index index.html index.htm;

client_max_body_size 35m;

}

location/static {

alias/home/huangqs/EduCRM/statics;

}

}

}

四、测试WEB

重启uwsgi和启动nginx:

$ /etc/init.d/uwsgi stop

$ /etc/init.d/uwsgi start

$ netstat -ntpl # 查看服务状态

$ /usr/local/nginx/sbin/nginx # 启动nginx

访问查看页面:

1311506-20190318210117285-533767962.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_766691.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度快照 xilinx fpga权威设计指南_快照在SEO优化中扮演什么角色?

Seo 优化会经常听到“快照”这个词,比如在交换链接时,你会听到快照的更新速度。快照在SEO优化中扮演着一个什么样的角色?大多数人都不知道。Snapshot 是搜索引擎存储在服务器中的备份网页,也是搜索引擎对网站的认知属性。在网站进…

python爬虫真假网址,python爬取福利网站图片完整代码,懂得人都懂

网址需要自己替换懂的人都懂512*2,主要学习简单的爬虫,别乱用,否则后果自负![Python] 纯文本查看 复制代码import requests,bs4,re,os,threadingclass MeiNvTu: def __init__(self): self.url_mainhttps://网址保密,不能乱发哈哈/pw/ self.urlf{self.url_main}thread.php?fid …

怎样把本地html传到网上,如何制作自己的网页链接?教你怎么把自己制作的网站发布到网上?...

如何制作自己的网页链接?教你怎么把自己制作的网站发布到网上?下面就来一起看看吧!确定网页架构。要确定我们要做的网页内容,必须确定一个框架形式。一般比较流行,大部分网页都是。①网站页眉网站导航栏内容版块。一般新浪的网页和部分浏览器都采用这种…

做10个网站用多大的服务器,【教你搭建服务器系列】(10)利用Docsify搭建个人笔记网站...

写文档的工具非常多,但是作为程序员,大部人还是偏爱Markdown的,有时需要写一份开发文档,以供自己或者他人查看,那如何把 Markdown 文件转换成文档呢?docsify 就可以做到了,docsify 可以直接加载…

更换php版本_PHP与SEO,应用curl及正则获取搜狗搜索相关关键词

PHP是世界上最好的语言,来吧,入坑吧,我们一起来拍(pai)黄(huang)片(pian),Sorry,手抖,打错字了,当然是学习简写的,php啦!PHP即“超文本预处理器”,是一种通用…

php开源代码推荐,非常好用的源代码网站推荐,用这些开源代码就够了

原标题:非常好用的源代码网站推荐,用这些开源代码就够了作为一个开发人员写代码是工作的日常,在这个万物互联的时代,有问题马上百度、谷歌、知乎一下等等,代码也不例外,借鉴别人的代码同样可以事半功倍。下…

服务器运行环境查看,如何查看linux环境变量_网站服务器运行维护

linux如何查看进程端口是多少_网站服务器运行维护linux查看进程端口的方法是:1、首先执行命令【ps -ef | grep 进程名】,查看进程pid;2、然后执行命令【netstat -nap | grep 进程pid】,通过pid查看进程端口。首先执行如下命令&…

div 隐藏_隐藏文本与隐藏链接对SEO的影响!

对于SEO行业而言,隐藏文本(HiddentText)是一个古老而又久远的话题,它早期主要用于提高页面对特定关键词的相关性,由于这部分内容对用户不可见,常常被算法识别为作弊行为。 但即便如此,仍有众多用户对其乐此不疲&#…

如何抓取一个网站的分页_如何让网站更符合搜索引擎的抓取规则 - 百度蜘蛛池博客...

原出处:蜘蛛池博客原文链接:如何让网站更符合搜索引擎的抓取规则? - 蜘蛛池博客如果一个网站能够经常被搜索引擎抓取,就表示搜索引擎对这个网站非常信任,从而赋予网站的权重也就非常高,关键词排名、网站流量…

php html5 cms,建站教程|CMS教程|PHP教程|html5教程 - 站长图库

2021-03-1147有时候项目中需要进行多个字段搜索就可以用到此方法在Laravel中的可以同时使用多个where,所以我们可以每个字段分配一个where()然后在每个where()中去闭包判断$username ;2021-03-1187下面给大家介绍thinkphp withCredentials 跨域问题解决思路,希望对…

登陆系统 怎么做_中小企业网站推广怎么做 - 神马快排系统

原出处:超级排名系统原文链接:www.chaojipaiming.com 中小企业网站推广怎么做? - 超级排名系统首先,我们应该要知道,推广网站并不是我们的最终目的,它只是工具和手段,企业做网站推广的唯一目的&…

动态网站的技术路线_世界能源技术展望2020—钢铁技术路线图(旗舰报告,强烈推荐,执行摘要翻译,文末含全文下载地址)...

国际能源署发布《世界能源技术展望2020—钢铁技术路线图》(旗舰报告,强烈推荐,执行摘要翻译,文末含全文下载地址)ERR能研微讯(左)丨ERR能研君(右)阅前须知1.网站或订阅号转载文章需隔天(发布时间24小时以后),且须明确注明作者与来…

动态网站的技术路线_动态IP与静态IP

IP是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。动态IP需要在连接网络时自动获取IP地址以供用户正常上网,而静态IP是网络服务提供商在装机时分配给用户的IP地址,可以直接连接上…

linux服务器无法识别u盘,linux无法识别U盘_网站服务器运行维护

win7只能上qq不能上网怎么解决_网站服务器运行维护win7只能上qq不能上网解决方法:1、在开始菜单中打开运行,然后运行cmd,输入netsh winsock reset命令,然后按提示重启电脑。2、把DNS设置为自动。1、插入u盘,执行如下命…

msdn itellyou_知名微软系统镜像网站itellyou迎来全新改版

相信许多热爱装机或者对于电脑系统有过一定研究装过系统的小伙伴们都知道,有一个大家都熟知的非常良心干净的微软系统镜像网站,那就是itellyou。Itellyou这个网站一直以来都致力于提供微软官方纯净原版系统,从Windows XP一直到最新的Windows …

体育直播网站源码_正在直播!火箭主场迎战雷霆,某知名体育网站进行比分直播...

北京时间10月29号,NBA常规赛继续进行。今天,火箭主场迎来一位特别的“客人”,他就是克里斯-保罗。在今年夏天,火箭将保罗交易至雷霆,威少加盟火箭与哈登重聚。这笔交易对于保罗来说,里面掺杂着爱恨情仇。当…

大型网站seo方案_一份合格的seo网站优化方案需要做哪些内容?

制定一份完美的SEO优化方案,企业网站才可以发挥出更好的作用。那么,该怎么制定一份合格的seo网站优化方案?需要做哪些内容呢?第一、网站定位要清晰:网站定位是什么?也就是说,您需要服务的是哪些对象,客户群是谁?确…

网站服务器的容量怎么看,网站服务器空间大小会对我们产生什么影响?要怎么选择?...

网站服务器空间大小通俗来讲也就是网站服务器的硬盘大小,它决定着我们的网站可以存储多少数据等等。当我们选择网站服务器空间时,如果过小,势必会对网站的运行产生一定的不良影响,过大也会造成资源浪费。那么究竟该如何选择呢&…

提示网站服务器403,浏览器打开网页时出现http 403 禁止访问错误是什么原因?

浏览器打开网页时出现http 403 禁止访问错误是什么原因?http 403 错误大多都发生在新站中,这类网站还处于建设过程,403也算是常见的访问错误了,另外,我们来看看出现http 403 禁止访问错误的原因。浏览器打开网页时出现…

git上传网站到服务器上,git上传到远程服务器

git上传到远程服务器 内容精选换一换代码托管服务支持您将本地的代码进行Git初始化并上传到CodeHub仓库。不选择“选择gitignore”。不勾选“允许生成README文件”。如果原来是来自SVN服务器的,建议参考 将SVN代码库迁移到Git代码库。如果原来没有纳入过任何的版本系…