LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443 出这个错误。这么干:
git config --global --unset http.proxy
然后就好了。
LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443 处理
LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443 出这个错误。这么干:
git config --global --unset http.proxy
然后就好了。
在做 go 测试的时候,经常会有端口被使用,而没停止。停掉该进程就很有必要。
# 以 3000 端口为例
lsof -i:3000
# 通过 lsof 命令找到 pid ,杀掉 pid
kill -9 xxxx
强迫症。不喜欢开机自启动向日葵。那么就关掉向日葵自启动吧。这里是 mac
打开终端,编辑下边这些文件,将
cd /Library/LaunchAgents/
sudo vim com.oray.sunlogin.agent.plist
sudo vim com.oray.sunlogin.startup.plist
cd /Library/LaunchDaemons
sudo vim com.oray.sunlogin.helper.plist
sudo vim com.oray.sunlogin.plist
从零开始,来吧
php 下载地址集:https://www.php.net/downloads
# 先把文件下到这个目录下来
cd /usr/local/src/php
wget https://www.php.net/distributions/php-7.4.25.tar.gz
# 提示说 错误: “www.php.net” 的证书不可信 错误: “www.php.net” 的证书使用不安全的算法签名。
# wget 搞不定,我们用 curl 来弄
curl -o php-7.4.25.tar.gz https://www.php.net/distributions/php-7.4.25.tar.gz
# 再解压
tar -xzvf php-7.4.25.tar.gz
能用 yum 装的就用 yum 装,不行的再源码编译安装
yum -y install gcc gcc-c++
yum -y install sqlite-devel
yum install libxslt-devel
yum install cmake
# 还是要手动安装 oniguruma
请参考:[https://blog.vini123.com/379](https://blog.vini123.com/379)
yum -y install libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel libicu-devel freetype-devel openldap-devel openldap openldap-devel
安装 gd库,freetype2,libzip ,请参考:https://blog.vini123.com/378
如果之前没建立其用户组,先建立一个用户组
groupadd nginx
useradd -g nginx -M nginx
默认主机名乱七八糟,不好看也找不到意义。修改主机名就很有必要。怎么做呢。
# 将 preserve_hostname 值改为 true ,保存并退出
vim /etc/cloud/cloud.cfg
# 设置主机名,这里我设置为 xiangrong (云想衣裳花想容,春风拂槛露华浓)
hostnamectl set-hostname xiangrong
退出连接,重新登录就发现修改好了。
在这里找到最新的版本 https://www.python.org/ftp/python/,当前 3.9.6 版本。
cd /usr/local/src
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tgz
tar -xzvf Python-3.9.6.tgz
cd Python-3.9.6
mkdir /usr/local/python39
./configure --enable-optimizations --prefix=/usr/local/python39
make && make install
建立软链
ln -s /usr/local/python39/bin/python3.9 /usr/bin/python
ln -s /usr/local/python39/bin/pip3.9 /usr/bin/pip
一个项目,一般不仅有 mysql 数据库,还会有 redis、mongodb 等数据库。那 下边记录下 laravel 中配置和使用 mongodb。
安装 mongdb 和 mongdb 扩展
# 最快最简单的安装方式
pecl install mongodb
# 在 php.ini 中配置 mongodb
# 先找到 php.ini 的位置
php -i | grep php.ini
# 开始配置
vim php.ini
# 加入 extension=mongodb.so
# 重启
/etc/init.d/php-fpm restart
# 看看扩展
php -m |grep mongodb
https://github.com/jenssegers/laravel-mongodb
composer require jenssegers/mongodb
在 config/database.php 的 connections 中配置
'mongodb' => [
'driver' => 'mongodb',
'host' => env('MONGO_DB_HOST', '127.0.0.1'),
'port' => env('MONGO_DB_PORT', 27017),
'database' => env('MONGO_DB_DATABASE', 'homestead'),
'username' => env('MONGO_DB_USERNAME', 'homestead'),
'password' => env('MONGO_DB_PASSWORD', 'secret'),
'options' => [
'database' => env('MONGO_DB_AUTHENTICATION_DATABASE', 'admin'), // required with Mongo 3+
],
]
# 或
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGO_DB_DSN'),
'database' => env('MONGO_DB_DATABASE', 'homestead'),
],
在 .env 中进行 MONGO_DB_DSN 和 MONGO_DB_DATABASE 配置。
这里,我既使用 mysql, 也使用 mongodb。并且都使用 ORM。 mysql 是默认驱动方式。
php artisan make:model Moment
### 编辑 App\Models\Moment ,如下
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Jenssegers\Mongodb\Eloquent\Model;
class Moment extends Model
{
use HasFactory;
// 驱动
protected $connection = 'mongodb';
// 表
protected $collection = 'detail.idc';
}
用 tinker 试试:
php artisan tinker;
use App\Models\Moment;
Moment::first();
服务器时间久了,有可能忘记曾经编译安装的 nginx 和 php 的配置。但是想知道,怎么办呢。
nginx
nginx -V
# 输出
nginx version: nginx/1.16.1
built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)
built with OpenSSL 1.1.1f 31 Mar 2020
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/alidata/service/nginx --pid-path=/alidata/service/nginx/run/nginx.pid --with-http_stub_status_module --with-threads --with-file-aio --with-pcre-jit --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_realip_module --with-http_addition_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-http_slice_module --with-pcre --with-openssl=/usr/local/src/base/1-openssl/openssl-1.1.1f --with-openssl-opt=enable-tls1_3 --add-module=/opt/ngx_brotli/ --add-module=/usr/local/src/nginx/headers-more-nginx-module-0.33
因为有阿里云,ssl 证书,都是通过
阿里云盾证书服务
来申请的。免费,方便。但也有缺点。这个证书只能使用一年,且不支持泛域名,一个服务器最多支持 20 个证书。这样,如果域名多,也烦。 后来发现了Let's Encrypt
, 发现了acme.sh
。想来试试这个。
Let’s Encrypt 作为一个公共且免费 SSL 的项目逐渐被广大用户传播和使用,是由 Mozilla、Cisco、Akamai、IdenTrust、EFF 等组织人员发起,主要的目的也是为了推进网站从 HTTP 向 HTTPS 过度的进程,目前已经有越来越多的商家加入和赞助支持。
Let’s Encrypt 免费 SSL 证书的出现,也会对传统提供付费 SSL 证书服务的商家有不小的打击。到目前为止,Let’s Encrypt 获得 IdenTrust 交叉签名,这就是说可以应用且支持包括 FireFox、Chrome 在内的主流浏览器的兼容和支持,虽然目前是公测阶段,但是也有不少的用户在自有网站项目中正式使用起来。
Let’s Encrypt 的最大贡献是它的 ACME 协议,第一份全自动服务器身份验证协议,以及配套的基础设施和客户端。这是为了解决一直以来 HTTPS TLS X.509 PKI 信任模型,即证书权威(Certificate Authority, CA)模型缺陷的一个起步。
在客户端-服务器数据传输中,公私钥加密使得公钥可以明文传输而依然保密数据,但公钥本身是否属于服务器,或公钥与服务器是否同属一个身份,是无法简单验证的。证书权威模型通过引入事先信任的第三方,由第三方去验证这一点,并通过在服务器公钥上签名的方式来认证服务器。第三方的公钥则在事先就约定并离线准备好,以备访问时验证签名之用。这个第三方就称为证书权威,简称 CA。相应的,CA 验证过的公钥被称为证书。
问题是,如果服务器私钥泄露,CA 无法离线使对应的证书无效化,只能另外发布无效记录供客户端查询。也就是说,在私钥泄露到 CA 发布无效记录的窗口内,中间人可以肆意监控服-客之间的传输。如果中间人设法屏蔽了客户端对无效记录的访问,那么直到证书过期,中间人都可以进行监控。而由于当前 CA 验证和签发证书大多手动,证书有效期往往在一年到三年。
Let’s Encrypt 签发的证书有效期只有90天,甚至希望缩短到60天。有效期越短,泄密后可供监控的窗口就越短。为了支撑这么短的有效期,就必须自动化验证和签发。因为自动化了,长远而言,维护反而比手动申请再安装要简单。
证书的有效期,我坚持认为这是合理的。Let’s Encrypt 的证书是自动签发的,对 Let’s Encrypt 的目标用户(个人网站、小网站)来说,90天已经是一个很长的时间了。特别是个人网站,域名所有权的变动是非常快的。可能前几天域名还属于张三,后几天就属于李四了。因此自动签发一个长有效期的证书是很容易产生问题的。如果证书的有效期是两年,那么经常交易域名的人就可以长时间持有已经不属于他们的域名的证书。并且这种持有不受证书吊销列表的控制,因为签发的时候,所有权是没有问题的,即使后来所有权变更了,Let’s Encrypt 也不会知道。所以设的有效期短一点,可以减少这个问题的影响。然后是易用性,现在已经有不少的 Let’s Encrypt 自动续期脚本了,配好后就不用管了,非常方便。
总之,强烈推荐站长和服务器平台用 Let’s Encrypt 向访客提供加密连接。这是域名认证未来的发展方向。
https://www.bluesdream.com/blog/tag/acme-sh
linux 下使用 ant design pro 安装依赖的时候,会出现 /bin/sh: 1: umi: not found 问题。需要更改编译模式。
cd /bin
ls -lh sh
# 结果 lrwxrwxrwx 1 root root 4 Jan 21 2020 sh -> dash
下边将 dash 改成 bash。
sudo dpkg-reconfigure dash
# 选择 no 保存即可。
# 然后再执行 ls -lh sh 发现结果是
lrwxrwxrwx 1 root root 4 Jul 28 11:09 sh -> bash
好了,就这样了。