首页 文章 精选 留言 我的

精选列表

搜索[环境],共10000篇文章
优秀的个人博客,低调大师

Linux环境安装python3

今天在阿里云买了一个Ecs来玩玩, 服务器是Linux版本, 登录服务器之后发现 python是python2.7,所以就打算自己安装一个python3。因为是安装完成之后才打算写这个文章的,所以安装截图就没有了,但是绝对步步都齐。 安装步骤如下: (1)wgethttps://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz 下载安装包 (2)tar zxvf Python-3.6.3.tgz 解压安装包 (3)cd Python-3.6.3 转到该安装包目录下 (4)./configure --prefix=/usr/local/python36 这一步及其重要,对安装进行配置,并指定安装路径,安装路径不指定的话不利于后面的系统管理 (5) make 编译 (6) make install 安装 这样子就完成安装了,当然事情还没有完!!!且看下图 可以看到,默认输入python,还是python2.7,所以我们还需要一点工作,那就是建立软连接,使得系统默认的python版本是python3。有一点千万要记住,不要傻傻去卸载老版本,要不然后患无穷。 建立软连接: (1)mv /usr/bin/python /usr/bin/python.bak (2)ln -s /usr/local/python36/bin/python3.6 /usr/bin/python 这样配置之后,我们就会看到默认就是python36了: 大功告成~

优秀的个人博客,低调大师

生产环境ES查询延迟排查

最近经常收到业务方配置的ES查询延迟告警,同样的请求手动在Kibana控制台执行只需几十毫秒就返回结果。受影响的整个链路情况如下,php应用程序通过部署在ES集群各节点上的nginx访问ES请求查询数据。 查询延迟原因可能有2个方面的因素: 1、ES集群异常,ES应用故障或者集群节点主机故障。 首先通过查看上一篇配置的dashboard检测各节点系统指标以及ES性能指标在告警时段有无明显异常。排查问题时为了方便直接查看,针对搜索和索引请求相关的指标,构建了一个新图,直接对query,index,fetch,merge操作的时间进行rate计算,对query,index,fetch,merge操作次数进行increase计算,两者相除得到单个请求的平均操作耗时。若有异常,可以再查看之前的图表中具体的操作数和请求时间。并查看ES相关时间点的日志。 集群节点主机级别的问题主要通过观察node_exporter中的核心指标有无异常,包括CPU,内存,网络,TCP连接,上下问切换,磁盘容量及IO。 2、业务请求异常,业务请求量突增高于正常的水平。 业务上的请求异常主要通过分析ES各节点nginx代理的访问日志错误日志,前端web服务以及php的日志。 写入方客户端写ES的请求记录,请求时间,状态码,响应时间。 找到ES集群中告警延迟索引的相关文档确切的写入时间。 找到查询方客户端的查询记录,请求时间,状态码,响应内容。 分析日志的过程异常痛苦,由于延迟出现在10分钟的时间段, 所以想要分析业务量的波动是否正常,需要统计日志同比环比,进行对比。日志文件大,使用正则,组合grep,awk,sed耗时又消耗性能,效率又低。最终梳理日志,并对关键字段进行解析,接入袋鼠云日志分析系统,终于摆脱登录各服务器命令行统计的惨状,配置应用场景,访问趋势清晰明了。 TIPS: 查看监控图表发现业务访问并无异常,使用sar -B查看内存ES节点内存情况,发现在问题时间点各节点的pgscand/s一列数值较高,说明内核线程kswapd回收内存,由于系统free内存不足,当应用突然需要额外内存。用户进程或线程分配内存或发生缺页中断时,会在用户线程上下文中直接进行回收内存(pgscand)和分配内存。 建议根据机器的规格调大以下两个值,32C64G机器可以调大至2-4G vm.min_free_kbytes系统所保留空闲内存的最低限 vm.extra_free_kbytes系统保留给应用的free内存

优秀的个人博客,低调大师

LEMP环境下WordPress建站教程

