Linux网站搭建(nginx+php+mysql)

这篇具有很好参考价值的文章主要介绍了Linux网站搭建(nginx+php+mysql)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

nginx

安装nginx服务器依赖环境

源码安装和yum安装的区别

源码安装

源码安装三步走:

php

下载

安装所有扩展:(php运行所需要的环境)

编辑/etc/php.ini

开启php-fpm

在html下创建index.php,看一下是否可以网页中访问得到它

编辑nginx配置文件

重启服务

mysql

安装mysql

mysql的使用

用nginx服务器连接mysql数据库

报错情况

CMS


中间件

web服务器:nginx(前端网页)+php

数据库服务器:mysql

思路:

        先安装中间件nginx,nginx要采用源码安装。安装按之后启动,可以访问到一个静态初始页面;然后安装php(超文本预处理器,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中),他的源码要用rpm安装,执行环境用yum;最后安装mysql数据库。全部完成后就可以进行连接了。

nginx

安装nginx服务器依赖环境

yum -y install  gcc-c++  pcre-devel  zlib-devel

安装完之后,可以看到下面有六个包,其中devel是开发包(看到让我们选择那种安装包的话,一般都选devel)

nginx php,linux,linux,nginx,服务器

源码安装和yum安装的区别

①yum安装相当与于一键安装,自动帮你解析安装,解决一切问题

②源码安装相当于手动安装,路劲什么的都需要自己下载

③源码安装没有写入系统,启动的时候不能用systemctl来执行

源码安装

wget https://nginx.org/download/nginx-1.22.1.tar.gz   #获取源码
#wget是获取网上的安装包

tar -zxvf nginx-1.22.1.tar.gz   #解压安装包
#-z是对应后面的.gz。如果只是单纯的tar,就不用z

获取解压完源码之后就可以看到在家目录下面出现了这两文件

nginx php,linux,linux,nginx,服务器

源码安装三步走:

知识点:

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。

Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。其中--prefix选项是配置安装的路径。

如果不配置 --prefix 选项,安装后:

可执行文件默认放在/usr /local/bin,

库文件默认放在/usr/local/lib,

配置文件默认放在/usr/local/etc,

其它的资源文件放在/usr /local/share,

进入到nginx目录中可以看到下面存在一个配置文件和一个可执行文件。其中,conf是配置文件,configure是可执行文件(用来进一步生成可编译执行文件(makefile))

nginx php,linux,linux,nginx,服务器

 第一步:指定编译安装目录

./configure --prefix=/usr/local/nginx    #指定安装目录为/usr/local/nginx
#默认情况下不指定安装路径的话是默认安装在/usr/local下 

执行完configure,在我们指定路径下进行查看,并没有看到生成的文件夹,因为这个时候只是生成可编译文件(makefile)而已,并没有开始进行编译

nginx php,linux,linux,nginx,服务器

可以看到nginx目录下生成了一个makefile

nginx php,linux,linux,nginx,服务器

&&/;连续执行的区别

&&:先成功执行前面的语句,再执行后续语句

;:不管前面的语句是否执行成功都执行后面的语句

第二步:编译与安装

make&&make install    #进行编译并且生成编译文件
#前面的make就是自动对c语言文件进行编译,后面是生成编译文件  

 要注意进行编译的路径

nginx php,linux,linux,nginx,服务器

编译完成后,在/usr/local中进行查看,可以看到多了一个nginx文件夹

nginx php,linux,linux,nginx,服务器

 对nginx文件夹进行查看,可以下面还有四个文件

conf:nginx的配置文件(如果用yum安装的话就是在/etc/conf目录下)

html:默认是nginx的网站根目录(要看配置文件的内容,可在配置文件中进行更改)

logs:日志文件

sbin:下面存放着可执行命令字nginx(本应该放在/目录下面的sbin文件夹,但是他是使用源码安装的,所以sbin放在我们指定的目录下)

nginx php,linux,linux,nginx,服务器

nginx的主配置文件

路径:/usr/local/nginx/conf/nginx.conf

#pid        logs/nginx.pid;    #这个是询问是否开启nginx的pid,如果报错的话再进行开启

#配置文件分为两部分,一部分是http,一部分是https
#http
http {
    include       mime.types;    #文件拓展名与文件类型映射表
    default_type  application/octet-stream;    #默认文件下载类型
    sendfile        on;           #支持文件发送下载
    keepalive_timeout  65;        #连接保持超时时间
    server {
        listen       80;          #对应http使用的80端口
        server_name  localhost;   #网站的名称
        location / {
            root   html;  #网站的根目录,对应前面看到的文件夹
            index  index.html index.htm;    #网站主页
        }

nginx php,linux,linux,nginx,服务器

        另外的编译生成文件方法(不建议)

         如果不用make进行编译安装的话,我们需要在/root/nginx-1.22.1/src/core 下对他的所有c语言带啊吗进行一行一行的安装,很麻烦

nginx php,linux,linux,nginx,服务器

第三步:执行开启nginx

这时候执行nginx指令,用tab键发现不能补齐,说明这个指令不能被系统所获取。(按理说ngxin是sbin下面的可执行命令字,是可以执行的。但是采用的是源码安装,这个命令字并没有存放在根目录下的sbin中,所以要让系统进行获取这个指令)

配置环境变量

路径:/etc/profile
 

export NGINX_PATH=/usr/local/nginx/sbin
export PATH=$PATH:$NGINX_PATH

重新加载环境变量文件:source /etc/profile

nginx
        -v                查看版本
        -s stop        强制退出
        -s quit         正常退出       
        -s reload     重新加载  
        -s reopen    重新打开

两种启动nginx方式:

        ①直接到sbin目录下对nginx进行启动

        ②nginx -c /usr/local/nginx/conf/nginx.conf
           //指定主配置文件并开启服务(标准启动方式)

nginx php,linux,linux,nginx,服务器

在网页上跟上服务器的ip地址就可以访问的到这个基础网页

nginx php,linux,linux,nginx,服务器

 

可能出现的问题

1.启动完之后就可以进行网页的访问。再访问的时候出现访问不到的情况,就是防火墙和selinx没关掉,应影响到网页的访问

2.如果是搭建在云服务器上面的话,就要在安全组中打开对应的端口

php

PHP-fpm //主机成管理器,在5.多版本就融入到php中间

下载  

wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
#获取安装包

yum -y install epel-release-latest-7.noarch.rpm   
#安装源

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#下载他的源码

安装所有扩展:(php运行所需要的环境)

yum -y install php72w-cli php72w-common php72w-devel php-mysqli php72w-fpm php72w php72w-cli php72w-fpm php72w-curl php72w-gd php72w-mysql php72w-xml php72w-mbstring





#    php72w-cli: 这是用于PHP 7.2版本的命令行接口(CLI),它允许你在命令行中运行PHP脚本和命令。

#    php72w-common: 这个软件包包含了PHP 7.2版本的共享文件和共享库,它提供了PHP运行所需的一些基本组件。

#    php72w-devel: 这个软件包包含了PHP 7.2版本的开发所需的头文件和静态库,它用于编译和构建PHP扩展或自定义PHP模块。

#    php-mysqli: 这是一个提供PHP与MySQL数据库连接功能的扩展,它使用MySQLi(MySQL Improved)API,支持更多的功能和特性,包括面向对象的接口、预处理语句、事务处理等。

#    php72w-fpm: 这是用于PHP 7.2版本的FastCGI进程管理器(FPM),它提供了一种高性能的方式来处理PHP请求,并与Web服务器(如Nginx或Apache)配合使用。

#    php72w-curl: 这个软件包包含了PHP 7.2版本的CURL扩展,它允许PHP与URL进行交互,支持HTTP、HTTPS、FTP等协议,用于发送和接收数据。

#    php72w-gd: 这个软件包包含了PHP 7.2版本的GD图像处理库的扩展,它提供了一组函数来创建、操作和处理图像,包括缩放、裁剪、添加水印等功能。

#    php72w-mysql: 这是一个提供PHP与MySQL数据库连接功能的扩展,它使用原始的mysql函数库进行连接和操作。它在旧版本的PHP中很常见,但在较新的PHP版本中已被弃用,推荐使用MySQLi或PDO扩展。

#    php72w-xml: 这个软件包包含了PHP 7.2版本的XML扩展,它提供了一组函数来处理XML数据,包括解析XML、创建XML、操作XML节点等。

#    php72w-mbstring: 这个软件包包含了PHP 7.2版本的多字节字符串处理扩展,它提供了一组函数来处理多字节字符集,包括字符串截取、编码转换、字符长度计算等。




#PHP72w-mysql和php-mysql区别
#前者是CentOS/RHEL系列的软件包,后者是Debian/Ubuntu的软件包



#php72w-mysql和php72w-mysqli区别
#mysql是旧版,mysqli是新版本,是mysql的更新版,功能更加齐全

编辑/etc/php.ini

short_open_tag = On        #若不开启,则无法识别php函数

开启php-fpm

systemctl start php-fpm  

在html下创建index.php,看一下是否可以网页中访问得到它

<?php
phpinfo()
?>

这时候发现网页加载不出来

编辑nginx配置文件

location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name; 
                                            #如果不能索引到就加上他的路径
            include        fastcgi_params;
        }


#在nginx配置文件中把php的#都取消掉,这是为了让ngxin可以使用php语言
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }

