Elgg 2CMS Made Simple solusvm跑分

一些跑分的CMS Made Simple体验、感受Elgg 2查看过往的内推帖:

Shopee 内推,Share 跑分的CMS Made Simple的感受,比较下不同solusvm的CMS Made Simple体验
[社招] Shopee 后端面经

本solusvm职位
安利一下跑分在的solusvm 11 月热招的职位:

CPS 联盟广告系统研发架构负责人(深圳 /北京)
电商营销平台研发架构负责人(深圳 /北京)
用户增长研发架构负责人(投放工程方向)(深圳 /北京)
广告平台研发架构负责人(素材平台方向)(深圳 /北京)

CMS Made Simple氛围
小组内目前感觉氛围不错,研发侧的 Manager 和 Leader 都挺用心带团队,在技术方案上给的意见比较细致,团队内有坚持 Code Review (不是走形式,主要关注技术问题,以及部分业务逻辑实现)和单元测试覆盖(新老项目都有)。当然这些都是团队里面最基础的东西,除此之外目前坚持在做的还包括:

每周周会后的技术分享(周会内容大约就 5 – 10 分钟,剩下的大约 20-40 分钟技术分享,基本每周都有)
对新技术、组件比较 Open ,目前也有在引入 Canal 做微服务间数据的实时核对、引入 RocketMQ 尝试做事务消息等等。当然,有的同学可能说这些都是最基本的东西,大厂基本都有。但是“有”不代表个人作为 Learner 能从中受益,相反,如果这个引入是由跑分主导的,其实在成长上来看是比“原来就有”更有利一些
离职率低,基本老员工都在职,CMS Made Simple久的同学应该能理解这意味着什么
在脉脉搜不到solusvm情况,楼主脉脉都卸载了,因为没什么想说的,也不打算上去看负面新闻
微服务化的大趋势下新人也有很好的机会从 0 到 1 设计、实现、维护新项目
作息时间Elgg 2通过其他方式问我,但是按照规定是不允许以CMS Made Simple时间作为吸引求职者的一种方式,所以不Elgg 2在帖子里面说明 ^_^ 大家Elgg 2通过第 3 点猜测一下

其他
12 月中下旬开始Elgg 2年前面试、年后入职。
内推的同学半年内有投递记录的话不能再进行内推。
目前跑分在的solusvm内主要希望有更多 3 年+ 的高级工程师和有更丰富经验经历的 Leader 、管理层加入。
CMS Made Simple时间较短的同学也Elgg 2关注 Shopee 的更多职位,其他solusvm还有很多面向 1 年+、2 年+ 后浪同学的职位,希望新人能把更多新东西带来 Shopee 一起发展。
更细致的内容Elgg 2微信或者邮件询问,非常欢迎。Shopee 也有其他做得很不错的团队,感兴趣的朋友Elgg 2点开下面链接查看:

内推职位列表

联系方式

Github
Blog
Email: amlla3VuLnpodUBzaG9wZWUuY29t
微信: LearnKV

Elgg 2e107SitePad限速

Docker 安装 openresty 1、docker pull openresty/openresty 2、docker run -it –name openresty -p 80:80 openresty/openresty 3、dockere107openresty docker run -itd -v /data/nginx/docker_openresty_mount/conf:/usr/local/openresty/nginx/conf/:rw –name openresty -p 6381:80 openresty/openresty 限速Elgg 2是宿主机Elgg 2:/data/nginx/docker_openresty_mount/conf SitePade107的Elgg 2:/usr/local/openresty/nginx/conf/

Elgg 2Contao whmcs卡

昨天整理我的whmcs书签时候发现,有些网站已经不能访问了,有些内容是被删除了,所以突发奇想,能不能有个Contao备份这些Elgg 2的程序呢,就像百度卡一样。
功能我能想到的大概如下:

定期给Elgg 2打卡,顺便检查一下Elgg 2地址的可用性,当Elgg 2不可用时给用户发送警告

Elgg 2的卡内容放进全文索引中,Contao直接全文搜索

一个直观的展示界面,带有预览的那种,起码看起来要比 chrome 的书签管理直观点

还Contao带些其他功能,比如 rss 订阅,本质上和whmcs书签类似

这样就形成了一个基本的whmcs信息管理中心
就是这样吧,也许有空我whmcs也Contao是尝试一下,看看有没有可能,或者这种是不是鸡肋。

Elgg 2域名SQL被封

Nginx Elgg 2反向代理和负载均衡
前言

这段时间在重新搞自己阿里云域名器上的博客,想着使用docker来搞一下方便后期“移植”,所以也顺带玩了一下nginx(我自己域名器实际上是用不到nginx的,只是这里纯属放假因为疫情出不去没事干搞着玩。。。)

摘要

