ubuntu服务器用shadowsocks做代理

测试一下用 shadowsocks 来做代理服务器

登录ubuntu服务器

我的服务器是20.04版本,python 3.8

安装shadowsocks

$sudo pip3 install shadowsocks

Building wheels for collected packages: shadowsocks
Building wheel for shadowsocks (setup.py) … done
Created wheel for shadowsocks: filename=shadowsocks-2.8.2-py3-none-any.whl size=51658 sha256=451f745570ca87d3250df8d160a20ec76fca56f3f367d5e46587e5dda1f70623
Stored in directory: /home/xxx/.cache/pip/wheels/40/f7/14/208a189571d8a2279abb774182453d0d9356bdaf0299236350
Successfully built shadowsocks
Installing collected packages: shadowsocks
WARNING: The scripts sslocal and ssserver are installed in ‘/home/xxx/.local/bin’ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use –no-warn-script-location.
Successfully installed shadowsocks-2.8.2

配置shadowsocks端口与密码等

$sudo vi /etc/shadowsocks.json 生成配置文件

{
“server”:”服务器内网ip(填公网ip好像不行)”,
“server_port”: 你自己的端口默认8838,
“local_port”:1080,
“password”:”你的密码”,
“timeout”:600,
“method”:”aes-256-cfb”
}

启动shadowsocks服务

$sudo /home/xxx/.local/bin/ssserver -c /etc/shadowsocks.json -d start

会出现一个错误 undefined symbol: EVP_CIPHER_CTX_cleanup

File “/home/xxx/.local/lib/python3.8/site-packages/shadowsocks/crypto/openssl.py”, line 52, in load_openssl
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
File “/usr/lib/python3.8/ctypes/init.py”, line 386, in getattr
func = self.getitem(name)
File “/usr/lib/python3.8/ctypes/init.py”, line 391, in getitem
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

该问题是由于在openssl 1.1.0中废弃了 EVP_CIPHER_CTX_cleanup() 函数而引入了 EVP_CIPHER_CTX_reset() 函数所导致的。

打到 python3.8/site-packages/shadowsocks/crypto/openssl.py, 将 EVP_CIPHER_CTX_cleanup 替换为 EVP_CIPHER_CTX_reset 一共有二处

重新启动服务,确认服务运行,注意需要在云服务器控制台打开对应端口

配置 Shadowsocks 服务器开机自动启动

运行 chmod +x /etc/rc.local 为启动脚本添加执行权限。
运行 vim /etc/rc.local 编辑启动脚本并添加如下内容:
/etc/rc.local

ssserver -c /etc/shadowsocks.json -d start

下载客户端,下载后解压

地址:https://github.com/shadowsocks/shadowsocks-windows/releases

添加一个服务器

关于系统代理– 全局模式/PAC模式

1、全局模式:你可能会遇到一些网站打不开,仍然无法访问,这个你可以试试选择【系统代理-全局模式】,这样使全部流量经过节点服务器。

2、PAC模式【推荐】:选择PAC模式,PAC文件网址列表走节点服务器,国内网址则走你自己使用的网络流量。

3、关于PAC更新,你可以直接从 GFWList (由第三方维护)更新 PAC 文件,或者你可以手动编辑本地pac文件。需要更新PAC:依次操作:PAC ->从GFW List更新PAC (等待更新完毕后)->使用本地PAC->启动系统代理。

然后就可以使用了

参考文章:https://blog.lingyf.com/build-shadowsocks-server-to-cross-gfw/

5.2. 启用 TCP BBR(本次未做)

TCP BBR 是 Google 开发的拥塞控制算法,该算法可实现更高的带宽和更低的互联网流量延迟:

运行 vim /etc/sysctl.conf 编辑内核配置文件并添加如下内容:/etc/sysctl.conf

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

运行 sysctl -p 重新加载内核配置文件。 运行 sysctl net.ipv4.tcp_available_congestion_control 确认 BBR 已启用:

现在用什么方式相对稳定?能不能不买域名?

是不是只能 V2Ray + WebSocket + TLS + Nginx

AEAD 

拯救被墙的服务器 https://itlanyan.com/recovery-blocked-ip/

V2Ray高级技巧:流量伪装 https://itlanyan.com/v2ray-traffic-mask/

trojan教程 https://itlanyan.com/trojan-tutorial/

V2Ray教程 – tlanyan.htm https://itlanyan.com/v2ray-tutorial/

ssl安全证书过期导致网站https访问出现不安全问题

大嘎好,半吊子运维又出现了。

