PHP 服务器搭建全攻略
写在前面
本次主要记录,我作为一个PHP后端开发者如果从零部署一台阿里云服务器到生产的。
另外,本文重点是记录服务器(系统:CentOS 7.*)配置相关操作,其他操作都会简单介绍一下。
主要步骤
- 阿里云平台购买服务器(ECS)和 域名(略)
- 阿里云服务器管理后台开放端口
- 阿里云域名解析
- 一键安装 LNMP
- 开放服务器端口(iptables)
- 添加一个WEB服务
- 创建 MySQL 远程登录账号
- Git 常规操作
1.阿里云平台购买服务器(ECS)和 域名(略)
2.阿里云服务器管理后台开放端口
国内很多云服务供应商,目前我知道的(天翼云,百度云,阿里云)都需要在云平台事先开通服务器需要的指定端口,服务器才能生效。
主要步骤
- 登录阿里云管理后台
- 进入示例管理
- 在指定服务器后面进入网络和安全组
- 配置规则即可,主要开放端口
常用的端口介绍
端口 | 介绍 |
---|---|
22 | SSH 端口远程登录服务器 |
80 | http 默认端口,国内服务器需要备案才能使用 |
443 | https 默认端口 |
3306 | 数据库默认端口 |
注意:如果想要安全,其实可以为不同服务配置非默认端口,降低服务器被攻击的风险,不过需要修改对应服务的配置文件,这里不详细介绍。
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 screen 或 apt-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 wget 或 apt-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 "注释"
- 推送代码
git push (默认推送到master)
git push origin dev (推送到指定分支dev)
- 获取最新代码
git pull origin master
- 切换分支
git checkout dev (切换到 dev 分支)
- 删除已经 add 的文件
git rm --cached "文件路径” // 不会删除物理文件,仅仅删除git缓存
git rm --f "文件路径" // 不仅删除git 缓存而且删除物理文件
- 恢复已删除文件
git reset --hard origin/master
git pull origin master
- 如果强制git clone 到一个 非空文件夹中
1)找一个临时文件夹:tmp/ git clone 到其中
2)复制 tmp/ 下的 .git 文件夹到 你想要的非空文件夹当中
3)git reset --hard origin/master 选择你自己需要的分支
4)git pull origin master
- 创建分支
// 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/";