博客 (29)

以以下版本为例

PHP 7.3

sqlsrv 5.6.0


步骤:

  1. 安装 PHP 7.3

  2. 加入微软的源

    curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo
  3. 安装微软 ODBC 驱动、命令行工具及开发包

    yum install msodbcsql mssql-tools unixODBC-devel
  4. 下载 sqlsrc 扩展

    wget http://pecl.php.net/get/sqlsrv-5.6.0.tgz
  5. 解压(注意最好是 wget 直接下载解压的,如果是 SFTP 上传的,用户是 root 编译会出错)

    tar -zxvf sqlsrv-5.6.0.tgz
  6. 进入

    cd sqlsrv-5.6.0
  7. /www/server/php/73/bin/phpize
  8. ./configure --with-php-config=/www/server/php/73/bin/php-config
  9. make && make install
  10. 添加扩展

    echo "extension = sqlsrv.so" >> /www/server/php/73/etc/php.ini
  11. 重新加载配置

    /etc/init.d/php-fpm-73 reload

image.png

http://pecl.php.net/package/sqlsrv

转自 雕木乱 27 天前
416
  1. 购买 ECS

  2. 解析域名、挂载磁盘(若有另购)、修改实例名称、配置安全组、设置快照策略、安装云监控插件并在应用分组添加服务器、云安全中心防勒索安装客户端并配置策略资产

  3. 远程连接进入 ECS(若解析未生效可以先用 IP)(若新服默认使用 22 端口,可先在安全组临时放行 22 端口)

  4. 修复系统漏洞(阿里云-云安全中心-漏洞管理)

  5. 安装宝塔面板(本文以宝塔面板方案为例,选择任何你喜欢的环境部署方案都行)

  6. 将磁盘挂载到目录(fdisk、df 命令参考:https://xoyozo.net/Blog/Details/SSH

  7. 临时放行宝塔面板端口,进入宝塔面板(http方式)

  8. 配置面板 SSH、添加新的安全端口、面板设置

  9. 更改 SSH 默认端口(参:https://xoyozo.net/Blog/Details/change-default-port

  10. 安装 nginx、PHP 等

  11. 配置 PHP 扩展(Redis、sqlsrv(注意选择兼容的版本))

  12. 创建网站,配置网站(路径、伪静态等)

  13. 迁移网站文件(参:https://xoyozo.net/Blog/Details/SSH

  14. 仔细对比新旧网站的配置文件(特别是 .php 的访问权限,参:https://xoyozo.net/Blog/Details/nginx-location-if

  15. 设置写入目录(使用 rsync 同步的文件会同步用户和权限)

  16. 解析域名(先改 hosts 测试网站功能)

  17. 更改内网其它 ECS 上的 hosts

  18. 关闭原 ECS(能马上发现问题,不然等运行一段时间才发现问题就麻烦点)

  19. 设置 FTP

  20. 迁移“计划任务”

  21. 所有网站和软件的配置文件都要使用 WinMerge 进行对比

  22. 移除“宝塔面板-安全”和“阿里云-ECS-安全组”中不用的端口


更多文章:

从零搭建一台阿里云 ECS(Windows Server)并迁移网站

xoyozo 28 天前
405

客户端:Failed to connect to host.

服务端:无任何日志

原因:可能是域名、IP 或端口有误,或端口未开放。


客户端/服务端:530 Login incorrect.

原因:用户名或密码错误。


客户端/服务端503 Use AUTH first.

原因:服务端开启了 FTPS 协议(FTP over TLS),且禁止了 FTP 协议(plain FTP)。

解决方法:不建议服务端恢复不安全的 FTP 协议,客户端应配置 client.Config 的 EncryptionMode、DataConnectionEncryption、SslProtocols、ValidateCertificate 等参数。


客户端/服务端:530 This server does not allow plain FTP. You have to use FTP over TLS.

原因:服务端启用了 FTPS。

解决方法:给 client.Config.EncryptionMode 正确的赋值(FtpEncryptionMode.Explicit 或 FtpEncryptionMode.Auto)。


服务端:[Error] TLS session of data connection not resumed.

原因:证书版本有误。

解决方法:给 client.Config.SslProtocols 赋值正确的 TLS 版本。


服务端:521 PROT P required

原因:服务端开启了Require TLS session resumption on data connection when using PROT P”

解决方法:client.Config.DataConnectionEncryption = true;


客户端/服务端450 TLS session of data connection has not resumed or the session does not match the control connection

原因:TLS 与控制连接不匹配,即服务端开启了“Require TLS session resumption on data connection when using PROT P”

解决方法:我暂时还不知道原因,临时关闭了Require TLS session resumption on data connection when using PROT P”(不建议)。该问题出现在 FileZilla Server 0.x 版本,在 1.x 版本中没有该配置选项。

xoyozo 6 个月前
690

FTP 服务端与客户端之间使用命令端口和数据端口进行通信。

1.png

而主动模式与被动模式的区别是:在数据连接时,服务端是否为主动方。


主动模式(PORT 模式)

2.png

第一步:客户端使用任意 N 端口向服务端 21 端口发送请求,建立连接

第二步:服务端使用 20 端口向客户端任意 M 端口发送请求,传输数据

要求:

服务防火墙开放 21 端口准入,20 端口准出(默认所有端口准出)

客户端设置“允许应用通过防火墙”(将 FTP 客户端程序加入允许)


被动模式(PASV 模式)

3.png

第一步:客户端使用任意 N 端口向服务端 21 端口发送请求,建立连接

第二步:客户端使用任意 M 端口向服务端 P 端口发送请求,传输数据

要求:

服务端设置被动模式端口范围

服务端防火墙开放 21 端口及被动模式范围端口准入

客户端一般不需要设置


xoyozo 6 个月前
503
  1. 购买 ECS

  2. 解析域名、挂载磁盘(若有另购)、修改实例名称、配置安全组、设置快照策略、安装云监控插件并在应用分组添加服务器、云安全中心防勒索安装客户端并配置策略资产

  3. 远程连接进入 ECS(若解析未生效可以先用 IP)

  4. 开启 Windows 防火墙(使用推荐设置)

  5. Windows 更新

  6. 安装 IIS:服务器管理器-添加角色和功能-勾选“Web 服务器(IIS)”包括管理工具

    建议勾选:

    默认已勾选项

    按需安装 IP 和域限制

    常见 HTTP 功能(不建议安装 WebDAV 发布

    跟踪(即“失败请求跟踪”)

    请求监视器、日志记录工具、

    按需安装 ASP

    按需安装 ASP.NET 4.8(会同时勾选 .NET Extensibility 4.8、ISAPI 扩展、ISAPI 筛选器)

    按需安装 WebSocket 协议

    应用程序初始化(建议安装)

    管理服务(用于 Web 部署)

  7. 细节:设置任务栏;设置桌面图标;个性化-颜色-勾选“标题栏和窗口边框”;设置输入法;

  8. 更改远程桌面端口

  9. 按需安装:

    下载 URL 重写(文件名:rewrite_amd64_zh-CN.msi)

    下载 MySQL Connector/NET(文件名:mysql-connector-net-8.0.19.msi)

    下载 ASP.NET Core 运行时 Hosting Bundle(文件名:dotnet-hosting-*.*.*-win.exe)

    下载 .NET 桌面运行时 Windows x64(文件名:windowsdesktop-runtime-*.*.*-win-x64.exe)

    下载 Web Deploy(文件名:WebDeploy_amd64_zh-CN.msi)

  10. 服务:设置“ASP.NET State Service”自动启动

  11. IIS 日志:路径(如 D:\wwwlogs),每小时(统一设置一个全局的就行了,不需要设置每个网站),按需勾选“使用本地时间进行文件命名和滚动更新”

  12. IIS 导入证书:个人、允许导出证书。

  13. 设置默认网站的 https

  14. 设置权限:设置网站所在分区(如 D 盘),安全,添加 IIS_IUSRS,全部拒绝(防止跨站)

  15. 添加用户:为每个网站创建用户(既能防止跨站,又能跟踪进程),密码不能改、不过期,仅隶属于 IIS_IUSRS,并添加到每个网站的根目录

  16. 创建网站:设置访问物理路径的用户;设置应用程序池的“标识”用户;编辑绑定:勾选需要服务器名称指示;检查域名是否绑全;设置写入目录;

  17. 重复上面两步

  18. 检查所有网站用户是否仅隶属于 IIS_IUSRS(在“组”页面双击 Users 和 IIS_IUSRS 查看成员)

  19. 在应用程序池列表页面检查 CLR 版本、管托管道模式和标识;在网站列表页面检查绑定和路径

  20. 设置 Web 部署

  21. 设置“IP 地址和域限制”

  22. 废弃旧服时再次检查:IIS 中各功能设置、hosts、安装的应用程序、启动项、服务、防火墙等

  23. 更改默认端口

  24. 解析各网站域名

  25. 其它:资源管理器-查看-选项-查看-去掉“始终显示图标,从不显示缩略图”前的勾


>> 关于域名解析

因各地域名解析生效时间不可控,一般国内域名 1 天内,国际域名 2 天内。

  • 若网站数据库在 RDS、上传文件在 OSS,则解析 48 小时后直接停止原网站即可;(比较理想的)

  • 文件上传到 ECS 的可使用 FTP 等工具定时同步文件,或直接停止原网站。(网友会遇到新文章中图片无法显示等问题)

  • 还有一种方法是新网站提前解析一个备用域名,确保完全生效后再修改正式域名的解析,原网站无条件跳转到备用域名,如果数据库中有保存完整网址路径的,关闭原网站并解绑备用域名之后,进行批量替换。(缺点是可能会影响在搜索引擎的网站权重)

  • 部分有定时器的网站要注意,如果两个网站的定时器都正常开启会导致意外的,需要停止其中一个网站的定时器。

当然每种方法都有优缺点,选择可以接受且方便的一种即可。


更多文章:

从零搭建一台阿里云 ECS(Alibaba Cloud Linux / CentOS / Linux)并迁移网站

xoyozo 7 个月前
1,597

默认端口带来安全隐患,建议更改为 50000-60000 之间的端口号。


Windows 远程桌面(RDP)(3389)

  1. 在 Windows 防火墙中放行新端口:在“入站规则”中找到“Open RDP Port 3389”复制并粘贴该规则,修改端口和名称。

    若没有这个规则:新建规则 - 端口 - TCP - 特定本地端口(填写新的端口号)- 允许连接 - 名称

  2. 如有其它防火墙或安全组也一并配置(如阿里云 ECS 的安全组)

  3. 打开注册表(regedit),展开到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp,右侧双击“PortNumber”切换到“十进制”,将 3389 改为新端口号

  4. 重启生效

  5. 在防火墙和安全组中禁止原默认端口


SSH (22) 之 CentOS

  1. 在外部防火墙中放行新的端口号(如阿里云 ECS 的安全组)

  2. 在内部防火墙中放行新的端口号(如 firewalld 或 iptables),使用宝塔面板的直接在面板“安全”页面设置即可

  3. 打开 SSH 配置文件

    sudo vi /etc/ssh/sshd_config
  4. 找到并编辑以下行

    #Port 22
  5. 重新加载使生效

    sudo systemctl reload sshd
  6. 在防火墙和安全组中禁止原默认端口

  7. 建议使用 SSH 密钥对代替传统账号密码登录


FTP (21) 之 FileZilla Server Windows 版

  1. 一般地,在 Windows Defender 防火墙中是以添加应用 filezilla-server.exe 的方式允许的,所以不需要更改端口。如果以端口方式允许的,那么在入站规则中允许新的端口。

  2. 如有其它防火墙或安全组也一并配置(如阿里云 ECS 的安全组)

  3. 打开 Administer FileZilla Server,打开菜单 - Server - Configure - Server listeners,右侧窗口中将 Port 改为新端口(强烈建议将 Protocol 改为“Require explicit FTP over TLS”,即禁止 FTP 协议,改为使用 FTPS 协议)

  4. 从防火墙和安全组移除 21 端口


FTP (21) 之 Pure-Ftpd(宝塔面板)

  1. 在防火墙中放行新的端口号(如阿里云 ECS 的安全组)

  2. 进入宝塔面板,打开“安全”,添加端口规则 TCP

  3. 在宝塔面板中进入软件商店,找到 Pure-Ftpd 并打开,切换到“配置修改”,搜索“Bind”,删除开头的“#”,将端口号 21 改为新端口号,保存(强烈建议将 TLS 项改为 2,即禁止 FTP 协议,仅允许 FTPS 协议)

  4. 切换到“服务”选项卡,点击“重启”

  5. 从防火墙和安全组移除 21 端口


MySQL (3306) 之阿里云云数据库 RDS MySQL 版

  1. 打开控制台 RDS 实例页,左侧菜单点击“白名单与安全组”,切换到“安全组”查看正在使用的安全组ID

  2. (若使用了安全组)打开控制台 ECS 首页,左侧菜单点击“安全组”,找到这个安全组,放行新的端口

  3. 打开控制台 RDS 实例页,左侧菜单点击“数据库连接”,点击“修改连接地址”,在弹出框中修改端口

  4. 从防火墙和安全组移除端口(确保没有其它实例正在使用此端口)


PolarDB (3306)

  1. 打开控制台 PolarDB 集群实例页,左侧菜单点击“集群白名单”,切换到“安全组”查看正在使用的安全组ID

  2. (若使用了安全组)打开控制台 ECS 首页,左侧菜单点击“安全组”,找到这个安全组,放行新的端口

  3. 打开控制台 PolarDB 集群实例,左侧菜单点击“基本信息”,点击“主地址”和“集群地址”的“配置”,在“网线信息”中点击“更多”更改端口

  4. 从防火墙和安全组移除端口(确保没有其它实例正在使用此端口)


MSSQL (1433) 之阿里云云数据库 RDS SQL Server 版

  1. 打开控制台 RDS 实例页,左侧菜单点击“白名单与安全组”,切换到“安全组”查看正在使用的安全组ID

  2. (若使用了安全组)打开控制台 ECS 首页,左侧菜单点击“安全组”,找到这个安全组,放行新的端口

  3. 打开控制台 RDS 实例页,左侧菜单点击“数据库连接”,点击“修改连接地址”,在弹出框中修改端口

  4. 从防火墙和安全组移除端口(确保没有其它实例正在使用此端口)


Redis (6379) 之阿里云云数据库 Redis 版

  1. 打开控制台 Redis 实例页,左侧菜单点击“白名单设置”,切换到“安全组”查看正在使用的安全组ID

  2. (若使用了安全组)打开控制台 ECS 首页,左侧菜单点击“安全组”,找到这个安全组,放行新的端口

  3. 打开控制台 Redis 实例页,在“连接信息”中点击“修改连接地址”,在弹出框中修改端口

  4. 从防火墙和安全组移除原端口(确保没有其它实例正在使用此端口)


宝塔面板 (8888)

  1. 在防火墙中放行新的端口号(如阿里云 ECS 的安全组)

  2. 进入宝塔面板,打开面板设置,切换到“安全设置”页,找到“面板端口”,点击“设置”

  3. 在防火墙和安全组中禁止原默认端口


IIS 管理服务(Web 部署)(8172)

  1. 在 Windows 防火墙中放行新端口:在“入站规则”中找到“Web 管理服务(HTTP 流量入站)”因其为预定义规则且复制也无法修改,所以按其设置新建一个,并指定新的端口。

  2. 如有其它防火墙或安全组也一并配置(如阿里云 ECS 的安全组)

  3. 打开 IIS 管理器 - 管理服务,右侧停止,左侧修改端口,右侧启动

  4. VS 中发布配置修改“服务器(E)”项添加端口

  5. 在防火墙和安全组中禁止原默认端口




xoyozo 7 个月前
577

SshNet 向一个已存在的文件 WriteAllText 的时候,是在原内容的基础上从第一个字节依次覆盖新内容。

因此,如果新内容的长度小于原内容,则最终的文件内容将是新内容与结尾部分原内容的结合。

若新内容的长度大于等于原内容,则不存在问题。

例:原文件内容:"abc",WriteAllText 的内容为:“de”,那么最终的文件内容是:“dec”。

xoyozo 3 年前
1,258

!! [FTP Server] Couldn't bind on x.x.x.x:21. Reason: WSAEADDRNOTAVAIL - Cannot assign requested address. Retrying in 1 seconds.

更改客户端连接的连接模式为:主动连接。

xoyozo 3 年前
3,059

Linux 设置服务开机自动启动的方式有好多种,这里介绍一下通过 chkconfig 命令添加脚本为开机自动启动的方法。

  1. 编写脚本 ossftp(这里以开机启动 ossftp 服务为例),脚本内容如下:

    #!/bin/sh
    #chkconfig: 2345 80 90
    #description: 开机自动启动的脚本程序
    
    # 开启 ossftp 服务
    /root/ossftp-1.2.0-linux-mac/start.sh &

    脚本第一行 “#!/bin/sh” 告诉系统使用的 shell;

    脚本第二行 “#chkconfig: 2345 80 90” 表示在 2/3/4/5 运行级别启动,启动序号(S80),关闭序号(K90);

    脚本第三行 表示的是服务的描述信息;

    要执行的文件(示例中的 /root/ossftp-1.2.0-linux-mac/start.sh)必须设置“可执行”权限,命令结尾的“&”可使进程持续。

    注意: 第二行和第三行必写,否则会出现如“服务 ossftp 不支持 chkconfig”这样的错误。

  2. 将写好的 ossftp 脚本移动到 /etc/rc.d/init.d/ 目录下

    image.png

  3. 给脚本赋可执行权限

    chmod +x /etc/rc.d/init.d/ossftp
  4. 添加脚本到开机自动启动项目中

    chkconfig --add ossftp
    chkconfig ossftp on

    执行命令“chkconfig --list”可列出开机启动的服务及当前的状态。

    image.png

到这里就设置完成了,我们只需要重启一下我们的服务器,就能看到我们配置的 ossftp 服务已经可以开机自动启动了。

转自 晓呆同学 3 年前
2,610