PHP 服务器主机选择及初始化配置 —— 新增用户及密钥对认证 | 部署调优 | 现代 PHP 新特性与最佳实践


本站和网页 https://laravelacademy.org/post/7508 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

PHP 服务器主机选择及初始化配置 —— 新增用户及密钥对认证 | 部署调优 | 现代 PHP 新特性与最佳实践
Laravel 学院
文档
Laravel 8.x 中文文档
Laravel 7.x 中文文档
Laravel 6.x 中文文档
Laravel 5.8 中文文档
Laravel 5.7 中文文档
Laravel 5.6 中文文档
Laravel 5.5 中文文档
Laravel 5.4 中文文档
Laravel 5.3 中文文档
Laravel 5.2 中文文档
Laravel 5.1 中文文档
Lumen 中文文档
全栈教程
PHP 全栈工程师指南
PHP 入门到实战
Laravel 入门到精通
Vue.js 入门到实战
玩转 PhpStorm 教程
Laravel 博客入门项目
Laravel 微信小程序项目
Laravel 前后端分离项目
Swoole 入门到实战
Eloquent 性能优化实战
Redis 高性能实战系列
Laravel 新版本特性
PHP 新特性与最佳实践
Golang
Go 入门教程
Go Web 编程
Gin 使用教程
微服务开发
内功修炼
数据结构与算法
网络协议
微服务从入门到实践
高性能 MySQL 实战
高性能 Redis 实战
Laravel 消息队列实战
Laravel 从学徒到工匠
PHP 设计模式系列
名企面试指南
资源库
Laravel 资源大全
Laravel 开源项目
Laravel 扩展包
Laravel 资源下载
更多
博客 & 新闻
问答 & 讨论
Leetcode 题解
学院君读书笔记系列
关于 Laravel 学院
Laravel 互助学习群
Golang 互助学习群
更多
Laravel 中文文档
Laravel 全栈教程
Laravel 学习路径
Go 入门教程
程序员内功修炼
博客
问答
搜索
注册
登录
Info
Content
章节导航
现代 PHP 新特性与最佳实践
目录索引
新特性
9篇文章
现代 PHP 新特性系列(一) —— 命名空间
现代 PHP 新特性系列(二) —— 善用接口
现代 PHP 新特性系列(三) —— Trait 概览
现代 PHP 新特性系列(四) —— 生成器的创建和使用
现代 PHP 新特性系列(五) —— 闭包和匿名函数
现代 PHP 新特性系列(六) —— Zend Opcache
现代 PHP 新特性系列(七) —— 内置的 HTTP 服务器
PHP 8 新特性系列 —— JIT 对 PHP 应用性能的影响
PHP 8 所有新特性一览和代码示例
最佳实践
11篇文章
漫谈 PHP 组件、框架、Composer 那些事
聊聊 PHP 私有组件以及如何创建自己的 PHP 组件
PHP 安全三板斧:过滤、验证和转义之过滤篇 & Laravel底层SQL注入规避
PHP 安全三板斧:过滤、验证和转义之验证篇 & Laravel底层字段验证实现
PHP 安全三板斧:过滤、验证和转义之转义篇 & Blade 模板引擎避免 XSS 攻击原理探究
PHP 开发者如何做好密码保护 & Laravel 底层密码存储和验证实现
PHP 日期、时间和时区处理 API 及组件
PHP 数据库统一处理 API —— PDO 扩展及其在 Laravel 底层的使用
PHP 多字节字符串处理函数及字符编码
PHP 统一资源处理 API —— 流(Stream)的概述与使用详解
深入探讨 PHP 错误异常处理机制及 Laravel 框架底层的相应实现
部署调优
4篇文章
PHP 服务器主机选择及初始化配置 —— 新增用户及密钥对认证
在服务器上对 PHP-FPM 和 Nginx 进行安装配置详解
php.ini 配置调优 —— 让 PHP 应用性能维持在更高水平
使用现代化工具 Capistrano 自动部署 PHP 应用代码到生产环境
番外篇
2篇文章
在 Windows 下安装部署 PHP 7.0 本地开发环境
PHP 7.0 与 PHP 5.6 下 Laravel 博客应用性能对比分析
图书
现代 PHP 新特性与最佳实践
部署调优
PHP 服务器主机选择及初始化配置 —— 新增用户及密钥对认证
PHP 服务器主机选择及初始化配置 —— 新增用户及密钥对认证
由 学院君 创建于5年前, 最后更新于 2年前
版本号 #3
13284 views
13 likes
1 collects
主机
PHP 应用开发好了之后,还需要部署到远程主机上,才能让用户访问我们提供的服务。一般来说,目前市场上提供的主机有四种:共享服务器、虚拟私有服务器(VPS)、专用服务器和 PaaS。每种主机适用场景不同,相应的价格差距也很大。
共享服务器
这种最便宜,一般来说这种适用于非开发者部署网站,比如非程序员出生的站长,部署 WordPress、Discuz 之类的 CMS 网站,不需要懂代码,也不需要配置服务器环境,只需通过 Web 界面操作即可,这种类型的主机资源由很多人共享,存放在不同类目,从安全和性能上来说都很差,而且不允许用户远程登录,支持的软件和扩展有限,不建议开发者使用这种类型的主机。市面上常见的香港主机、美国主机就属于这种服务器。
虚拟私有服务器
虚拟私有服务器就是我们常说的 VPS,这种类型的主机不是物理上的独立主机,而是逻辑上的独立主机,由一些列系统资源组成,分布在多台服务器中,但是拥有自己独立的文件系统、根用户、系统进程和 IP 地址,内存、CPU和带宽是固定的,所以感觉上就是一台独立的主机。我们可以 SSH 远程登录,安装自己需要的软件,对服务器配置进行调优和修改,所以拥有更多的自主性,当然价格也要贵一些。典型代表有 Linode 等。
专用服务器
专用服务器是机架式设备,由主机商代你安装、运行和维护,我们可以根据自己制定的规格配置专用服务器。专用服务器是真实的物理设备,安装、配置和维护成本较高,但是能提供更好的性能,一般大公司如 BAT 都会部署这种类型主机。
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。
登录
SSH
服务器
PHP
部署
安全
主机
密钥
点赞
取消点赞
收藏
取消收藏
赞赏
分享到以下平台:
<< 上一篇:
深入探讨 PHP 错误异常处理机制及 Laravel 框架底层的相应实现
>> 下一篇:
在服务器上对 PHP-FPM 和 Nginx 进行安装配置详解
2 条评论
#1
yum
评论于 5年前
正在删除评论...
ssh-copy-id 可以直接将key写到远程机器的 ~/ .ssh/authorized_key.文件中
#2
机制的魔王卷子
评论于 5年前
正在删除评论...
centos7已经使用firewalld 了。
登录后即可添加评论
升级为学院君订阅用户(新年优惠🎁)
内容导航
主机
共享服务器
虚拟私有服务器
专用服务器
PaaS
选择主机方案
设置服务器
首次登录
新增用户
SSH 密钥对认证
禁用密码,禁止根用户登录
相关推荐
现代 PHP 新特性系列(七) —— 内置的 HTTP 服务器
现代 PHP 新特性与最佳实践
新特性
PHP 安全三板斧:过滤、验证和转义之过滤篇 & Laravel底层SQL注入规避
现代 PHP 新特性与最佳实践
最佳实践
PHP 安全三板斧:过滤、验证和转义之验证篇 & Laravel底层字段验证实现
现代 PHP 新特性与最佳实践
最佳实践
PHP 开发者如何做好密码保护 & Laravel 底层密码存储和验证实现
现代 PHP 新特性与最佳实践
最佳实践
在服务器上对 PHP-FPM 和 Nginx 进行安装配置详解
现代 PHP 新特性与最佳实践
部署调优
回到顶部
2022 基于 Laravel 6 构建
关于学院
订阅服务
友情链接
站点地图
本站 CDN 加速服务由又拍云赞助