Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PHP最佳实践之上线准备 #12

Open
xx19941215 opened this issue Aug 1, 2017 · 0 comments
Open

PHP最佳实践之上线准备 #12

xx19941215 opened this issue Aug 1, 2017 · 0 comments

Comments

@xx19941215
Copy link
Owner

xx19941215 commented Aug 1, 2017

配置

1).如果你使用的不是Paas,那么先配置VPS或者专用的服务器才能运行PHP应用。本文假设你会使用vim或者nano编辑器。
2).我们选择nginx服务器来作为我们的web服务器。

首次登录

ssh root@123.456.78.90

注意要把ip换成你自己的VPS的IP。
13.png

我这里使用的是vultr的VPS,这个VPS服务商是按小时收费的。这意味着,架设一台VPS的成本几乎为零。你可以点击这里注册

升级软件

apt-get update
apt-get upgrade

这一步很重要,因为这能保证系统中默认的软件安装了最新的更新和安全修补。

14.png

15.png

输入y然后敲回车继续

非根用户

现在你的新服务器还是不太安全,因为我们必须要避免使用根用户。我们可以创建一个叫xiao的非根用户。密码必填,其他信息不是必填项,敲回车继续。

adduser xiao

16.png

接下来把他加入sudo用户组,使他拥有sudo权限。

usermod -G sudo xiao

17.png

SSH 密钥对认证

你在本地想访问VPS的时候推荐你使用密钥认证这种方式。简单来说,就是我们创建一对密钥,其中一个是私钥保存在本地设备中,另一个是公钥,传到你的VPS中,之所以叫做密钥对,是因为使用公钥加密的 消息只能使用对应的私钥解密。
使用SSH连接远程设备的时候,远程设备会随机创建一个消息,使用公钥加密之后把密文发送给本地设备,本地设备收到密文之后使用私钥解密,然后把解密后的消息发送给远程的服务器,远程的服务器验证了解密之后的消息,赋予你访问的权限。

ssh-keygen
scp ~/.ssh/id_rsa.pub xiao@123.456.78.90:

第一个命令执行成功你的~/.ssh 目录会有如下文件
18.png
然后使用scp上传到远程服务器
19.png

然后登陆你的VPS确认这个~/.ssh/目录是否存在。

20.png

如果不存在则执行下面的命令

mkdir ~/.ssh
touch ~/.ssh/authorized_keys

这个文件是一系列允许登陆这台VPS的公钥。然后将上传的公钥复制到这个文件中

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

现在使用下面的命令修改一下目录权限。

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

21.png

禁止密码和根用户登陆

修改/etc/ssh/sshd_config文件。将PasswordAuthentication设置为 no,然后将PermitRootLogin设置为no。
我是用的是vim,你可以使用你会的编辑器。

23.png

24.png

25.png

sudo service ssh restart

重启ssh使修改生效。
26.png

至此为止,我们的PHP部署服务器已经准备好,下一篇将会介绍PHP-FPM安装和配置,包括全局配置和进程池配置。

专题系列

PHP专题系列目录地址:https://github.com/xx19941215/webBlog
PHP专题系列预计写二十篇左右,主要总结我们日常PHP开发中容易忽略的基础知识和现代PHP开发中关于规范、部署、优化的一些实战性建议,同时还有对Javascript语言特点的深入研究。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant