软件安装与项目部署

@[toc]

1. centos7.5系统安装python3.7

① 下载python安装包

<kbd>[root@VM_39_157_centos ~]# wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz</kbd>

② 解压安装包到当前目录

<kbd>[root@VM_39_157_centos ~]# tar zxvf Python-3.7.3.tgz -C ./</kbd>

③ 安装python依赖

<kbd>[root@VM_39_157_centos ~]# yum -y install openssl-devel bzip2-devel libffi-devel</kbd>

④ 安装gcc、gcc-c++

<kbd>[root@VM_39_157_centos ~]# yum -y install gcc gcc-c++</kbd>

⑤ 进入python安装包目录

<kbd>[root@VM_39_157_centos ~]# cd Python-3.7.3</kbd>

⑥ 编译安装

[root@VM_39_157_centos Python-3.7.3]# ./configure --prefix=/usr/local
[root@VM_39_157_centos Python-3.7.3]# make
[root@VM_39_157_centos Python-3.7.3]# make install

⑦ 创建软链接

[root@instance-mtfsf05r ~]# cd /usr/bin
[root@VM_39_157_centos bin]# mv python python.backup
[root@VM_39_157_centos bin]# ln -s /usr/local/bin/python3.7 /usr/bin/python
[root@VM_39_157_centos bin]# ln -s /usr/local/bin/python3.7 /usr/bin/python3

⑧ 修改yum源指定为python2

[root@VM_39_157_centos bin]# cd /usr/bin
[root@VM_39_157_centos bin]# ls yum*
[root@VM_39_157_centos bin]# vi yum
[root@VM_39_157_centos bin]# vi yum-builddep
[root@VM_39_157_centos bin]# vi yum-config-manager
[root@VM_39_157_centos bin]# vi yum-debug-dump
[root@VM_39_157_centos bin]# vi yum-debug-restore
[root@VM_39_157_centos bin]# vi yumdownloader
[root@VM_39_157_centos bin]# vi yum-groups-manager
[root@VM_39_157_centos bin]# vi /usr/libexec/urlgrabber-ext-down
2. centos7.5安装nginx-1.16.0

① 下载nginx源码压缩包

<kbd>[root@VM_39_157_centos ~]# wget http://nginx.org/download/nginx-1.16.0.tar.gz</kbd>

② 解压压缩包

<kbd>[root@VM_39_157_centos ~]# tar zxvf nginx-1.16.0.tar.gz</kbd>

③ 安装nginx依赖

<kbd>[root@VM_39_157_centos ~]# yum -y install gcc gcc-c++ openssl-devel pcre-devel httpd-tools</kbd>

④ 进入nginx目录并添加用户

[root@VM_39_157_centos ~]# cd nginx-1.16.0
[root@VM_39_157_centos nginx-1.16.0]# useradd nginx

⑤ 指定所需的模块并执行配置文件

<kbd>./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_mp4_module --with-http_flv_module</kbd>

⑥ 编译和安装nginx

[root@VM_39_157_centos nginx-1.16.0]# ./configure --prefix=/usr/local
[root@VM_39_157_centos nginx-1.16.0]# make
[root@VM_39_157_centos nginx-1.16.0]# make install

⑦ 检查nginx是否安装成功

<kbd>[root@VM_39_157_centos nginx-1.16.0]# nginx -v</kbd>

⑧ 创建一个软链接

</kbd>[root@VM_39_157_centos nginx-1.16.0]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin</kbd>

⑨ 启动nginx

<kbd>[root@VM_39_157_centos ~]# nginx</kbd>

⑩ 其它

  • 查看nginx占用的端口

<kbd>[root@VM_39_157_centos ~]# netstat -anptu | grep nginx</kbd>

  • 停止nginx

<kbd>[root@VM_39_157_centos nginx-1.16.0]# nginx -s stop</kbd>

  • 强制停止nginx

</kbd>[root@VM_39_157_centos nginx-1.16.0]# pkill -9 nginx</kbd>

  • 检查nginx是否应用配置文件

</kbd>[root@VM_39_157_centos nginx-1.16.0]# nginx -t</kbd>

3. nginx SSL证书的安装

① 将证书公钥和证书私钥传送到服务器(云主机)