LEMP 代表的是(L:Linux OS,E:Nginx,M:MySQL/MariaDB, P:PHP),与之对应的是 LAMP(唯一不同的是 A,代表 Apache 网络服务器),由于Nginx轻量、高效的特性,LEMP 在近来的 Web 服务中的出镜率越来越高。 为了追随潮流,在之前LAMP 搭建 WordPress的基础上,我又尝试了使用 Nginx 作为 WordPress 的网络服务器,尽管遇到了各种各样的问题,但是取得了不错的效果。由于 Nginx 的配置比较复杂,于是有很多需要注意的地方。 常见网络服务器的优缺点 1. Nginx Nginx 是十分轻量级的 HTTP 服务器,是一个高性能的 HTTP 和反向代理服务器,Nginx 以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹敌 Lighttpd 的性能,同时还没有 Lighttpd 的内存泄漏问题。 优点:轻量级,处理请求异步非阻塞,抗并发,高度模块化,有着 Lighttpd 的性能,且更稳定。 缺点:Nginx 在处理动态请求方面不如 Apache。 2. Apache Apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一。但是对于那些需要更强大的 Web 应用服务器(比如大小、可定制、响应速度、可扩展性等方面)的人而言,Apache 明显不符合他们的要求。 优点:兼容性和稳定性强,处理动态请求能力好。 缺点:体量大,在速度、性能不及其他轻量级 Web 服务器,并且消费内存较高。 3. Lighttpd Lighttpd 是一个具有非常低的内存开销,CPU 占用率低,效能好,以及丰富的模块等特点。Lighttpd 是众多 开源的轻量级的网络服务器中较为优秀的一个。支持 FastCGI、 CGI、 Auth、 输出压缩、URL 重写、Alias 等重要功能。 优点:轻量级,CPU 占用低,效能好,模块丰富,对FastCGI 支持非常好,比 Apache 性能更高。 缺点:稳定性没有 Apache 和 Nginx 好。 如果考虑网站的综合状况的话,比较理想的做法是用 Nginx 做高并发、缓存、代理前端内容,而使用 Apache 处理后台动态内容。不过如果只是驱动 WordPress,单独使用 Nginx 就够了。 安装 LEMP 安装过程和 LAMP 差不多,只是几个地方稍微不同。 安装 Nginx # 安装Nginx sudo apt install nginx # 检查Nginx运行状况 sudo systemctl status nginx.service 安装 PHP7 # 安装PHP7和PHPFastCGI管理器PHP-FPM sudo apt install php7.0 php7.0-fpm 安装 MariaDB 数据库 # 安装MariaDB sudo apt install mariadb-server mariadb-client php7.0-mysql # 重启PHP-FPM服务以便使用MySQL模块与数据库通信 sudo systemctl restart php7.0-fpm.service 为了安全加固 MariaDB,运行来自 Ubuntu 软件仓库中的二进制包提供的安全脚本,这会询问你设置一个 root 密码,移除匿名用户,禁用 root 用户远程登录,移除测试数据库等。 # 使用安全脚本 sudo mysql_secure_installation # 配置MariaDB以便普通用户能够不使用root权限来访问数据库 sudo mysql MariaDB> use mysql; MariaDB> update user set plugin='' where User='root'; MariaDB> flush privileges; MariaDB> exit # 然后使用如下命令执行数据库命令 mysql -u root -p -e 'show databases' 安装其他模块 还有一些 WordPress 会用到的模块,比如 mcrypt、mbstring,安装完后需要重启 PHP-FPM。 # 其他模块 sudo apt install php7.0-mcrypt php7.0-mbstring 到这里 LEMP 的安装工作就已经基本搞定了,接下来是最重要的配置环节。 配置 Nginx 主配置 首先是主配置文件/etc/nginx/nginx.conf: # Set user and group. user www-data www-data; # Usually equal to number of CPUs you have. worker_processes 1; # Global error log [ debug | info | notice | warn | error | crit ]. error_log /var/log/nginx/error.log warn; # Pid file pid /run/nginx.pid; events { worker_connections 1024; } http { ### Basic Settings ### include /etc/nginx/mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 60; client_max_body_size 15m; # Limit the max size of plugin in WordPress. ### SSL Settings ### ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ### Logging Settings ### access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ### Gzip Settings ### gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; ### FastCGI Settings ### fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=1G; fastcgi_temp_path /tmp/wpcache/temp; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; ### Virtual Host Configs ### include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 子配置 然后是 WordPress 的配置文件/etc/site-enabled/wordpress.conf: server { listen 80 default_server; listen [::]:80 default_server; root /home/ubuntu/wordpress; index index.html index.php; server_name www.infiniture.cn; access_log /var/log/nginx/infiniture.com.access.log; error_log /var/log/nginx/infiniture.com.error.log; # Managed by Certbot listen 443 ssl; ssl_certificate /etc/letsencrypt/live/www.infiniture.cn/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.infiniture.cn/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; if ($scheme != "https") { return 301 https://$host$request_uri; } # Add rewrite support for wordpress location / { try_files $uri $uri/ /index.php?$args; rewrite /wp-admin$ $scheme://$host$uri/ permanent; } # Cache strategy set $no_cache 0; # POST requests and urls with a query string should always go to PHP if ($request_method = POST) { set $no_cache 1; } if ($query_string != "") { set $no_cache 1; } # Don't cache uris containing the following segments if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $no_cache 1; } # Don't use the cache for logged in users or recent commenters if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $no_cache 1; } location ~ /wp-admin { location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; # Making the updates in WordPress real time. fastcgi_buffering off; add_header X-Accel-Buffering "no"; } } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_connect_timeout 600; fastcgi_send_timeout 600; fastcgi_read_timeout 600; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; fastcgi_cache_bypass $no_cache; fastcgi_no_cache $no_cache; fastcgi_cache WORDPRESS; fastcgi_cache_valid 200 301 302 1d; add_header X-Cache "$upstream_cache_status From $host"; } # Purge cache(Nginx Helper Purge Method: Using a Get) location ~ /purge(/.*) { allow 127.0.0.1; allow 182.254.246.42; deny all; fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). # Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban) location ~ /\. { deny all; } # Deny access to any files with a .php extension in the uploads directory # Works in sub-directory installs and also in multisite network # Keep logging the requests to parse later (or to pass to firewall utilities such as fail2ban) location ~* /(?:uploads|files)/.*\.php$ { deny all; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; access_log off; } } 配置说明 以上配置中,需要说明的几个: client_max_body_size 15m;因为 WordPress 里很多插件的体积比较大,如果不设置这个值的大小,会导致插件或者主题安装失败。 fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:250m inactive=1d max_size=1G;这个包括下面的所有内容都是为了使 Nginx 缓存动态文件,参数对应的是缓存位置,缓存级别,缓存标识及大小,有效期,最大容量。 由于 Nginx 不支持 Apache 的.htaccess文件,因此无法使用 WordPress 自带的地址重写功能,需要自己添加相应的功能。 # Add rewrite support for wordpress location / { try_files $uri $uri/ /index.php?$args; rewrite /wp-admin$ $scheme://$host$uri/ permanent; } fastcgi_buffering off;这个选项默认是开启的,它会把 FastCGI 返回的内容缓存起来,直到缓存空间满了之后一并输出,这会导致 WordPress 下更新时不会实时显示,而是更新完成后全部一起显示。关掉这个选项即可解决这个问题。 由于在线安装插件、主题需要等待的时间有时候会很长,因此如果不设置 FastCGI 的读写等待时长,很容易导致安装或者更新失败,因此需要设置如下内容。 fastcgi_connect_timeout 600; fastcgi_send_timeout 600; fastcgi_read_timeout 600; 为了更好管理动态文件缓存,我用了一个名为 “Nginx hleper” 的插件,为此增加了如下配置。 # Purge cache(Nginx Helper Purge Method: Using a Get) location ~ /purge(/.*) { allow 127.0.0.1; allow xxx.xxx.xxx.xxx; # 你的服务器地址 deny all; fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; } 总结 这样就在 LEMP 平台上搭建好了 WordPress 站点。

优秀的个人博客,低调大师

CentOS环境下搭建VPS服务

说明 由于大部分VPN被封,FQ过程中无意间接触到了VPS(Virtual Private Server 虚拟专用服务器,可用于FQ),所以简单记录下VPS服务搭建流程。 此教程基于centos7,本人选择使用阿里云服务器(香港区域,可访问外网)进行搭建。 安装组件 安装python组件:yuminstall m2crypto python-setuptools easy_install pip 安装shadowsocks:pip install shadowsocks 配置参数 新建并编辑文件:vim/etc/shadowsocks.json 拷贝如下配置至文件末尾: { "server":"0.0.0.0", "server_port":8388, "local_address":"127.0.0.1", "local_port":1080, "password":"password", "timeout":300, "method":"aes-256-cfb", "fast_open":false, "workers":1 } 主要参数说明:server_port表示开放VPS服务端口,password表示登录密码。 启动服务 启动命令:ssserver-c/etc/shadowsocks.json 启动成功结果如下: 连接VPS windows:使用shadowsocks客户端进行连接,由于百度无法直接搜索和下载,github下载地址:https://github.com/shadowsocks/shadowsocks-windows/releases;软件使用非常简单,首先安装,然后将VPS服务器IP、端口、密码都填写正确就可以连接了,系统代理模式启用PAC模式或全局模式即可使用。 iPhone/iPad:下载Shadowrocket简单配置后即可使用,目前appstore上搜索不到该软件,使用pp助手可下载该软件。 后台运行 由于以上启动方式为直接启动,如果关闭会话窗口即关闭服务,所以我们使用supervisor实现后台运行(如果要详细了解supervisor,请搜索supervisor教程,本篇仅为简单应用)。 安装python工具:yuminstall python-setuptools 安装supervisor:easy_install supervisor 创建配置文件:echo_supervisord_conf>/etc/supervisord.conf 添加任务:vi /etc/supervisord.conf 拷贝如下配置至文件末尾: [program:ssserver]command = ssserver -c /etc/shadowsocks.json autostart=true autorestart=true startsecs=3 测试配置是否成功:supervisord -c/etc/supervisord.conf,再使用ps -ef | grep shadowsocks查看进程是否存在,如果进程存在则配置成功。 配置开机启动:vi /etc/rc.d/rc.local 在末尾行添加supervisord,此外centos7还需要配置文件权限:chmod+x/etc/rc.local,重启服务器即可自动运行。 PS 没想到第一篇博客写的是VPS搭建,而不是代码阅读学习。缘,妙不可言。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。