Flask项目部署 web工作原理 nginx安装 添加虚拟主机 uWSGI 静态文件处理 Flask项目部署 web工作原理 客户端 < = > 服务器(nginx) < = > uWSGI < = > Python(Flask) < = > 数据库 nginx安装 源码安装、apt-get install … sudo /usr/local/nginx/sbin/nginx -s reload 添加虚拟主机 1.在nginx的主配置文件最后一个大括号的上面添加: include vhost/*.conf; 2.在conf/下新建文件夹,用于保存所有的虚拟主机配置文件 mkdir vhost 3.vhost目录下新建一个虚拟主机的配置文件(sudo vim idandan.vip.conf) server{ listen 80; server_name idandan.vip; location / { root html/blog; index index.html; } } # sudo vim idandan.vip.conf 4.在html目录下创建blog文件夹,在blog下新建index.html Hello World 5.重启nginx(sudo /usr/local/nginx/sbin/nginx -s reload) 6.添加本地的域名解析,修改文件:(C:\Windows\System32\drivers\etc\hosts) 最后一行添加:139.196.81.238 idandan.vip 7.测试,在浏览器地址栏输入:idandan.vip uWSGI 1.安装:pip3 install uwsgi 2.配置: http: # 采用http协议 socket: # 采用socket协议 wsgi-file # 将数据交给哪个模块 callable # 具体可调用的对象 chdir # 指定uwsgi启动后的当前目录 daemonize # 后台运行,需要指定一个日志文件 # blog.py文件 from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hi' if __name__ == '__main__': app.run() 3.简单实例 1.在blog目录下创建blog.py文件,里面写上flask启动代码用于测试 2.启动: sudo uwsgi --http...
今天学派吧给大家分享一篇关于负载均衡的教程 1. 部署前准备工作 2. Ansible主机与远程主机秘钥认证 3. 安装配置Ansible 4. 编写roles,实现web的部署 5. 编写roles角色部署nginx+keepalived 6. 编写roles角色 7. 其他问题 本篇文章记录通过Ansible自动化部署nginx的负载均衡高可用,前端代理使用nginx+keepalived,后端web server使用3台nginx用于负载效果的体现,结构图如下: 1. 部署前准备工作 主机规划 Ansible : 192.168.214.144 Keepalived-node-1 : 192.168.214.148 Keepalived-node-2 : 192.168.214.143 web1 : 192.168.214.133 web2 : 192.168.214.135 web3 : 192.168.214.139 2. Ansible主机与远程主机秘钥认证 #!/bin/bash keypath=/root/.ssh [ -d ${keypath} ] || mkdir -p ${keypath} rpm -q expect &> /dev/null || yum install expect -y ssh-keygen -t rsa -f /root/.ssh/id_rsa -P "" password=centos while read ip;do expect <<EOF set timeout 5 spawn ssh-copy-id $ip expect { "yes/no" { send "yes\n";exp_continue } "password" { send "$password\n" } } expect eof EOF done < /home/iplist.txt iplist.txt 192.168.214.148 192.168.214.143 192.168.214.133 192.168.214.135 192.168.214.139 192.168.214.134 执行脚本 [root@Ansible script]# ./autokey.sh 测试验证 [root@Ansible script]# ssh 192.168.214.148 'date' Address 192.168.214.148 maps to localhost,...
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
前言 现在SSL越来越普及了。但是很多朋友不知道如何设置、今天学派吧-给新朋友演示下。 一、系统文件修改 二、后台文件修改 三、安装插件 首先按照自己的项目运行服务器把证书安装好,干货君以腾讯云为例:证书安装指引 – SSL 证书 – 文档平台 – 腾讯云文档平台 – 腾讯云。 干货君使用nginx反向代理,apache作为项目运行服务器为例,修改nginx/conf文件夹下面的nginx.conf(将下方代码块添加到文件中或把文件中443代码块按此方式设置)。 server { listen 443; server_name www.nrgh.org; #填写绑定证书的域名 ssl on; ssl_certificate 1_www.nrgh.org_bundle.crt; ssl_certificate_key 2_www.nrgh.org.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { #项目路径,或反向代理的代码块 proxy_pass http://nrgh; } } 上方搞定在nginx.conf中加入下面这个代码块,你要负载均衡(集群使用)也是在这个代码块中搞 upstream www{ #下方写要代理的ip和端口号,下面ip是乱写的,真实的已隐去 server 111.111.205.11:56; } server { listen 80; server_name http://www.nrgh.org if ($scheme = http ) { #http请求转换为https return 301 https://$server_name$request_uri; } #即所有请求都到这里去找分配 location / { #全局实现80进来的请求,重定向为https了 proxy_pass http://www; #rewrite ^/(.*) https://$server_name/$1 permanent; } } 上面都配置之后,运行 nginx -t 并重启nginx试试效果 接下来说下会出现的问题: 1、上面都搞定之后,wordpress网站可能出现css和js还是走http请求,文章链接走https请求,这时候需要你把wordpress的媒体文件绝对路径替换相对路径,方法如下: 2、wordpress/wp-admin 后台进不去,登录无反应; 3、百度找了很多解决方法,却依然没有解决,甚至搞的连网站都打不开了; 4、等等。。。 一、系统文件修改 路径:网站根目录\wp-includes\functions.php 找到代码 require( ABSPATH . WPINC . ‘/option.php’ ); 在下方添加: add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { return preg_replace('/^(http|https):/', '', $src); } add_filter('style_loader_src', 'agnostic_style_loader_src',...
一. 前言 二. 接下来就是搭博客的过程 三、大功告成 一. 前言 开学之初,我发现Azure上有一个100刀的学生优惠。但在领取这个优惠之后,我却一直没有使用的机会,一是自己不会用,二是没有多余的时间。现在等来了放假,终于可以好好搞一搞了。:joy: 这次搭博客可谓是踩了不少坑: 百度的教程基本上都是废的,只有谷歌的英文教程才是能用的,好气啊 apache2是真难用 php各个版本让人混乱 二. 接下来就是搭博客的过程 1、进入Azure的门户,添加一个Ubuntu的主机,学生优惠的主机为B1S,我使用的是公钥登陆,生成公钥的过程就不说了 2、在网络安全组的入站规则中添加443和80端口 3、接下来是连接主机。可以使用PuTTY或者是MobaXterm,输入ip和用户名,再加上私钥就可以连接了。 4、安装Nginx sudo apt-get update sudo apt-get install nginx 安装完成后可以用以下命令操作nginx sudo systemctl stop nginx.service sudo systemctl start nginx.service sudo systemctl enable nginx.service 打开网页看看是否有这样的页面出现,如果有的话就可以进行下一步操作了 5、安装MariaDB sudo apt-get install mariadb-server mariadb-client 对于Ubuntu 16.04有以下命令 sudo systemctl stop mysql.service sudo systemctl start mysql.service sudo systemctl enable mysql.service 输入 sudo mysql_secure_installation 然后进行以下操作 Enter current password for root (enter for none): Just press the Enter Set root password? [Y/n]: Y New password: Enter password Re-enter new password: Repeat password Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y 测试以下密码是否能登陆 sudo mysql -u root...
1. 准备 LNMP 环境 2. 安装wordpress 3. 配置 一开始搭建的hexo博客,hexo博客有个缺点,他是用nodejs的服务器,不太稳定,服务器经常挂。所以最后还是决定用nginx+php-fpm搭建一个wordpress站点,这样网站就比较稳定。废话不多说,直接进入主题。 我是用的centos的服务器,下面的一些个命令也是centos的命令,不过其他的也相差不大,主要的是步骤正确就好。 1. 准备 LNMP 环境 安装nginx 使用yum安装nginx yum install nginx -y 安装完之后修改配置文件 /etc/nginx/nginx.conf ps:要是配置文件不在这个位置的,可以利用find命令和whereis命令进行查询,参考我另外两篇博文 配置文件参考下面进行更改: 这一步,只需要两处,去除对 IPv6 地址的监听,修改要监听的域名,即: #listen [::]:80 default_server; server_name www.***.com; 修改完了之后,就可以启动nginx,查看自己网站首页了,应该看到的是一个nginx测试页面。 启动nginx nginx 将 Nginx 设置为开机自动启动: chkconfig nginx on 安装php+php-fpm+php-mysql 这一步有两个选择,安装php7.0版本或是老的版本 安装老的版本比较简单: yum install php-fpm php-mysql -y 要是想安装php7.0版本,要先添加源,再安装: 如果是centos6,那么执行以下命令 CentOS/RHEL 6.x: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm 如果是centos7.x,那么执行以下命令 CentOS/RHEL 7.x: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm 安装php和插件: 可以像上面一样,需要哪个装哪个,也可以全部安装 全部安装: yum install php70w php70w* 安装需要的: yum install php70w-common php70w-fpm php70w-opcache php70w-gd php70w-mysqlnd php70w-mbstring php70w-pecl-redis php70w-pecl-memcached php70w-devel 具体可以参考:帐号登录 完了之后启动php-fpm: service php-fpm start 安装mysql yum install mysql-server -y 行不通可参考:centos7 mysql数据库安装和配置 2. 安装wordpress yum install wordpress -y 安装完成后,就可以在 /usr/share/wordpress 看到 WordPress 的源代码了。 由于上面的安装方法默认安装的是英文版,所以我们还要下载中文语言包,如果不需要中文安装可跳过此步骤 wget https://cn.wordpress.org/wordpress-4.8.1-zh_CN.tar.gz tar -zxvf wordpress* mv -f wordpress/wp-content/languages /usr/share/wordpress/wp-content/...
1、准备 2、Nginx配置 3、安装WordPress 4、启用多站点功能 5、设置域名映射 6、结果 WordPress的多站点功能允许安装一个WordPress程序的情况下,实现多个站点(也就是一套程序,可以绑定多个域名或子域名)。 每个站点拥有独立的主题、插件、文章以及页面。 这样可以极大的减少了维护和更新多个WordPress安装程序的麻烦, 并且,每个站点之间又能够相互独立,互不影响。 WordPress multisite有两个方式:子目录和子域名,这里我们主要介绍子域名方式。 也就是说,在主域名的基础上,我们会创建一个子域名,例如:http://shop.awaimai.com。 同时,我们可以映射这个子域名到一个一级域名如:http://shop.com, 对于访问者来说,访问的就是独立的一级域名。 1、准备 WordPress介绍其多站点功能页面:站点网络管理页面 接着,我们准备几个域名,如下: 站点一:www.awaimai.com(主域名),这是安装WordPress时用的域名 站点二:blog.awaimai.com,二级域名 站点三:news.com,映射的二级域名 news.awaimai.com 站点四:shop.com,映射的二级域名 shop.awaimai.com 注意:WordPress安装后请勿擅自在后台修改域名,即使是把有www改成无www,或者反过来,都有可能引起 redirected you too many times. 错误,详情请看[参考资料2] 然后,登录域名服务商的解析页面,把以上域名的A记录全部设置为WordPress安装的服务器IP。 也可以在本地电脑测试,可以直接修改hosts文件,加入下面1行: 127.0.0.1 www.awaimai.com blog.awaimai.com news.com shop.com 2、Nginx配置 在Nginx配置目录下创建新建一个配置文件,如下: $ sudo vi /etc/nginx/conf.d/awaimai.conf 内容为: server { listen 80; server_name www.awaimai.com blog.awaimai.com news.com shop.com; root /usr/share/nginx/wordpress; index index.php; location / { try_files $uri $uri/ /index.php?$args ; } location ~ /favicon.ico { access_log off; log_not_found off; } location ~ \.php$ { try_files $uri /index.php; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } access_log /var/log/nginx/$host-access.log; error_log /var/log/nginx/wpms-error.log; } 这里我们使用$host变量可以让Nginx为每个域名生成独立的访问日志, 如:news.com-access.log 和 shop.com-access.log。 但是error日志不能用$host变量,所以所有的错误会记录在一个文件里面。 再重启Nginx服务器: $ nginx -s reload 3、安装WordPress 按照WordPress正常安装步骤安装WordPress。 4、启用多站点功能 用文本编辑器打开 wp-config.php 文件,在注释:/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */之前加上如下一行: /* Multisite settings */...
有需要服务器方面的需求和咨询,可以联系博主 QQ 7271895 文章目录[隐藏] 什么是brotli? 安装依赖文件[仅限centos] 编译安装brotli库 apache/nginx添加编译参数 apache/nginx修改配置文件 出错解决办法 什么是brotli? brotli是Google开发的最新压缩算法,有效减少网站传输数据 具体内容请查看WIKI https://en.wikipedia.org/wiki/Brotli 安装依赖文件[仅限centos] yum groupinstall 'Development Tools' -y yum install cmake -y 编译安装brotli库 wget https://github.com/google/brotli/archive/v1.0.3.tar.gz tar -zxvf v1.0.3.tar.gz cd brotli-1.0.3 ./configure-cmake make make test make install apache/nginx添加编译参数 "--enable-brotli" \ "--with-brotli=/usr/local/lib" \ #apache官方模块,依赖brotli库 --add-module=../ngx_brotli-master #添加ngx_brotli模块编译 ngx_brotli模块下载地址 https://github.com/google/ngx_brotli https://github.com/eustas/ngx_brotli apache/nginx修改配置文件 http://httpd.apache.org/docs/2.4/mod/mod_brotli.html apache修改文件 /etc/httpd/conf/extra/httpd-deflate.conf <IfModule brotli_module> SetOutputFilter BROTLI_COMPRESS;DEFLATE SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip no-brotli dont-vary BrotliCompressionQuality 6 BrotliCompressionWindow 18 AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/css text/xml AddOutputFilterByType BROTLI_COMPRESS application/x-javascript application/javascript AddOutputFilterByType BROTLI_COMPRESS application/rss+xml AddOutputFilterByType BROTLI_COMPRESS application/xml AddOutputFilterByType BROTLI_COMPRESS application/json </IfModule> #nginx配置文件 brotli on; brotli_types text/html text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype; brotli_static off; brotli_comp_level 6; brotli_buffers 8 16k; brotli_window 512k; brotli_min_length 512;...