nginx php,linux,linux,nginx,服务器

重启服务

nginx -s reload
systemctl restart php-fpm.service

正常可访问

nginx php,linux,linux,nginx,服务器

 

mysql

安装mysql

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar    #获取安装包

tar -xvf mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar  #解压安装包

rpm -ivh mysql-community-server-8.0.30-1.el7.x86_64.rpm  #安装server版
#用rpm安装的时候解决不了环境依赖问题,在安装server的时候会进行报错。缺少什么环境就进行安装什么环境。

nginx php,linux,linux,nginx,服务器

 在安装的时候报错缺少环境,就直接后面加上所需要的包就可以(tab补齐)  可以同时安装多个包

nginx php,linux,linux,nginx,服务器

 安装的时候报错启用或者冲突,直接卸载启用文件就可以

nginx php,linux,linux,nginx,服务器

没有报错,安装完成

阿里云服务器要安装

yum install libaio

要实现站库分离就要使用两台服务器,将会mysql服务器与另外两个分开

mysql的使用

systemctl start mysqld
#启动服务

grep “password” /var/log/mysqld.log   
#查看初始随机生成的密码

mysql -u root –p   
#连接数据库

use mysql
#要先使用数据库才能进行查询
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#初次使用数据库的时候会报错,要求你修改密码

alter user 'root'@'localhost' identified by 'zhss@0121Lin';
#初次需要修改密码

show databases;
#查看数据库

select user,host from mysql.user;
#查询账户信息;

update user set host='%' where user='root';
#将表的host登陆方式从localhost(本地登录)更新成%(任意方式)
#第一个user代表user表,第二个是表中的user字段

nginx php,linux,linux,nginx,服务器

用nginx服务器连接mysql数据库

在nginx服务器的网站根目录的index.php中进行编辑

<?php
$servername = "192.168.100.150";
$username = "root";
$password = "root";
$conn = mysqli_connect($servername,$username,$password);
if($conn->connect_error){
        die("lianjieshibai:".$conn->connect_error);
}
echo "success";
phpinfo();
?>

#或者
#(那三行是用来显示报错信息的,做调试用。映射到公网的话建议删掉)

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$servername = "localhost";
$username = "root";
$password = "root";
$database = "cms";

$conn = mysqli_connect($servername, $username, $password, $database);
if (!$conn) {
    die(" ~^ ~N 失败 ~Z" . mysqli_connect_error());
}
echo " ~^ ~N  ~H~P ~J~_";

//  ~I  ~L ~U  ~M  ~S ~S~M ~\...

mysqli_close($conn);
?>

这一步做完就可以连接到数据库

nginx php,linux,linux,nginx,服务器

 

 

报错情况

第一种

问题:出现这个情况就是密码复杂度问题,需要在mysql进行修改

nginx php,linux,linux,nginx,服务器

alter user 'root'@"%' identified with mysql_native_password by 'yourpassword";        
#修改身份验证插件

第二种

问题:Fatal error: Uncaught Error: Call to undefined function mysql_connect()

        出现这个问题的原因是由于php7以后已经不支持mysql连接了,解决的办法也很简单,更换mysqli/PDO连接(替换mysql_connect()为mysqli_connect())或者更干脆降低php版本

可以先查看下PHP环境中有没有装上MySQL扩展,如果没输出的话就是没装上

php -m | grep mysqli

然后发现没输出东西,发现是我的mysql没装上,重新安装

yum -y install php72w-mysqli

如果在安装的时候出现这情况,就是已经存在了并且冲突了

nginx php,linux,linux,nginx,服务器

CMS

网站源码(cms)导入(从我的windows桌面导入,直接拉进去也行)

sudo scp /mnt/c/Users/Administrator/Desktop/PHPCMS.tar 192.168.100.110:/root/
#后面的:/root/ 是指定传入的路径,也可以跟ssh一样在ip前面加上 用户@ 指定传输用户
#通过子系统ubuntu从桌面传到centenos,也可以直接拉进去

将源码解压到网站根目录

#解压cms压缩包
tar -xvf PHPCMS.tar

#移动到/usr/local/nginx/html/
mv PHPCMS /usr/local/nginx/html/

修改PHPCMS/includes/db.php

<?php

$db['db_host'] = "localhost";    //数据库服务器地址
$db['db_user'] = "root";    //账户
$db['db_pass'] = "root";    //密码
$db['db_name'] = "cms";

将cms.sql传给数据库服务器 ,这一步是为了在mysql中创建一个cms数据库,并且查看一下数据库是否创建成功

