在VPS 搭建一个简单的 php+mysql 的小站。 lamp 集成环境可以更快搭建,这里采用每个模块自己安装。
CentOS 7 服务器基本配置
服务器初始安装系统之后,我们就可以利用 ssh 连接上服务器终端了。如果使用的是 windows 系统,可以使用 putty 之类的工具进行连接。我是 mac 系统,所以不需要这些。
你可以选择一直用密码登录,不过我更喜欢用 key 登录,这样可以免密码。
这里,我们都使用 root 最高权限的用户来进行管理。如果你使用的是普通用户,在执行大多数命令的时候都没有权限,需要在前面加上 sudo。
配置 key 秘钥登录服务器 (可跳过)
这一步配置可以跳过,并且只适合 mac 或者 linux 系统。windows 系统理论上是可以的,但是操作比较麻烦,并且和我下面说的不太一致。
配置服务器端
首先用密码登录服务器。
# 安装 vim 工具
yum install vim -y
# 新建 ssh 配置目录
mkdir ~/.ssh
# 创建自动秘钥登录配置文件
touch ~/.ssh/authorized_keys
# 编辑配置文件
vim ~/.ssh/authorized_keys
然后把自己的秘钥粘贴进去。
配置客户端
本地生成自己的秘钥等,我这里不说了,不清楚的可以自行搜索一下。
vim ~/.ssh/config
在里面添加如下内容
# 配置服务器简写
Host myserver
# 配置服务器IP
Hostname 100.100.100.100
# 配置服务器ssh连接端口,默认是22则不用配置,但建议修改默认端口号,避免被黑客扫描
Port 22
IdentityFile ~/.ssh/id_rsa_somekey
PreferredAuthentications publickey
# 配置默认登录用户
User root
主要~/.ssh/id_rsa_somekey的读写权限
#保证秘钥安全
chmod 400 ~/.ssh/id_rsa_somekey
好,经过上面客户端和服务端的配置之后,我们就可以在本地用非常简单的命令登录服务器了。
登录服务器命令如下:
ssh myserver
除了登录服务器变得异常简单,不用密码。我们使用 scp 传输文件也变得异常简单
# 传输单个文件到服务器
scp ~/.vimrc myserver:~
# 传输单个文件夹到服务器
scp -r ~/.vim myserver:~
更多 scp 命令请参考相关资料,这里不做过多延伸。
更新服务器系统以及软件,安装常用工具
一般来说,云服务器或者 vps 安装的系统镜像都不是最新的,所以我们连接上服务器之后,必须尽快更新服务器的系统以及软件,这样可以更好的保障我们的服务器系统安全。
服务器系统以及软件升级命令
yum -y update
CentOS 系列的服务器系统有一个毛病,就是官方自带的源的软件比较古老,并且很多的软件都没有。因为他们的首要任务是保证服务器的稳定,而不是追求最新。但是太过于保守了,一般来说,我们会给服务器添加一个 epel-release 这个源。这个源里包含了例如 nginx 之类的我们需要的软件,使用起来比较方便。
安装 epel-release
yum install epel-release -y
通过上面的命令进行安装。确认是否安装成功,可以用下面的命令检测一下
yum search nginx
如果搜索的结果包含下面的这行内容,就表示安装成功了,然后我们就能愉快的安装我们需要的软件了。
nginx.x86_64 : A high performance web server and reverse proxy server
我昨天在配置的时候发现不能搜索出来,但是确实是安装上了。后来检查了一下 /etc/yum.repos.d/epel.repo 文件,发现里面配置不对,修改了一下就好。
主要是 epel 段落中的 enabled 值默认设置为 0 了,我们将值改成 1 就可以了。
PS:你应该没这个问题。如果遇到了问题,可以看下这里。如果是其他问题,请自行搜索解决。
安装服务器常用软件
前面我们登录上服务器之后,第一件事情就是安装了 vim 编辑器。但我们在工作中,可能会需要各种各样的软件,例如我经常使用的如下:
# wget 下载工具
yum install wget
# 统一各种格式压缩文件的工具
yum install atool
# tmux 好用的终端工具(如何使用请自行搜索)
yum install tmux
# zsh 最好用的终端
yum install zsh
# 替代 top 命令的好工具
yum install htop
# git 代码版本管理工具
yum install git
上面这些常用软件可以根据你自己的需求进行选择安装。不是都必须安装的。
什么 zsh 之类的配置,可以使用 oh-my-zsh 这个配置工具,具体搜索一下。网上教程很多。不是必须的。
配置 lnmp 服务器环境
好,准备工作差不多了,下面正式开始。
安装 nginx
如果你是直接跳到这段看的,请确保你已经运行过下面的命令安装过 epel-release 。如果不是,请跳过这条命令。
yum install epel-release -y
清理默认apache:
# 删除系统自带的软件包
yum remove httpd* php*
开始安装:
# 安装 nginx
yum install nginx -y
# 启动 nginx
systemctl start nginx
# 将 nginx 设置为开机启动
systemctl enable nginx
好,通过上面三条命令执行之后,应该可以在浏览器中直接用服务器IP可以访问到 nginx 默认的首页了。
安装 php
nginx 安装好之后,我们就需要来安装我们的 php 环境了。
执行下面的命令升级软件仓库
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
其他系统:
# Centos 5.X
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
# CentOs 6.x
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
# CentOs 7.X
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
执行下面的命令删除php(卸载的时候关注下卸载了那些包)
yum remove php-common
安装 php
执行下面的命令,安装 PHP 已经它的常用的库 php5.6 (php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-mysql php56w-intl php56w-mbstring )
yum install -y php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring php56w-fpm
注意:
yum install php php-mysql php-fpm php-gd php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-xmlrpc -y
默认安装可能是其他版本5.4等注:如果想更换到php5.5或5.4版本, 直接把上面的56w换成55w或者54w就可以了
安装7.2:yum install php72w php72w-opcache php72w-xml php72w-pdo php72w-mbstring php72w-gd php72w-pear php72w-mcrypt php72w-devel php72w-intl php72w-pear php72w-fpm
配置 php
安装完成之后,我们需要对它进行一些配置。首先,我们打开配置文件:
vim /etc/php.ini
打开文件后,我们找到 cgi.fix_pathinfo 并把它的值设置为 0
大概在 763 行
为何要关闭参考(PHP CGI 中 fix_pathinfo 引起的安全隐患):https://blog.csdn.net/neubuffer/article/details/16901023
配置好 php.ini 文件之后,
好,这样,我们就已经安装并且配置好了。下面我们可以启动了。
# 启动PHP
systemctl start php-fpm
# 将它设置为开机启动
systemctl enable php-fpm
配置 nginx 使其支持 php
好,我们在安装好 nginx 和 php 之后,他们还不能协同作战,我们需要对 nginx 进行一些配置才可以。
首先,我们打开 nginx 的配置文件,添加默认网站
rm -rf /etc/nginx/conf.d/*
vi /etc/nginx/conf.d/default.conf
编辑default.conf文件
server{
listen 80;
server_name testdomain.com;
index index.php index.html index.htm;
root /var/www;
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
说明: /var/www 为web根目录, location / … 为url的rewrite,隐藏 index.php
添加测试页面/var/www/index.php
<?php
echo "test index";
重新修改php-fpm用户:
查看nginx的用户:vi /etc/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
nginx使用的用户是nginx用户
查看php-fpm的用户:
# ps -ef |grep php
root 17214 1 0 13:53 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf)
apache 17215 17214 0 13:53 ? 00:00:00 php-fpm: pool www
apache 17216 17214 0 13:53 ? 00:00:00 php-fpm: pool www
apache 17217 17214 0 13:53 ? 00:00:00 php-fpm: pool www
apache 17218 17214 0 13:53 ? 00:00:00 php-fpm: pool www
apache 17219 17214 0 13:53 ? 00:00:00 php-fpm: pool www
apache 17220 17214 0 13:53 ? 00:00:00 php-fpm: pool www
root 17528 17155 0 14:06 pts/0 00:00:00 grep --color=auto php
如上,php-fpm进程的用户为apache,需求修改php-fpm用户和nginx用户相同
vi /etc/php-fpm.d/www.conf
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
user,group 修改为nginx
如果user,group在默认的 # vi /etc/php-fpm.conf 文件中的话,对应改掉就可以,本系统的在www文件中
修改web目录权限
chown nginx:nginx /var/www/ -R #设置目录所有者
chmod 700 /var/www -R #设置目录权限
好,经过这样的简单配置,我们的任务就已经完成了。测试
# 重启 nginx 服务
systemctl restart nginx
# 重启 php-fpm 服务
systemctl restart php-fpm
查看域名:testdomain.com 会返回 test index 的测试页面。nginx + php 配置成功。
安装 MySQL
yum安装
安装最新的mysql
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
使用mysql的yum repo
mysql yum repo https://dev.mysql.com/downloads/repo/yum/
运行repo命令:
sudo rpm -Uvh mysql80-community-release-el7-1.noarch.rpm
repo 安装参考https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
安装mysql
sudo yum install mysql-community-server
启动mysql
sudo service mysqld start
参考文档:https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
查看临时密码:
sudo grep 'temporary password' /var/log/mysqld.log
修改root密码(1)
mysql -uroot -p
输入Enter password: 上面的临时密码
修改root密码(2)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass4!';
配置小结
总体来说,整个配置过程还是非常顺畅的,和 lamp 环境有一定的差异,但是通过查找相关的资料,还是可以很快的解决问题的。
其他包括虚拟主机的配置等等,大家可以搜索 nginx 配置虚拟主机 关键词,来进行相关资料的查找。
本文链接:https://blog.csdn.net/asdcls/article/details/85269870
参考链接:
https://blog.csdn.net/fungleo/article/details/78789932