zoukankan      html  css  js  c++  java
  • PHP部署调优-服务器初始化配置

    主机

    PHP 应用开发好了之后,还需要部署到远程主机上,才能让用户访问我们提供的服务。一般来说,目前市场上提供的主机有四种:共享服务器、虚拟私有服务器(VPS)、专用服务器和 PaaS。每种主机适用场景不同,相应的价格差距也很大。

    共享服务器

    这种最便宜,一般来说这种适用于非开发者部署网站,比如非程序员出生的站长,部署 WordPress、Discuz 之类的 CMS 网站,不需要懂代码,也不需要配置服务器环境,只需通过 Web 界面操作即可,这种类型的主机资源由很多人共享,存放在不同类目,从安全和性能上来说都很差,而且不允许用户远程登录,支持的软件和扩展有限,不建议开发者使用这种类型的主机。市面上常见的香港主机、美国主机就属于这种服务器。

    虚拟私有服务器

    虚拟私有服务器就是我们常说的 VPS,这种类型的主机不是物理上的独立主机,而是逻辑上的独立主机,由一些列系统资源组成,分布在多台服务器中,但是拥有自己独立的文件系统、根用户、系统进程和 IP 地址,内存、CPU和带宽是固定的,所以感觉上就是一台独立的主机。我们可以 SSH 远程登录,安装自己需要的软件,对服务器配置进行调优和修改,所以拥有更多的自主性,当然价格也要贵一些。典型代表有 Linode 等。

    专用服务器

    专用服务器是机架式设备,由主机商代你安装、运行和维护,我们可以根据自己制定的规格配置专用服务器。专用服务器是真实的物理设备,安装、配置和维护成本较高,但是能提供更好的性能,一般大公司如 BAT 都会部署这种类型主机。

    PaaS

    使用云计算提供的平台即服务(PaaS)能快速发布 PHP 应用,与虚拟私有服务器和专用服务器不同,我们无需管理 PaaS,只需登录 PaaS 提供商的控制面板,点击按钮即可。常见的 PaaS 如下:
    使用云计算提供的平台即服务(PaaS)能快速发布 PHP 应用,与虚拟私有服务器和专用服务器不同,我们无需管理 PaaS,只需登录 PaaS 提供商的控制面板,点击按钮即可。常见的 PaaS 如下:

    • Amazon AWS
    • 阿里云
    • 百度云
    • 腾讯云
    • Google App Engine
    • Microsoft Azure

    各个云计算提供商的价格有所不同,但基本和 VPS 持平。

    选择主机方案

    我们要根据自己的需求选择合适的主机方案,对于中小型 PHP 应用,使用 VPS 或 PaaS 是最佳选择,目前来说,云计算服务越来越发达,提供的功能越来越丰富,PaaS 是最佳选择。国内的话就阿里云 ECS 了。

    设置服务器

    首次登录

    首先,我们需要登录新买的服务器,在本地设备中打开终端,执行 ssh 命令,登录服务器:

    ssh root@your_server_ip_address
    

    这个命令可能会让你确认新服务器的可靠性,输入 yes 并回车即可。

    接下来需要输入根用户的密码,一般购买服务器后服务器提供商会给你根用户的密码,输入该密码登录即可。

    登录之后,我们可以升级下操作系统的软件:

    # Ubuntu
    apt-get update;
    apt-get upgrade;
    
    # CentOS
    yum update
    

    新增用户

    我们要创建一个非根用户执行以后的日常操作以提高系统安全性,由于根用户拥有一切权限,所以我们应该尽量避免登录该用户。

    下面我们以 Ubuntu 系统为例,演示如何创建新用户 deploy

    # 创建用户
    adduser deploy
    # 让用户拥有sudo权限
    usermod -a -G sudo deploy
    # 设置用户密码
    passwd deploy
    

    对于 CentOS 用户对应操作如下:

    # 创建用户
    adduser deploy
    # 让用户拥有sudo权限
    usermod -a -G wheel deploy
    # 设置用户密码
    passwd deploy
    

    SSH 密钥对认证

    创建完新用户后,在本地设备以如下方式登录服务器:

    ssh deploy@your_server_ip_address
    

    这个命令需要输入该用户密码后才能登录,我们可以禁用密码登录,以提高系统安全性,密码认证有漏洞,会遭受暴力攻击。对此,我们的解决方案就是使用密钥对认证。

    密钥对认证是个复杂的话题,简单来说,我们在本地设备中创建一对「密钥」,其中一个是私钥(保存在本地),另一个是公钥(传到远程服务器),之所以叫密钥对,是因为使用公钥加密的信息只能使用私钥解密。

    使用 SSH 密钥对认证方式登录远程服务器时,远程服务器会随机创建一个消息,使用公钥加密,然后把密文发送给本地设备,本地设备收到密文后使用私钥解密,然后把解密后的消息发送给远程服务器,远程服务器验证解密消息后,再授予访问远程服务器的权限。

    需要指出的是,如果是多台电脑需要登录远程服务器,这或许不是最好的方式,因为需要在每台电脑中生成 SSH 密钥对,然后再把每个密钥对中的公钥复制到远程服务器中。这种情况下,最好还是使用安全的密码进行登录。不过,如果只有一台本地电脑访问远程服务器,SSH 密钥对认证是最好的方式。

    生成 SSH 密钥对的方式是使用以下指令:

    ssh-keygen
    

    然后按照屏幕上显示的内容,按照提示输入所需要的信息。这个命令会在本地创建两个文件:~/.ssh/id_rsa.pub(公钥)和 ~/.ssh/id_rsa(私钥)。私钥应该保存在本地电脑中,而且要保密,公钥必须复制到服务器中,我们可以使用 scp (安全复制)命令复制公钥:

    scp ~/.ssh/id_rsa.pub deploy@your_server_ip_address:
    

    注:一定要在末尾加上:符号,这会把公钥复制到远程服务器中 deploy 用户的家目录。

    接下来,以 deploy 用户的身份登录远程服务器,登录后,确认 ~/.ssh 目录是否存在,如果不存在,需要执行下面的命令手动创建:

    mkdir ~/.ssh
    

    然后执行下面的命令创建 ~/.ssh/authorized_keys 文件:

    touch ~/.ssh/authorized_keys
    

    这个文件的内容是一系列允许登录这台远程服务器的公钥。执行下面的命令,把刚上传的公钥添加到 ~/.ssh/authorized_keys 文件中:

    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    

    最后,我们需要修改几个目录和文件的权限,只让 deploy 用户访问 ~/.ssh 目录和 ~/.ssh/authorized_keys 文件:

    chown -R deploy:deploy ~/.ssh
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

    至此,所有工作完成,你可以在本地通过 SSH 密钥对认证登录到这条远程服务器了。

    禁用密码,禁止根用户登录

    下面我们要禁止所有用户通过密码登录,还要禁止根用户登录。

    登录到远程服务器后,打开 SSH 配置文件 /etc/ssh/sshd_config,找到 PasswordAuthentication 设置,将其改为 no;然后,找到 PermitRootLogin 设置,将其改为 no,之后保存改动,执行下面的命令重启 SSH 服务,让改动生效:

    # Ubuntu
    sudo service ssh restart
    
    # CentOS
    sudo systemctl restart sshd.service
    

    服务器的安全是长久任务,需要长期关注,除了以上配置外,还建议安装防火墙。Ubuntu 用户可以使用 UFW,CentOS 用户可以使用 iptables

  • 相关阅读:
    segmentation fault(core dumped)
    (LIS LCS 例题)Max Sum Advanced Fruits Super Jumping! Jumping! Jumping!
    几种数学公式(环排列 母函数 唯一分解定理 卡特兰数 默慈金数 贝尔数 那罗延数)
    map set 详解
    算法录 之 二分和三分
    LIS 最长上升子序列 LCS 最长公共子序列 模板
    JAVA 大数据 例题
    Java 实现大数算法
    7 21 第一次团队赛——————写给队友
    离散化+unique()+二分查找
  • 原文地址:https://www.cnblogs.com/stringarray/p/12912739.html
Copyright © 2011-2022 走看看