scp PHPCMS/cms.sql root@192.168.100.150:/root/
#scp 文件 账户@IP地址:路径

mysql -u 账户名 -p < cms.sql
#导入数据库

nginx php,linux,linux,nginx,服务器

然后到这一步,就可以在看到的自己搭建的网站了,如果还是不能查看的到,就要在nginx的配置文件中对php的配置进行修改,网站的相对路径改为绝对路径,然PHPCMS可以被索引的到

在这里可以跟上PHPCMS的绝对路径,一般到html就可以,如果还是索引不到的话,在跟上PHPCMS

nginx php,linux,linux,nginx,服务器

 这是网站搭建的最终效果

nginx php,linux,linux,nginx,服务器文章来源地址https://www.toymoban.com/news/detail-790005.html

到了这里,关于Linux网站搭建(nginx+php+mysql)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在 【Linux Centos】下搭建 【Nginx Web】 服务器

    系统:Linux Centos 7.9 gcc 、c++、pcre、zlib、openssl等 添加内容

    2024年01月16日
    浏览(55)
  • Linux -- 进阶 Web服务器 搭建基于 https 协议的静态网站 ( 预备知识 )

                什么是 HTTPS ?   HTTPS  协议背景 ?         ===                  HTTP 协议  即  超文本传输协议 ,                 它出生的很早,在早期,网络服务的相关攻击呢,或者病毒啥的几乎没有,安全类的问                  题也是少之又少。   

    2024年02月06日
    浏览(50)
  • 无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线

    转载自cpolar文章:Linux CentOS本地搭建Web站点,并实现公网访问 在web项目中,部署的web站点需要被外部访问,则需要一个媒介,通过把资源放在这个媒介中,再通过所暴露的端口指向这个站点,当外部访问这个媒介所对应的端口时,媒介指向站点,完成访问,像这种类似的媒介,常用的有

    2024年02月02日
    浏览(62)
  • 无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线(1)

    转载自cpolar文章:Linux CentOS本地搭建Web站点,并实现公网访问 在web项目中,部署的web站点需要被外部访问,则需要一个媒介,通过把资源放在这个媒介中,再通过所暴露的端口指向这个站点,当外部访问这个媒介所对应的端口时,媒介指向站点,完成访问,像这种类似的媒介,常用的有

    2024年02月03日
    浏览(50)
  • Linux -- 进阶 Web服务器 搭建基于 HTTPS 协议的静态网站 (实验实操)

                  现在我们想架设一个 互联网网站的话,我们就得想法认证自己是官方的,得产生一个证书         这个证书呢,我们使用的是 X.509  格式的证书                                该证书 包含三个文件 :  key , csr , crt 。           先介绍下 :  PKI(

    2024年02月07日
    浏览(49)
  • linux 服务器搭建web网站防御秘籍之雷池WAF包含入门介绍-安装-使用-升级更新

    我们在安装了Linux服务器并使用了宝塔面板后发现,宝塔的WAF需要升级版本才能使用。尽管市面上有很多免费的开源WAF解决方案,但我们对它们的学习成本感到有些高,而且对于我们这个刚开始建站的小型项目来说,也不想花费一千多块钱来购买商业WAF每年的许可费。 因此,

    2024年02月03日
    浏览(49)
  • 基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

    前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现。可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施,尤其是点播功能,所以我把我工作中验证成功

    2024年02月02日
    浏览(64)
  • Windows云服务器 PHP搭建网站外网无法访问的问题

    前言:本人在华为云上租了一台windows的云主机,可以远程访问桌面的那种,然后想搭个网站,最开始想到的是IIS,测试了下用html的文件,没有问题。但是,php文件却不能用,因为少了PHP环境。 因此就准备去搭个PHP环境,看了大佬们的教程,感觉很麻烦,所以就放弃了。 然后

    2024年02月09日
    浏览(64)
  • 打造高性能网站:使用 nginx、MySQL 和 PHP 编译,搭建 LNMP 环境并安装 WordPress实战

    🏠个人主页:我是沐风晓月 🧑个人简介:大家好,我是沐风晓月,阿里云社区博客专家😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘 本次实验环境见下表

    2024年02月07日
    浏览(52)
  • server win搭建apache网站服务器+php网站+MY SQL数据库调用电子阅览室

    1、使用开源的免费数据库Mysql; 2、自己建网站的发布; 3、使用php代码建网站; 4、使用windows server作为服务器; 5、使用apache作为网站服务器。 apache下载地址一:Apache VS17 binaries and modules download apache下载地址二:Apche下载 1、https://httpd.apache.org 2、点Files for Microsoft Windows 3、点

    2024年04月10日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包