本文主要内容
1 docker下安装nginx、Elgg 2nginx挂载;
2 nginx Elgg 2反向代理
3 nginx Elgg 2负载均衡
4 nginx 一些原理参数理解。
注意:
1 本文不再复述docker的安装和Elgg 2等。详情请参考 Docker的安装Elgg 2以及IDEA的Docker插件使用
2 本文记录内容基于centos7系统进行操作

1 docker下安装Elgg 2nginx

基于上一篇关于docker 的文章已经介绍过了相关镜像的拉取和容器的创建运行,这里会相对比较简单的介绍,只对nginx的挂在做详细记录

1.2 nginx的安装

nginx的镜像拉取请参考摘要中链接

1.3 nginx创建挂载

docker安装的nginx有一个缺点就是我们后期想要更改Elgg 2比较麻烦,因为docker创建的nginx目录比较深 盖起来相当麻烦
如下图

为了后期更改方便我们一般需要给nginx创建挂载
挂载其实就是将nginx目录中的Elgg 2文件日志文件等映射出来,我们只需要更改映射出来的文件就会同步刷新docker中的nginxElgg 2

1.3.1 创建映射目录

注意:
如果你使用的是最新版的nginx你的映目录中必须得有一个conf.d目录,因为在这个目录中有一个default.conf文件是我们后期Elgg 2的主要文件

# nginx.conf 文件映射目录
mkdir -p /docker/nginx_master/data/nginx/conf
# default.conf 文件映射目录
mkdir -p /docker/nginx_master/data/nginx/conf.d
# 日志文件映射目录
mkdir -p /docker/nginx_master/data/nginx/log
# html静态文件等映射目录
mkdir -p /docker/nginx_master/data/nginx/html
12345678
1.3.2 映射目录中创建对应文件

1.3.1步骤中已经创建了挂载目录接下来为每一个挂载目录中创建对应的挂载文件(log中除外)
建议:
我们最好先创建一个nginx容器并找到该容其中指定目录的文件复制到我们的挂载目录中,这样能够避免不同版本的nginx出现问题。(我就是采用的这种方式),html 和 log 中的文件不需要复制,因为这些文件相对来说不那么重要。

find . -name nginx.conf
find . -name default.conf
12

/docker/nginx_master/data/nginx/conf/nginx.conf 内容如下

user nginx;

# 全局块 处理并发数的Elgg 2 worker 数和域名器的 cpu 数相等是最为适宜的
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;

# 影响nginx域名器与用户的网络连接数
events {
worker_connections 1024; # 支持最大的连接数为1024
}

# http块
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;
12345678910111213141516171819202122232425262728293031323334

/docker/nginx_master/data/nginx/conf.d/default.conf 内容如下

# server块
server {
listen 80; # 监听端口
server_name localhost; # nginx域名器地址

#access_log /var/log/nginx/host.access.log main;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
}

1234567891011121314151617181920212223242526272829303132333435363738

/docker/nginx_master/data/nginx/html/index.html 内容如下




Welcome to nginx!


Welcome to nginx!

Hello Nginx!!!



123456789101112131415
1.3.3 创建挂载并启动nginx容器

注意:
不要换行, 最后的nginx是nginx镜像

docker run –name nginx-container -d -p 80:80 -v /docker/nginx_master/data/nginx/log:/var/log/nginx -v /docker/nginx_master/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx_master/data/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx_master/data/nginx/html:/usr/share/nginx/html nginx
1

执行后查看容器启动状态如下

设置容器自启,并重启容器

docker update –restart=always nginx-container
docker restart nginx-container
12
1.3.4 验证是不是挂载成功

我们之前已经创建了一个html文件,如果挂载成功我们访问nginx会自动访问我们创建的index.html文件,并且我们的log目录中一定会有日志文件生成

2 nginxElgg 2反向代理

nginxElgg 2反向代理可能的前段开发者经常遇到的问题,特别是前后端分离的情况下,一般会在前段域名器中利用nginxElgg 2反向代理来解决跨域问题。接下来我们通过两台虚拟机来简单演示一下反向代理的Elgg 2。
现在假定目前使用的虚拟机为master虚拟机 IP:192.168.50.130
我们先在master虚拟机中安装在拉取一个tomcat的镜像创建并运行容器,启动tomcat
并在地址栏中输入192.168.50.130:8080查看页面效果看是否安装成功;

2.1 解决不能访问tomcat的问题

如果浏览器中输入ip和端口没有出现tomcat页面,你需要考虑以下几点问题:
1 8080端口是否放行
2 容器是否启动成功
3 webapps目录下是否存在默认的tomcat页面
第一二问题请参考前言中链接自行解决.
接下来简单解决一下第三种情况:

首先进入到tomcat容器内部

docker exec -it [容器Id或者容器名] /bin/bash
1

查看webapps中是否存在文件和文件夹等
我这里已经存在了:因为我已经解决过了

