PHP 服务器搭建全攻略

写在前面

本次主要记录,我作为一个PHP后端开发者如果从零部署一台阿里云服务器到生产的。

另外,本文重点是记录服务器(系统:CentOS 7.*)配置相关操作,其他操作都会简单介绍一下。

主要步骤

  1. 阿里云平台购买服务器(ECS)和 域名(略)
  2. 阿里云服务器管理后台开放端口
  3. 阿里云域名解析
  4. 一键安装 LNMP
  5. 开放服务器端口(iptables)
  6. 添加一个WEB服务
  7. 创建 MySQL 远程登录账号
  8. Git 常规操作

1.阿里云平台购买服务器(ECS)和 域名(略)

购买地址

2.阿里云服务器管理后台开放端口

国内很多云服务供应商,目前我知道的(天翼云,百度云,阿里云)都需要在云平台事先开通服务器需要的指定端口,服务器才能生效。

主要步骤

  1. 登录阿里云管理后台
  2. 进入示例管理
  3. 在指定服务器后面进入网络和安全组
  4. 配置规则即可,主要开放端口

常用的端口介绍

端口 介绍
22 SSH 端口远程登录服务器
80 http 默认端口,国内服务器需要备案才能使用
443 https 默认端口
3306 数据库默认端口

注意:如果想要安全,其实可以为不同服务配置非默认端口,降低服务器被攻击的风险,不过需要修改对应服务的配置文件,这里不详细介绍。

3. 阿里云域名解析

阿里云域名解析也很简单,顾名思义:通过域名指向服务器,以达到域名可以访问服务器的效果。

步骤:

  1. 登录阿里云管理后台
  2. 在域名管理,在指定域名选择域名解析
  3. 根据提示选择指定解析方式(都有详细说明)

4. 一键安装 LNMP

主要使用 LNMP一键安装,这套东西我用了很久了,其实他主要是将 LNMP 必要组建安装,写成 Shell 脚本一次性安装(主要包括:Nginx,PHP,MySQL,FTP,Git等),并配有一些命令操作,但是之后你完全可以根据你自己需要修改各个服务的配置文件,不会受任何限制。

lnmp restart nginx # 重启 nginx 操作

官方安装教程地址

https://lnmp.org/install.html

安装步骤:

  • 使用putty或类似的SSH工具登陆VPS或服务器;
// 登陆后运行
screen -S lnmp
如果提示screen: command not found 命令不存在可以执行:
yum install screenapt-get install screen安装
  • 下载并安装LNMP一键安装包:
// 安装地址
wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp
// wget: command not found
用yum install wgetapt-get install wget 命令安装。

5.开放服务器端口(iptables)

之前我们已经在阿里云平台上开放了需要使用的端口,但是服务器防火墙也是需要开放对应的端口,双向控制端口的权限提高互联网服务的安全性。

CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。

1、关闭firewall:

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld.service

2、安装iptables防火墙

yum install iptables-services -y

3.启动设置防火墙

# systemctl enable iptables
# systemctl start iptables

4.查看防火墙状态

// 查看启动状态
systemctl status iptables
// 查看已经开发和禁用的端口
iptables -L -n 

5编辑防火墙,增加端口

vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
:wq! #保存退出

6.重启配置,重启服务

systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动

6.添加一个WEB服务

添加域名服务

lnmp vhost add
// 输入刚刚域名解析的域名例如:www.yourdomain.com
// 后面会提示:提示其他一些配置,如果第一次选择默认即可。

一些我需要转移文件的操作

//压缩 解压 文件
tar命令
// 解包
tar zxvf FileName.tar
// 打包
tar czvf FileName.tar DirName
// 删除文件
rm test.php
// 删除文件夹
rm -rf dir
// 把 test1/ 文件夹下所有内容拷贝到 test2/ 中去
cp -r test1/* test2/
// 修改文件夹 权限
chmod -R 777 /your/path/
// 修改文件夹 用户组
chown -R root:root /your/path/

7.lnmp 配置文件

配置文件: 修改网站nginx 配置

cd /usr/local/nginx/conf/vhost/

重写配置文件: 其中有默认的各种重写

cd /usr/local/nginx/conf/rewrite/

同一套代码对应多服务器

// 在指定服务器配置文件中如下修改
server_name www.lnfilm.cn www.noasis.cn;

引入重写文件

include lnweb.conf;
# URL 重写规则:去掉 index.php
if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
    rewrite (.*) /index.php;
}

注意:如果你按照上面配置了以后,你就可以在你添加 WEB 服务的根目录下创建 index.php 文件。

<?php 
phpinfo();

访问:http://你的域名/index.php 即可访问

8.创建 MySQL 远程登录账号

登录Mysql

// 登录数据库    
mysql -uroot -p
// 输入密码
****
// 创建用户

创建远程用户

// 创建一个用户
CREATE user remote@'localhost' IDENTIFIED BY 'remote';
// 给此账号远程登录权限
GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'remote' WITH GRANT OPTION;
// 指定IP 指定数据库
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'IP' IDENTIFIED BY '密码' WITH GRANT OPTION;
// 授权数据库的多张表
GRANT ALL PRIVILEGES ON db_zhuangweionline.* to 'zwonline'@'%' identified by '123' WITH GRANT OPTION;

FLUSH PRIVILEGES;

关闭远程用户:删掉即可

DROP user 'remote'@'%';
// 更新操作
FLUSH PRIVILEGES;

注意:如果你使用例如 Navicate 软件远程登录,如果忽略我上面介绍的端口开放操作,远程链接数据库依旧会失败。

9.我常用的 Git 操作

1.克隆代码

git clone 地址 
git clone 地址 -b dev (dev 是分支名字)

2.添加文件

git add . // 添加所有文件
git add "文件路径" // 添加指定文件

3.提交请求

git commit -am "注释"
  1. 推送代码
git push (默认推送到master)		
git push origin dev (推送到指定分支dev)
  1. 获取最新代码
git pull origin master
  1. 切换分支
git checkout dev (切换到 dev 分支)
  1. 删除已经 add 的文件
git rm --cached "文件路径” // 不会删除物理文件,仅仅删除git缓存
git rm --f "文件路径"  // 不仅删除git 缓存而且删除物理文件
  1. 恢复已删除文件
git reset --hard origin/master
git pull origin master
  1. 如果强制git clone 到一个 非空文件夹中
1)找一个临时文件夹:tmp/   git clone 到其中
2)复制 tmp/ 下的 .git 文件夹到 你想要的非空文件夹当中
3)git reset --hard origin/master  选择你自己需要的分支
4)git pull origin master
  1. 创建分支
// 1)创建分支
git branch V2
// 2)将分支同步到服务器
git push origin V2
// 3)切换分支
git checkout V2
// 4)修改V2分支上的文件
// 5)提交本地代码:
git commit -am “V2修改”
// 6)提交到服务器
git push origin V2
// 7)讲V2分支合并到主干上
git checkout master
git merge V2
git push

10.open_basedir restriction in effect 错误

在将数据库参数引用拿出到服务器之外时,会遇到这个错误。需要修改 basedir 操作如下

cd /usr/local/nginx/conf/
vi fastcgi.conf
// 修改如下:
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/:/home/www/";
Last Updated: 4/14/2020, 5:33:12 PM