一个网站,用得好好的,忽然说不安全了。登上去一看,果然不安全。

显示NET::ERR_CERT_DATE_INVALID

赶紧登录到服务器上看一看是怎么肥事

得知是nginx的搭的服务器

nginx -t 看一下

再看一下 /etc/nginx/nginx.conf, 啥也没有,再仔细瞄一下原来放在 include /etc/nginx/conf.d/*.conf;

server
{
listen 80;

            listen [::]:80;

            server_name sub.xxx.com;

            location / {
                    return 301 https://sub.xxx.com$request_uri;
            }
    access_log /data/logs/www.log main;
            error_log /data/logs/www_error.log error;

}

server
{
listen 443 ssl http2;
server_name sub.xxx.com;
index index.php index.html;
root /data/wwwroot/xxxxxx;

    location / {
        rewrite ^/$ /index.php last;
        if (!-e $request_filename) {
            rewrite "^/(.*)$" /index.php/$1 last;
        }
    }

    location ~ ^(.+\\.php)(.*)$ {

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;

        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        access_log off;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
        access_log off;
    }
    location /_log {
       autoindex on;
       autoindex_localtime on;
    }
    access_log /data/logs/www.log main;
            error_log /data/logs/www_error.log error;
            ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_certificate /etc/letsencrypt/live/sub.xxx.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/sub.xxx.com/privkey.pem; # managed by Certbot

}

看来用的是Let’s Encrypt免费SSL证书,这个证书有个麻烦一点的地方就是90天过期,看来自从上次更新之后已经有90天了,所以过期了。

找到原因就好办了,将证书续期一下完事。

发现原来运维使用了 certbot ,那就更简单了。

# certbot certificates 看一下,果然有相应的证书

那就用certbot 更新一下证书 renew ,成功完成。

如果显示不成功,需要先暂停 nginx (systemctl stop nginx.service)

# certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log


Processing /etc/letsencrypt/renewal/sub.xxx.com.conf


Cert is due for renewal, auto-renewing…
Plugins selected: Authenticator nginx, Installer nginx
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for sub.xxx.com
Waiting for verification…
Cleaning up challenges


new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/sub.xxx.com/fullchain.pem



Processing /etc/letsencrypt/renewal/xxx.com.conf


Cert is due for renewal, auto-renewing…
Plugins selected: Authenticator nginx, Installer nginx
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for xxx.com
Waiting for verification…
Cleaning up challenges


new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/xxx.com/fullchain.pem



Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/sub.xxx.com/fullchain.pem (success)
/etc/letsencrypt/live/xxx.com/fullchain.pem (success)


参考文章: https://www.liaosam.com/use-cron-service-and-certbot-for-renewal-of-letsencrypt-ssl-certificates.html

升级centos后php中imagick模块错误解决

阿里云上一台跑php应用的服务器,centos 7

收到一个信息说云服务器上说有什么什么漏洞,需要进行升级

当时也没有想太多,老规矩,先做个系统快照。

然后登录系统,把软件和内核一起升级一下

#yum update

一切看起来非常的顺利,搞完之后重启一下。

虽然有点夜深,但是还是要测试一下应用是否正常。

做为一个半吊子运维的基本素养还是要有的

好了,一访问冒出一串问题

A PHP Error was encountered

Severity: Core Warning

Message: PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/modules/imagick.so’ – libMagickWand.so.5: cannot open shared object file: No such file or directory

Filename: Unknown

Line Number: 0

Backtrace:

感觉身上有点热,这么冷的天,我仿佛出汗了。

需要回滚快照?

幸好是深夜,白天交代过晚上会更新系统,应该不会有人使用。

那就先看一看有没有办法解决吧

# php –version 同样提示 imagick.so 无法 load

#vi /etc/php.ini

extension=imagick.so 先把这一行给注释了。

发现 imagick.so在 /usr/lib64/php/modules/ imagick.so 目录下,文件明明在的,为什么load不上呢?

那就删了重新装一下,试试。

# pecl uninstall imagick

#pecl install imagick

#vi /etc/php.ini 把 extension=imagick.so 打开

#php –version 正常

再启动一下nginx ,发现一切正常

世界又恢复了美好。

洗洗睡。

继续假装是个运维小哥。

CentOS 8 已是绝版?还有后续么?

 

综合自:开源中国 + 红帽官方

一、CentOS 8 已是绝版?CentOS Stream 才是未来?

 

CentOS 官方发文称 CentOS Stream 才是 CentOS 项目的未来,在接下来的一年里,将逐步把开发工作的重心从 CentOS Linux 往 CentOS Stream 转移。

 

CentOS 8 已是绝版?还有后续么?

随之而来的改变是原本拥有 10 年支持的 CentOS 8 将在2021年年底结束维护,为其接班的正是 CentOS Stream,CentOS Stream 作为 RHEL 的上游(开发)分支在 CentOS 8 结束维护后会继续更新。

 

因此对于 CentOS 8 用户,如果希望继续获得更新,需要切换到 CentOS Stream。官方也鼓励 CentOS 8 用户迁移至 CentOS Stream。

 

此外,官方已明确表示未来不会再发布由 RHEL 代码编译而成的 CentOS,意思就是无须再对 CentOS 9、10 等抱有期待,取而代之的将会是 CentOS Stream 9、10……

 

CentOS 8 已是绝版?还有后续么?

这样看来,CentOS 7 用户似乎显得更“幸运”一些,因为官方表示考虑到 CentOS 7 的用户基数多而且这些用户投入了许多精力在上面,所以会按照计划维护 CentOS 7 至生命周期结束(2024年6月30日)。

 

CentOS 8 已是绝版?还有后续么?

▲按照计划,CentOS 8 EOL 的日期是2029年

CentOS Stream 是一个滚动更新的 Linux 发行版(目前看来也可以认为是 RHEL 的滚动发行版)。前文说到 CentOS Stream 定位是作为 RHEL 的上游分支,开发团队希望 CentOS Stream 早于 RHEL 使用新特性和新内核。

 

CentOS 8 已是绝版?还有后续么?

CentOS 向来有最稳定的发行版之称,原因是红帽发布 RHEL 稳定版后,由 RHEL 源码重新编译而成的 CentOS 才会接着发布,两个发行版具有 100% 的二进制兼容性,且背后有红帽强大的技术支持,因此在开发者群体中口碑非常高(对于开发者来说,相当于免费使用上了企业级的 RHEL)。

 

现在却是 CentOS Stream 先行,稳定之后再发布 RHEL,颇有让开发者充当测试团队的意味。

 

CentOS 最吸引人的地方在于它是 RHEL 的 rebuild,现在却毫无征兆地主动放弃这个“人设”,所以不难理解众多开发者对这个决策的不满。

CentOS 8 已是绝版?还有后续么?

有人认为让 CentOS Stream 取代 CentOS 是受 IBM 影响的决定,毕竟“砍掉”免费的 CentOS 有机会为商用的 RHEL 带去更多客户。

二、Centos Stream 究竟是个啥?

2019年9月,我们发布了CentOS Stream,这是一个面向CentOS社区成员、红帽合作伙伴、生态系统开发人员和许多其他团体的上游开发平台,以便更快速、更容易地了解红帽企业Linux(RHEL)的下一步发展,并帮助塑造产品。

自从推出以来,我们看到了CentOS Stream合作伙伴和贡献者的极大热情,以及项目提供的持续不断的创新。有鉴于此,我们已经通知CentOS项目管理委员会,我们正在将我们的投资从CentOS Linux完全转移到CentOS Stream。

在我们开始讨论细节之前,我们有必要分享一些例子,我们看到我们的生态系统将CentOS Stream作为RHEL下一步的“滚动预览(rolling preview)”,无论是在内核还是功能方面。

Facebook运行着数百万台、支持其庞大的全球社交网络的服务器,所有这些服务器都已迁移(或正在迁移)到一个他们从CentOS Stream衍生而出的操作系统。Facebook继续推动CentOS Stream的内部创新,但该公司已经认识到在红帽生态系统中进行合作的价值,从而进一步提升其平台功能。

红帽的长期合作伙伴英特尔也参与了CentOS Stream:

Mark Skarpness,英特尔架构、图形和软件集团副总裁

英特尔在支持Linux生态系统方面有着悠久的历史,它推动着从企业数据中心到云部署等IT环境的开源创新。我们对CentOS Stream在我们的客户生态系统中的潜力感到兴奋。

当红帽首次将CentOS Linux引入红帽生态系统时,该项目符合作为创新平台的需要。像OKD、RDO等社区项目需要一个稳定的基础来构建,这正是CentOS Linux能提供的。但是开源开发的模式并不是一成不变的;它在不断地演变和变化,以适应企业和社区的新需求。

我们今天所面对的科技世界并不像一年前那样简单,更不用说五年前了。从容器化的应用和云原生服务,到快速硬件创新和生态系统向软件即服务(SaaS)的转变,操作系统很难满足这些需求中的任何一个,特别是在规模和响应方式上。

这就是我们看到CentOS Stream能够出彩的地方。它为社区层面的快速创新提供了一个平台,同时有足够稳定的基础来了解生产动态。这些变化和反馈可以更快地转化为产品,从而使Linux平台能够满足各种用户的需求。

红帽认为,将我们的全部投资转移到CentOS Stream是进一步推动Linux创新的最佳方式,它使更广泛的生态系统社区与RHEL的开发有更密切的联系。CentOS Stream现在位于Fedora项目的操作系统创新和RHEL的生产稳定性之间。为了使CentOS Stream成为RHEL生态系统的主要创新中心,我们将在2021年12月31日将我们的投资完全转移到CentOS Stream。我们对CentOS Linux7的承诺将一直持续到2024年发布的维护更新结束。

CentOS用户有不同种类,我们正在与CentOS项目管理委员会合作,定制满足这些不同用户群需求的项目。在2021年上半年,我们计划为各种用例引入低成本或无成本的项目,包括开源项目和社区的选项,以及扩展红帽企业Linux开发人员订阅用例,以更好地满足系统管理员的需求。稍后我们将分享更多的细节。

CentOS Linux的未来是CentOS Stream

CentOS Stream并不是CentOS Linux的替代品;相反,它是一个自然的、不可避免的下一步,从而实现项目的目标,即进一步推进企业Linux创新。

Stream缩短了RHEL环境中各个方面的开发人员之间的反馈循环,使得在我们设计RHEL的未来版本时,更容易听到所有的声音,无论是大型合作伙伴还是个人贡献者。

我们鼓励我们的所有合作伙伴和开发人员不仅仅参与CentOS Stream,而是开始建立自己的分支,并使用这个创新中心来测试解决方案,以应对他们自己的具体挑战。我们相信CentOS Stream确实是企业Linux的未来,它将让社区更直接地影响红帽企业Linux发布的方向,从小的增量版本到主要的大版本。

 

红帽也将把我们所有的内部项目转移到CentOS Stream,因此我们将能够在这项工作发生和发展过程中,与更广泛的社区共享最佳实践和策略。

建立更广泛、更多元化的社区

除CentOS Stream之外,红帽已经提供了一系列平台来满足开发人员的各种需求,包括:

  • Fedora项目:是Fedora操作系统的基础,用于那些希望贡献操作系统创新前沿的人。
  • Red Hat Universal Base Image:是一个免费的、可再发行的、面向开发人员的映像,用于创建容器化的、云原生企业应用。有了它,开发人员可以更轻松地在RHEL上和红帽的开放混合云产品组合(包括红帽OpenShift)中创建经认证的应用。
  • RHEL开发者订阅:是一个免费的、自助支持的开发者订阅,它为应用的开发提供了一个DEV/测试环境,在RHEL的稳定、更安全和高性能的基础上部署到生产中。

CentOS Linux确实有助于使RHEL和支持社区变得更好,而通过CentOS Stream,我们打算继续推动这一承诺,使Linux创新更快、更具协作性。红帽打算提供工具、支持和专业知识,帮助所有用例过渡到RHEL新的创新中心。

 

来源:

https://www.oschina.net/news/122962/future-is-centos-stream

https://mp.weixin.qq.com/s/JCThZQ-kW_vVUMOywszigA

linux服务器上导出mysql的查询结果

运营需要一些数据,要求又紧急,写个程序貌似来不及,只好登录到服务器执行SQL。

首先连接到数据库

mysql -u 用户名 -p [-h 数据库ip地址] [-P 端口号] [数据库名]

会提示你输入密码

mysql> select xxx from table_name into outfile '/tmp/test.xls';

显示一个错误,度娘后发现没有输出到mysql配置的文件夹内
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

mysql> show variables like '%secure%';
或
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+--------------------------+-----------------------+
| secure_file_priv         | /var/lib/mysql-files/ |
+--------------------------+-----------------------+

mysql> select xxx from table_name into outfile '/var/lib/mysql-files/test.xls';

显示导出成功,然后到目录下一看,文件并不存在

运营小哥又在催了,怎么办?

放大招,将查询结果都导出到指定文件吧

mysql> pager cat > /var/lib/mysql-files/test.txt ;

mysql>select xxx from table_name;

文件果然生成了。这个时候,查询结果也不会显示在控制台。要是想要显示结果,可以取消导出到文件,

 mysql>nopager;

暂时算是完成了小哥的任务。