<kbd>thanlon@thanlon-Ubuntu:~/下载/www.blueflags.cn/Nginx$ scp 1_www.blueflags.cn_bundle.crt root@106.12.115.123:/root/flask/blueflag/cert</kbd>

<kbd>thanlon@thanlon-Ubuntu:~/下载/www.blueflags.cn/Nginx$ scp 2_www.blueflags.cn.key root@106.12.115.123:/root/flask/blueflag/cert</kbd>

② 修改Nginx配置文件
打开nginx安装目录下conf目录中的nginx.conf文件:

<kbd>[root@instance-mtfsf05r]# vi /usr/local/nginx/conf/nginx.conf</kbd>

找到被注释掉的server 配置:

 # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

修改为:

 # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  localhost;

        ssl_certificate      /root/flask/blueflag/cert/1_www.blueflags.cn_bundle.crt; #证书公钥
        ssl_certificate_key  /root/flask/blueflag/cert/2_www.blueflags.cn.key; #证书私钥

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            include uwsgi_params; #这里是导入的uwsgi配置
            uwsgi_pass     127.0.0.1:8001;#需要和uwsgi的配置文件里socket项的地址
            uwsgi_param UWSGI_PYHOME /root/flask/blueflag/blueflagvenv;#python的位置(虚拟环境下)
            uwsgi_param UWSGI_CHDIR  /root/flask/blueflag;#项目根目录
            uwsgi_param UWSGI_SCRIPT manager:app;
        }
    }

保存退出。

③ 重新加载Nginx配置
检查配置文件是否正确:<kbd>[root@instance-mtfsf05r]# nginx -t</kbd>

在这里插入图片描述

重新加载Nginx配置文件:<kbd>[root@instance-mtfsf05r]# nginx -s reload</kbd>,通过Https方式访问站点:https://www.blueflags.cn/
在这里插入图片描述

数安时代, Nginx SSL证书安装指南:https://www.trustauth.cn/ssl-guide/676.html

4. centos7.5下安装和配置mysql5.6数据库

① 下载mysql rpm包

