1. LNMP环境
L linux
N Nginx
M MySql | mariadb
P PHP
web01 10.0.0.7
web02 10.0.0.8
wbe03 10.0.0.9
db01
nfs
2. 配置过程
2.1 安装配置 mariadb (在数据库服务器上)
yum install -y mariadb
启动数据库服务
systemctl start mariadb
设置开机启动
systemctl enable mariadb
设置数据库密码
mysqladmin password 密码
设置开机启动
systemctl enable mariadb
查看启动状态
ps -ef | grep mariadb
进入数据库
2.2 安装Nginx 官方源安装
第一步: 更新yum源
vim /etc/yum.repos.d/nginx.repo
第二步:复制一下信息到nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
第三步:检查Nginx 启动状态
systemctl start nginx 启动Nginx
systemctl enable nginx 设置开机启动
ps -ef | grep nginx 检查nginx 进程
root 7824 1 0 20:25 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www 7825 7824 0 20:25 ? 00:00:00 nginx: worker process
root 7853 7662 0 20:26 pts/0 00:00:00 grep --color=auto nginx
2.3 安装php
PHP: 安装部署
yum remove php-mysql php php-fpm php-common
解决yum安装冲突问题 (与mysql)
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
更改yum源 (防止无法下载安装包)
yum install -y php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
利用yum安装以上软件(如果不确定是否全部安装上,就再装一遍)
注意: 安装完PHP之后要启动php-fpm 服务
systemctl start php-fpm 启动服务器
systemctl enable php-fpm 设置开机启动
netstat -lntup | grep 9000 检查进程是否启动正常(php-fpm服务端口号为9000)
3. 代码上线前的配置
Nginx 与PHP 进行链接
为什么要进行连接?
静态请求
用户 ------------> NGINX
用户 <------------ NGINX (如果可以处理)
动态请求 无法处理
用户 -----------> NGINX (媒体资源类型里边未找到) ----> fastcgi_pass----> php-fpm进程 PHP程序
如果可以处理
php(处理结果)-----> nginx -----> 用户
如果不能处理,例如需要连接数据库进行处理
PHP程序(php自身不能处理)------->mysql服务器
mysql服务器 ---->PHP程序----> Nginx ----> 用户
NGINX如何将动态请求交给PHP?fastcgi_pass ?
使用一个 fastcgi_pass 接口。两个程序之间的接口
而再PHP程序这边,也需要一个专门接受请求的程序,就是php-fpm 进程,配置文件是 php-fpm.conf
测试PHP连接
写入一下代码到首页文件中,或者制定一个html文件
echo "" > /html/blog/test_info.php
echo "" > /html/blog/index.php (需要在配置文件中将首页文件替换成 index.php)
编写配置文件
server{
listen 80;
server_name blog.oldboy.com;
location / {
root /html/blog;
index index.php; # 如果不设置首页文件,直接在网站域名后边加上文件名访问,这里把首页直接设置为
# index.php 必须保证站点目录有这个文件存在,才可以访问成功
}
location ~ \.php$ {
root /html/blog;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
修改完成后重启服务
systemctl restart nginx;
PHP 与 数据库进行链接
在站点目录下,编辑一个测试数据库链接的文件
touch /html/blog/test_mysql.php
vim test_mysql.php
注: 网页提示 Connection failed: Host 'web01' is not allowed to connect to this MariaDB server
出现此问题是应为数据库服务器没有远程登录权限的原因,在数据库服务器上进行设置就可以解决
至此,代码上线的一些准备工作已经完成
4. 代码上线
第一步:获取上线代码
第二步:将代码解压放置站点目录中
tar -xf 压缩包
- 第三步:调整站点目录数据权限
将站点目录属主和属组调整为 Nginx worker用户,www
chown -R www.www /html/blog/
将php-fpm 服务运行的用户改为web服务统一的用户 www
vim /etc/php-fpm.d/www.conf
php-fpm 服务的配置文件在 /etc/php-fpm.d/www.conf 将其中apache改为 www
- 第四部:初始化网站
浏览器中打开网址
在数据库中查看有没有上图中 wordpress 这个库
show databases; 查看数据库中有那些库
如果没有上示数据库,在数据库中手动创建
create database wordpress;
创建数据库管理用户(其他用户连接需要用到)
grant all on wordpress.* to 'wordpress'@'172.16.1.%' identified by xxx(数据库密码)
grant all 代表将所有权限都赋予 wordpress这个库下的所有表,管理用户是wordpress ,允许171.16.1.0/24 这个网段的地址进行访问
select user,host from mysql.user;
查询列 user host 在mysql库中的user表
创建成功之后,回到网站初始化页面,继续初始化