python 项目部署

2019/03/07 12:27
阅读数 96

1、Linux命令:
查看服务器的版本: cat /etc/redhat-release
clear清屏

2、更新或者安装依赖库:都是使用yum进行安装
yum install gcc-c++
yum install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
yum install libxml*

3、安装Python3:
a) 下载:wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz 下载到当前目录
b) 解压:tar -zxvf Python-3.6.3.tgz
c) 预编译: ./configure --prefix=/usr/local/python3
d) 编译并安装: make && make install
e) 创建一个python3和pip3的软链接,方便使用python3和pip3进行操作
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
f) 可以去修改pip3的源:在家目录下的.pip文件夹如果就创建一个,在创建pip.conf修改里面的内容,这是永久修改,
也可以做一次性修改:
pip3 install packagename -i http://pypi.douban.com/simple

4、安装Django(框架)和uWSGI(web服务器)
pip3 install Django==2.0
pip3 install uwsgi
给uwsgi创建一个软链接,方便操作
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi3

5、编写启动uWSGI服务器的配置文件(当然也可以直接使用uWSGI的命令)

a)可以使用 xml配置文件进行启动,启动命令是uwsgi3 -x crm.xml


<uwsgi>
<socket>127.0.0.1:8000</socket><!-- 内部端口,自定义 -->
<chdir>/shsxt/projects/crm</chdir><!-- 项目路径 -->
<module>crm.wsgi</module><!--wsgi模块位置 -->
<master>True</master><!--wsgi主进程-->
<pidfile>crm-master.pid</pidfile><!--进程号-->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 daemonize守护进程-->
</uwsgi>

b)可以使用crm.ini配置文件进行启动 启动命令是uwsgi3 crm.ini即可
[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191 # 这是一个状态监控

c)直接使用命令:uwsgi --socket 127.0.0.1:3031 --chdir /home/foobar/myproject/ --wsgi-file myproject/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191


6、把项目copy到服务器上,启动uwsgi服务器
a)在项目根目录下添加crm.xml文件,注意的是项目存放路径
b) cd到项目,执行uwsgi3 -x crm.xml 启动uWSGI服务器
c) 关闭服务器 uwsgi3 --stop/reload crm-master.pid

7、安装mysql: yum list|grep mysql-community-server查看当前mysql的安装包有没有,如果有执行yum install -y mysql-community-server即可
如果没有:先下载一个rpm的包,然后安装到yum源中,在执行yum install
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm #这里安装的mysql6 默认密码是空
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server mysql-devel mysql其中mysql-server是mysql服务器,mysql是客户端,devel就是一些开发依赖包
启动mysql:
service mysqld start 如果是centos7的话执行systemctl start mysqld.service

mysql56操作:
a) 使用mysql客户端登录数据库:mysql -uroot -p 进行登录 密码是空,或者直接mysql登录
b) 切换到mysql数据库 use mysql
c)修改host为%,方便外网进行访问:update user set host = '%' where host='127.0.0.1' and user = 'root';
d) 修改密码:update user set password = PASSWORD('123456') where host = '%';
e) 修改完后记得刷新权限或者重启mysql服务器
刷新权限:flush privileges;
重启服务器:退出mysql客户端,然后执行service mysqld restart或者c7里面 systemctl restart mysqld.service


8、安装nginx
1、下载wget http://nginx.org/download/nginx-1.10.3.tar.gz
2、解压 tar -zxvf nginx-1.10.3.tar.gz
3、预编译 cd nginx-1.10.3 执行./configure --prefix=/usr/local/nginx
4、安装 make && make install
5、修改配置 vim /usr/local/nginx/conf ,将user改成root或者登陆账号
6、启动 cd /usr/local/nginx/sbin下执行./nginx 就启动nginx
7、在浏览器访问ip:80,如果访问失败,那么把防火墙关闭 centos6下:service iptables stop/status centos7下:systemctl stop firewalld.service

9、生成环境软件:
1、Python3的环境
2、web服务器 uWSGI
3、MySQL数据库
4、Django开发框架
5、Nginx请求转发

上线项目准备:
1.修改settings的相关配置DBUG=FALSE ALLOWED_HOSTS=['*'] 数据库相关配置
2.确定下uWSGI的配置
3.注意依赖模块的安装比如安装pip3 install pymysql

10、修改nginx的配置,让其转发到127.0.0.1:8000上,配置完后,重启nginx: ./nginx -s reload

server {
listen 80; #暴露给外部访问的端口
server_name localhost;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #外部访问80就转发到内部8000
}
location /static/ {
alias /root/shsxt/projects/crm/static/; #项目静态路径设置
}
}


11、注意:生成项目的依赖库文件requirements.txt
a) pip3 freeze > requirements.txt, 会把解析器下所有的第三方模块全局展示,一般会结合virtual env使用
b) 使用pipreqs 模块进行生成,但有个缺点会有模块丢失的可能
pip3 install pipreqs
pipreqs -h 查看帮助文档
pipreqs --use-local ./ --encoding utf-8 就会在当前目录下生成requirements.txt文件
12、安装requirements.txt文件
pip3 install -r requirements.txt

 

 

总结:
1、线上部署Django项目的网络架构,使用的是uWSGI作为web服务器,(Django自带也有一个python3 manager.py runserver),
使用Nginx作为反向代理的服务器,使用MySQL作为数据库存储


2、先安装python3(安装完后设置一个软链),在安装uWSGI服务器(配置一个软链),再安装数据MySQL,在安装Nginx服务器

3、配置:
a) uWSGI的启动配置,可以ini, xml还可以直接命令


<uwsgi>
<socket>127.0.0.1:8000</socket><!-- 内部端口,自定义 -->
<chdir>/shsxt/projects/crm</chdir><!-- 项目路径 -->
<module>crm.wsgi</module><!--wsgi模块位置 -->
<master>True</master><!--wsgi主进程-->
<pidfile>crm-master.pid</pidfile><!--进程号-->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize><!-- 日志文件 daemonize守护进程-->
</uwsgi>

b) nginx服务器的配置,修改用户,在加入uWSGI的相关配置


server {
listen 80; #暴露给外部访问的端口
server_name localhost;
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000; #外部访问80就转发到内部8000
}
location /static/ {
alias /root/shsxt/projects/crm/static/; #项目静态路径设置
}
}

c) MySQL的账号和密码的设置:如果是初次安装mysql后,需要修改账号的host和配置密码
使用MySQL的客户端mysql 登录进入mysql服务端,然后进入mysql数据库use mysql; 查看账号 select host, user, password from user;
找到其中的某个账号进行改动:update user set host = '%', password = PASSWORD('123456') where host = '127.0.0.1' and user='root';
修改完后,需要刷新权限:flush privileges; 这就可以远程登录,创建一个数据库,然后把对应的数据库表拷贝过去。

4、上传代码的准备工作:修改settings.py中一些配置:DEBUG = False, ALLOWED_HOSTS=['*'], 还要修改其他的软件环境配置比如数据库,还要生成requirements.txt 依赖库的清单

5、上传完后,直接在项目根路径下找到对应的requirements.txt, 直接执行pip3 install -r requirements.txt, 安装对应的依赖包

6、启动服务器:
a) 启动uWSGI服务器:uwsgi -x crm.xml或者uwsgi (--ini) crm.ini
b) 启动Nginx服务器: ./nginx

7、访问:域名访问或者使用ip地址访问

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部