<kbd>[root@VM_39_157_centos ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm</kbd>

② 安装rpm包

<kbd>[root@VM_39_157_centos ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
</kbd>

③ 安装mysql-server

<kbd>[root@VM_39_157_centos ~]# yum install mysql-server</kbd>

④ 授权

<kbd>[root@VM_39_157_centos ~]# chown mysql:mysql -R /var/lib/mysql</kbd>

⑤ 安装mysql

<kbd>[root@VM_39_157_centos ~]# mysqld --initialize </kbd>

⑥ 开启服务

<kbd>[root@VM_39_157_centos ~]# systemctl start mysqld</kbd>

⑦ 查看服务状态

<kbd>[root@VM_39_157_centos ~]# systemctl status mysqld</kbd>

⑧ 设置打开计算机时启动服务

<kbd>[root@VM_39_157_centos ~]# systemctl enable mysqld</kbd>

⑨ 设置用户密码

<kbd>[root@VM_39_157_centos ~]# mysqladmin -uroot password '123456'</kbd>

⑩ 停止服务

<kbd>[root@VM_39_157_centos ~]# systemctl stop mysqld</kbd>

5. centos7.5+python3.7+nginx1.16+mysql5.6+uwsgi部署上线flask项目

① python3环境的安装(上文有介绍)

② nginx环境的安装(上文有介绍)

③ mysql环境的安装(上文有介绍)

安装完成后,将开发环境中的数据库文件导出:

<kbd>thanlon@thanlon-Ubuntu:~$ mysqldump -uroot -p blueflag>db.sql</kbd>

上传到服务器中:

<kbd>thanlon@thanlon-Ubuntu:~$ scp db5.15.sql root@106.12.115.123:/root/db_file/</kbd>

创建和use数据库后,通过source指令导入到MySQL中:

<kbd>source db.sql</kbd>

④ 上传项目源码到服务器中

在CentOS中的<kbd>/root</kbd>目录下创建<kbd>flask</kbd>文件夹用来存放项目文件

<kbd>[root@instance-mtfsf05r ~]# mkdir flask</kbd>

上传项目源码到服务其中(我的开发环境是Ubuntu,所以我就通过scp命令上传了)

<kbd>thanlon@thanlon-Ubuntu:~/pythonWeb$ scp -r blueflag root@106.12.115.136:/root/flask</kbd>

⑤ 安装Python虚拟化环境
通过pip3命令安装virtualenv

<kbd>[root@instance-mtfsf05r ~]# pip3 install virtualenv</kbd>

在项目根目录中创建虚拟环境文件目录(文件名自定义,这里是<kbd>blueflagvenv</kbd>)

[root@instance-mtfsf05r ~]# cd flask/blueflag
[root@instance-mtfsf05r blueflag]# virtualenv blueflagvenv

激活虚拟化环境

<kbd> [root@instance-mtfsf05r blueflag]# source blueflagvenv/bin/activate</kbd>
激活后出现虚拟化环境文件目录名子:(blueflagvenv) [root@instance-mtfsf05r blueflag]#,说明激活成功,当前正处于Python虚拟环境。

⑥ 安装项目需要的第三方库
根据项目的需求安装(在虚拟环境中安装),例如:我的这些库

(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install flask
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install wtforms
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install flask_sqlalchemy
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install requests
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install pymysql
(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install flask_script

还可以使用:

<kbd>thanlon@thanlon-Ubuntu:~$ pip3 freeze>blueflag.txt</kbd>

导出依赖包,然后直接通过:

<kbd>(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install -r blueflag.txt</kbd>

安装这些依赖包。

⑦ 安装和配置uwsgi

安装:<kbd>(blueflagvenv) [root@instance-mtfsf05r blueflag]# pip install uwsgi</kbd>

在项目根目录下创建一个配置文件uwsgiconf.ini,文件名可以自定义:

<kbd>(blueflagvenv) [root@instance-mtfsf05r blueflag]# touch uwsgiconf.ini</kbd>

配置uwsgiconf.ini文件:

在uwsgiconf.ini文件中写入下面代码块的内容:(记得把注释全部删掉)

[uwsgi]
socket = 127.0.0.1:8001#启动程序时所使用的地址和端口

chdir = /root/flask/blueflag/#项目目录

wsgi-file = manager.py#项目程序启动文件

callable = app#程序内启用的application变量名字

processes = 2#处理器的数量,我的是2个处理器

threads = 2 #线程数量

stats = 127.0.0.1:9191#获取uwsgi统计信息的服务地址
~                                                  

在uwsgiconf.ini文件中写入下面代码块的内容:(记得把注释全部删掉)

⑧ 配置nginx
配置Nginx作为代理的目的是保证项目的安全和负载均衡。当存在网络请求时,Nginx先进行处理,然后再将请求交给uWSGI处理。
打开Nginx配置文件nginx.conf

<kbd>[root@instance-mtfsf05r ~]# vi /usr/local/nginx/conf/nginx.conf</kbd>

修改nginx.conf中的内容如下:(http{}中花括号中的server{})

 server {
        listen       80;
        server_name  106.12.123.123;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        access_log      /root/flask/blueflag/logs/access.log;#服务器接收的请求日志
        error_log       /root/flask/blueflag/logs/error.log;#错误日志

        locatior / {
            include uwsgi_params; #这里是导入的uwsgi配置
            uwsgi_pass     127.0.0.1:8001;#需要和uwsgi的配置文件里socket项的地址
            uwsgi_param UWSGI_PYHOME /root/flask/blueflag/blueflagvenv;#python的位置(虚拟环境下)
            uwsgi_param UWSGI_CHDIR  /root/flask/blueflag;#项目根目录
            uwsgi_param UWSGI_SCRIPT manager:app;
        }

⑨ 启动nginx与uwgi

启动Nginx

[root@instance-mtfsf05r ~]# nginx

到项目根目录<kbd>blueflag</kbd>(这是我的目录)下启动uWSGI,注意要激活Python虚拟环境中,这里在虚拟环境中安装了uwsgi

[root@instance-mtfsf05r blueflag]# cd /root/flask/blueflag/
[root@instance-mtfsf05r blueflag]# source blueflagvenv/bin/activate
(blueflagvenv) [root@instance-mtfsf05r blueflag]# uwsgi uwsgiconf.ini

通过服务器IP地址访问你的项目,正常访问,则部署上线成功


在这里插入图片描述
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容