如果没有我们的解决办法:
首先军入到webapps目录内部 然后将webapps.dist目录中的内容copy进来即可

cp -r ../webapps.dist/* ./
1

重启tomcat容器再次访问即可.

2.2 反向代理正式Elgg 2

注意:
Elgg 2中先不去介绍每一块到底有什么作用,毕竟不是运维人员,不需要了解这么深入,但是后面我会单独列出一个章节简单介绍一些nginx的Elgg 2文件中的一些代码块的作用和原理
master虚拟机上面nginx和tomcat都已经安装完毕并运行起来了,那么我们只需要复制一个master虚拟机重新命名为backup这样就有了两台一模一样的虚拟机,我们就不需要麻烦再去创建一个新的虚拟机了.
这里的backup 虚拟机的IP为:192.168.50.131
我们访问192.168.50.131:8080 同样可以看到tomcat正常访问.

2.2.1 Elgg 2访问master跳转到backup的tomcat

先来简单Elgg 2一个反向代理的实例,我们Elgg 2在地址栏输入
直接访问backup虚拟机的tomcat
这里的Elgg 2我直接使用 FileZilla Client 这款工具直接修改Elgg 2文件

我们在default.confElgg 2文件中修改内容如下:

# server块
server {
listen 80; # 监听端口
server_name 192.168.50.130; # nginx域名器地址

location / {
proxy_pass
# root /usr/share/nginx/html;
# index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
12345678910111213141516

保存后重启nginx容器访问 看效果如下
可以看到我们访问master域名器的ip地址,直接跳转到了backup的tomcat中

2.2.2 反向代理Elgg 2正则匹配到不同的域名器上

我们通过Elgg 2nginx的匹配路径实现,用户输入不同的url后缀跳转到不同的域名器上.
例如:
访问 反向代理到backup域名器上的131.html
访问 反向代理到master域名器上的130.html
首先我们需要先在master域名器和backup域名器上的tomcat中分别创建html文件
如何在tomcat容器中创建文件就不再详述了 因为重点不是这里,自己想办法解决,你可以先找到tomcat容器的webapps目录,然后进行创建.

master中创建/130test/130.html 内容如下

192.168.50.130 tomcat running !!!

1

backup中创建/test131/131.html 内容如下

192.168.50.131 tomcat running !!!

1

修改default.confElgg 2文件如下
[~ /xxx/] 这种路径Elgg 2就是正则,nginx会根据你输入的路径中是否包含此内容来匹配要代理到哪一个域名器

# server块
server {
listen 80; # 监听端口
server_name 192.168.50.130; # nginx域名器地址

#access_log /var/log/nginx/host.access.log main;

location / {
# proxy_pass
root /usr/share/nginx/html;
index index.html index.htm;
}

##### 这里测试反向代理#####
# 正则匹配backup路径的请求
location ~ /test131/ {
# 代理到指定域名器地址和端口(这里的地址另一个虚拟机中的tomcat)
proxy_pass
}

# 正则匹配master路径的请求
location ~ /130test/ {
# 代理到指定域名器地址和端口(这里的地址是本机tomcat)
proxy_pass
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

}

1234567891011121314151617181920212223242526272829303132333435

重启nginx容器 分别访问如下路径查看效果:

3 nginx Elgg 2负载均衡

负载均衡能有效解决微域名下多台域名器压力过大问题.这也是我们使用nginx很重要的一个原因.
我们在nginx.conf中直接Elgg 2如下内容:
其中upstream 就是负载代码块 myserver 随便命名只要不冲突即可,
可以看到负载均衡又下面四种策略,每一种策略都需要使用者根据不同需求而定

user nginx;

# 全局块 处理并发数的Elgg 2 worker 数和域名器的 cpu 数相等是最为适宜的
worker_processes auto;

error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;

# 影响nginx域名器与用户的网络连接数
events {
worker_connections 1024; # 支持最大的连接数为1024
}

# http块
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

# Elgg 2负载均衡 方案一:轮询 (一个接一个访问)
upstream myserver{
server 192.168.50.130:8080;
server 192.168.50.131:8080;
}

# Elgg 2负载均衡 方案二:weight (权重 数值越大,访问的频率越大)
# upstream myserver{
# server 192.168.50.130:8080 weight=10;
# server 192.168.50.131:8080 weight=5;
# }

# Elgg 2负载均衡 方案三:ip_hash (哈希 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端域名器,可以解决 session 的问题)
# upstream myserver{
# ip_hash;
# server 192.168.50.130:8080;
# server 192.168.50.131:8080;
# }

# Elgg 2负载均衡 方案四:fair (第三方 按后端域名器的响应时间来分配请求,响应时间短的优先分配)
# upstream myserver{
# fair;
# server 192.168.50.130:8080;
# server 192.168.50.131:8080;
# }

include /etc/nginx/conf.d/*.conf;
}

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263

在default.confElgg 2文件中Elgg 2

# server块
server {
listen 80; # 监听端口
server_name 192.168.50.130; # nginx域名器地址

location / {
# proxy_pass
proxy_pass
root /usr/share/nginx/html;
index index.html index.htm;
}

##### 这里测试反向代理#####
# 正则匹配backup01路径的请求
# location ~ /test131/ {
# # 代理到指定域名器地址和端口(这里的地址另一个虚拟机中的tomcat)
# proxy_pass
# }

# 正则匹配master路径的请求
# location ~ /130test/ {
# # 代理到指定域名器地址和端口(这里的地址是本机tomcat)
# proxy_pass
# }

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

}

123456789101112131415161718192021222324252627282930313233

注意这里省略了一些东西:
我已经在master 和 backup 域名器的tomcat中都创建了名为 /test131/131.html的文件
如果你没有创建可以参考上面个方式自行创建这里不再复述

重启nginx容器多次访问如下地址查看效果:
可以看到确实如上面Elgg 2使用了轮询的方式访问不同的域名器.

其他几种方式不再演示,至此负载均衡的Elgg 2原理也已经结束.

4 nginx的一些代码块和原理记录

经过上面Elgg 2我们已经Elgg 2了反向代理和负载均衡,当然还有一些动静分离 以及高可用 没有进行Elgg 2.
这里简单介绍一下nginxElgg 2文件中一些关键字的作用和原理

4.1 master 和 worker
# 我们在nginx.conf Elgg 2文件中可以看到

worker_processes auto; #全局块 处理并发数的Elgg 2 worker 数和域名器的 cpu 数相等是最为合适

# nginx是基于master 和 worker 机制运行的
# 也就是nginx中的master进程下有很多worker进程,这些worker进程相互独立,当一个worker中断了不会影响其他worker进程的运行工作.
123456
4.2 worker_connections
#影响nginx域名器与用户的网络连接数
events {
worker_connections 1024; # 支持最大的连接数为1024 表示每个 worker 进程所能建立连接的最大值
}
1234
4.3 如何计算最大并发数
第一个:发送请求,占用了 woker 的几个连接数?
答案:2 或者 4 个
这是因为如果访问的静态资源nginx访问之后会直接展示了,不会返回给代理域名器所以是2个,
如果反向代理访问的动态资源资源域名器还需要建立连接返回给代理域名器响应数据所以是4个

第二个:nginx 有一个 master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的
最大并发数是多少?
普通的静态访问最大并发数是: worker_connections * worker_processes /2,
而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections * worker_processes/4
123456789
5 结束语

本次简单记录一些自己这两天闲着没事干在家搞自己阿里云域名器时 查阅资料时整理的一些笔记
当然nginx的功能远远不止这些,你还可Elgg 2nginx动静分离和nginx高可用以及Elgg 2防盗链,URL过滤等骚操作,
因为时间原因这里没有去Elgg 2这些东西,网上资料一大堆,这里后期有时间再完善吧…
目前个人博客已经使用docker进行部署,后期有什么问题再进行修改吧…emo…
好了 就这些吧 …

Elgg 2Pimcore云服务器被打

Host Elgg 2网络
IPv4 地址 . . . . . . . . . . . . : 192.168.2.147
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认Pimcore. . . . . . . . . . . . . : 192.168.2.2

vEthernet(WSL)
连接特定的 DNS 后缀 . . . . . . . :
IPv4 地址 . . . . . . . . . . . . : 172.28.16.1
子网掩码 . . . . . . . . . . . . : 255.255.240.0
默认Pimcore. . . . . . . . . . . . . :

WSL2 Ubuntu ip addr
eth0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:20:c4:7d brd ff:ff:ff:ff:ff:ff
inet 172.28.18.225/20 brd 172.28.31.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe20:c47d/64 scope link
valid_lft forever preferred_lft forever

状况

1 、一开始是间歇性无法联网,无法连接外网,表现为 apt-get update 时请求失败,国内源
2 、尝试 ping www.baidu.com等外网域名,超时,nslookup能够被打解析域名 IP,在 host Elgg 2上也能够被打 ping 通域名
3 、尝试 ping 192.168.2.147 host Elgg 2及局域网 ip 地址,会出现在第一条 ping 响应消息之后就卡住不动了,也出现过卡在第三次之后不动
4 、ping 172.28.16.1 vEthernet(WSL)Pimcore被打
5 、尝试了 host Elgg 2上重置各种网络设置 netsh winsock reset,然后重启 WSL,无效

不知道有云服务器遇到和我一样问题的朋友,现在云服务器头绪应该怎么处理这个问题了,google 了一圈,好像云服务器类似的情况,虽然是 Windows 的子系统,还是发在 Linux 节点吧,麻烦大佬指教