Nginx下网站部署实战
题目:部署Nginx+Mysql+PHP,在WEB服务器上部署ecshop网站。
一、 搭建Nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。无缓存的反向代理加速,简单的负载均衡和容错。
首先通过Xftp工具将nginx-1.12.2.tar.gz文件传到Linux中,这里推荐大家将文件统一在家目录下的新创建的子目录中(子目录名称可以自定义)
[root@localhostTEST2 ~]# mkdir huanjdaj
[root@localhostTEST2 ~]# ls
anaconda-ks.cfg huanjdaj initial-setup-ks.cfg
1、 解压压缩包(将安装包解压到 /opt/目录下)
[root@localhostTEST2 ~]# cd huanjdaj/
[root@localhostTEST2 huanjdaj]# ls
nginx-1.12.2.tar.gz
[root@localhostTEST2 huanjdaj]# tar -zxvf nginx-1.12.2.tar.gz -C /opt/
2、创建用户,并且不允许登录系统
[root@localhostTEST huanjdaj]# useradd -M -s /sbin/nologin nginx
[root@localhostTEST huanjdaj]# yum install gcc gcc-c++ pcre-devel zlib-devel -y
4、进行编译安装
1)切换至目录 opt 下进行编译
[root@localhostTEST2 huanjdaj]# cd /opt
[root@localhostTEST2 opt]# ls
nginx-1.12.2 rh
[root@localhostTEST2 opt]# cd nginx-1.12.2/
[root@localhostTEST2 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module
[root@localhostTEST2 nginx-1.12.2]# make && make install
5、为了方便管理,可以给nginx创建一个软连接
[root@localhostTEST2 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
6、编写一个脚本,可以用 systemctl 工具控制其开启、关闭、重载
[root@localhostTEST2 nginx-1.12.2]# cd /lib/systemd/system
[root@localhostTEST2 system]# vim nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
为文件添加权限
[root@localhostTEST2 system]# chmod 754 nginx.service
7、启动Nginx,并关闭防火墙和增强性安全功能(服务必须启动着,后面的web网站访问才正常)
[root@localhostTEST2 system]# systemctl start nginx.service
[root@localhostTEST2 system]# systemctl stop firewalld.service
[root@localhostTEST2 system]# setenforce 0
8、我们在客户机上进行访问验证:打开浏览器,地址栏输入:http://IP/,IP为nginx服务所在服务器的ip地址。
二、 搭建MySQL
在环境搭建的目录中,创建一个mysql 子目录,用来存放后面mysql安装需要的yum包
[root@localhostTEST2 system]# cd /root/huanjdaj/
[root@localhostTEST2 huanjdaj]# mkdir mysql
[root@localhostTEST2 huanjdaj]# ls
mysql nginx-1.12.2.tar.gz
首先通过Xftp工具将mysql57-community-release-el7-10.noarch.rpm文件传到Linux目录 /root/huanjdaj/mysql 中
1、Centos7 安装完成后,如果要安装mysql ,先卸载默认安装的mariadb数据库。
如果是centos7请执行如下(A-B步骤)
A 、centos7中安装的是MariaDB,查找组件
rpm -qa | grep -i maria*
B 、卸载mariadb 数据库:
yum -y remove mariadb-libs.x86_64
如果是已经安装了mysql ,需要卸载重新安装,执行以下步骤:
A.rpm -qa | grep -i mysql
B、停止mysql服务、删除之前安装的mysql
停止服务
service mysqld stop
删除命令:rpm -e –nodeps 包名 //如果没有安装nodeps包,则去掉这个关键字。
rpm -e mysql80-community-release-el7-3.noarch
rpm -e mysql-community-client-8.0.22-1.el7.x86_64
rpm -e mysql-community-libs-8.0.22-1.el7.x86_64
rpm -e mysql-community-client-plugins-8.0.22-1.el7.x86_64
rpm -e mysql-community-common-8.0.22-1.el7.x86_64
备注:严格按照这个顺序卸载,不然卸载不掉
卸载完成后,再次查询,没有安装包开始安装mysql57
2、下载并安装MySQL官方的 Yum Repository
方法1):下载至Windows系统,并且通过远程工具上传至 linux 目录下
http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
下载本地,xft上传至linux
方法2):也可以执行命令在线下载至linux目录下,注意安装也在该目录下进行。
[root@localhostTEST discuzx]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
3、安装 yum 包
1)进入到放yum包的目录中,安装yum 包
[root@localhostTEST mysql]# yum -y install mysql57-community-release-el7-10.noarch.rpm
2)开始在线安装Mysql
yum -y install mysql-community-server
3) 启动 mysql 57 服务
service mysqld start
如果启动服务失败,按照下面操作
报错了:数据库初始化启动失败,所以需要删除一个文件
rm -rf /var/lib/mysql
再次启动服务,OK
4)查看初始密码,在安装日志 log 文件中,红线勾画的部分
grep “password” /var/log/mysqld.log
5)登录mysql 数据库,修改密码,刷新权限。必须做,不然无法后续操作
登录MySQL: mysql -u root -p
密码输入小技巧:远程工具,鼠标右键复制粘贴画横线部分
修改密码:
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘new password’;
注意:newpassword 必须符合密码原则,不能太简单,不然修改会报错。密码原则:
大写+小写+字母+数字>8位,例如:Dsfz123456@
如果,第一次输入,提示报错了,因为修改太简单了,先执行刷新权限语句,再执行修改密码语句(必须符合规则)。
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
刷新权限(必须步骤):flush privileges;
4、 重新启动mysql服务
输入:exit ,退出mysql 命令输入模式,返回至linux命令输入模式
service mysqld restart
PHP5.6.7安装步骤如下:
1) 首先使用Xftp工具将文件传到Linux中
2) 解压该文件:
[root@localhostTEST2 huanjdaj]# tar -zxvf php-5.6.7.tar.gz
3) 进入php_5.6.7目录进行配置(代码如下,当你想换行的时候千万不要直接回车,要打一个反斜线\ ,注意反斜杠\后面前面不要有空格)
[root@localhostTEST huanjdaj]# cd php-5.6.7/
./configure --prefix=/usr/local/php5.6
–with-gd
–enable-gd-native-ttf
–enable-mysqlnd
–with-mysql=mysqlnd
–with-pdo-mysql=mysqlnd
–with-openssl
–enable-mbstring
–enable-fpm
Wrote PEAR system config file at: /usr/local/php5.6/etc/pear.conf
You may want to add: /usr/local/php5.6/lib/php to your php.ini include_path((注意这句话的意思是你可能需要在/usr/local/php5.6/lib/目录下添加php.ini文件))
/root/huanjdaj/php-5.6.7/build/shtool install -c ext/phar/phar.phar /usr/local/php5.6/bin
ln -s -f /usr/local/php5.6/bin/phar.phar /usr/local/php5.6/bin/phar
Installing PDO headers: /usr/local/php5.6/include/php/ext/pdo/
6) 切换目录cd /usr/local/php5.6启动PHP,报错了,启动失败。
[root@localhostTEST2 php-5.6.7]# cd /usr/local/php5.6
[root@localhostTEST2 php5.6]# ./sbin/php-fpm
[24-Feb-2021 14:28:53] ERROR: failed to open configuration file ‘/usr/local/php5.6/etc/php-fpm.conf’: No such file or directory (2)
[24-Feb-2021 14:28:53] ERROR: failed to load configuration file ‘/usr/local/php5.6/etc/php-fpm.conf’
[24-Feb-2021 14:28:53] ERROR: FPM initialization failed
这个错误的意思是找不到在这个路径找不到配置文件/usr/local/php5.6.3–with-gd/etc/php-fpm.conf,ls etc下面,发现有一个文件php-fpm.conf.default.这个是PHP自带的配置文件。
7) 将php.ini-production文件复制到/usr/local/lib目录下,并改名为php.ini
[root@localhostTEST2 php5.6]# cp etc/php-fpm.conf.default etc/php-fpm.conf
8) 整合PHP和Nginx服务,让Nginx支持php的启动。
打开/usr/local/nginx/conf/nginx.conf,增加下面的代码块( D O C U M E N T R O O T 就 是 代 表 服 务 的 根 目 录 . DOCUMENT_ROOT就是代表服务的根目录. DOCUMENTROOT就是代表服务的根目录.fastcgi_script_name变量代表执行文件(例:a.php))。在本地location 中index 后面 新增 index.php ,注意前后有空格。在将下面的代码整段增加。(看截图)
[root@localhostTEST php5.6]# vim /usr/local/nginx/conf/nginx.conf
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME D O C U M E N T R O O T DOCUMENT_ROOT DOCUMENTROOTfastcgi_script_name;
include fastcgi_params;
}
9) 将解压缩包中的php.ini-production文件复制到/usr/local/lib目录下,并改名为php.ini。(另外一个php.ini-development适用于开发,错误会尽量多报)
[root@localhostTEST2 lib]# cd /root/huanjdaj/php-5.6.7/
[root@localhostTEST2 php-5.6.7]# ls
复制并且改名:
[root@localhostTEST2 php-5.6.7]# cp php.ini-production /usr/local/php5.6/lib/php.ini
10) 创建测试文件,验证:在/usr/local/nginx/html下面创建文件vim a.php,内容为
[root@localhostTEST2 php-5.6.7]# cd /usr/local/nginx/html
[root@localhostTEST2 html]# vim a.php
10) 创建测试文件,验证:在/usr/local/nginx/html下面创建文件vim a.php,内容为
[root@localhostTEST ~]# shutdown -r now
重新连接虚拟机服务器,重启nginxf服务,关闭防火墙
[root@localhostTEST ~]# systemctl start nginx.service
[root@localhostTEST ~]# systemctl stop firewalld.service
[root@localhostTEST ~]# setenforce 0
[root@localhostTEST ~]# cd /usr/local/php5.6
[root@localhostTEST php5.6]# ./sbin/php-fpm
14) 打开浏览器 http://你的ip/a.php ,出现如下也没,PHP安装完成。
四、 部署ecshop网站
ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。
1) 获取ecshop软件的安装包,将安装包发送到Linux服务器中,解压后的内部文件夹内有三个文件,如图所示:
上传到Linux有两种方式,可以直接在windows下解压,上传upload包到/usr/local/nginx/html目录,并重命名为ecshop:
2) 也可以将ECshop.zip的压缩包上传后使用命令解压缩,再复制到/usr/local/nginx/html目录,并重命名为ecshop
[root@localhostTEST2 huanjdaj]# cd /root/huanjdaj/
[root@localhostTEST2 huanjdaj]# unzip ECShop2.zip
[root@localhostTEST2 ECShop2]# mv upload /usr/local/nginx/html/ecshop
3) 修改ecshop中的一些配置文件,要不然安装后会报很多错误。
修改ecshop下includes文件夹下的init.php文件.
[root@localhostTEST ECShop2]# cd /usr/local/nginx/html/ecshop/includes/
[root@localhostTEST includes]# vim init.php
修改ecshop下install/includes文件夹下的init.php文件
[root@localhostTEST includes]# cd …
[root@localhostTEST ecshop]# cd install/includes
[root@localhostTEST includes]# vim init.php
4) 访问nginx服务器上的ecshop,进行ecshop的安装:在浏览器中打开进入到ecshop的环境,如图地址。
URL为:http://IP/ecshop/install/index.php
但是如果页面提示错误,修改为127.0.0.1
如果还是提示创建数据库失败,可以重启mysql服务
service mysqld restart
7)管理员账号创建如图,admin密码为dsfz1234
8)勾选安装测试数据后,选择立即安装则可以安装成功
9)安装完成后需要删除install和demo两个目录
[root@localhostTEST2 ~]# cd /usr/local/nginx/html/ecshop
[root@localhostTEST2 ecshop]# ls
[root@localhostTEST2 ecshop]# rm -rf demo/ install/
10)Ecshop前台访问地址:
http://服务器IP地址/ecshop/index.php
11)Ecshop后台管理的URL为: