Centos上安装Nginx、PHP、MySQL

Centos上安装Nginx、PHP、MySQL

前言

    最近,购买了一个阿里云服务器,然后就想着搭建一个web环境,用于平时学习使用,但是想象很美好,现实很骨感,在搭建环境过程中遇到了一大堆的问题,但查阅了一些资料把问题解决了,最后终于成功搭建好了环境,现在和大家分享一下如何在Centos服务器上安装Nginx、PHP、MySQL。希望以下的笔记能帮助大家避开这些问题。

一、编译安装Nginx
  1. 安装 GCC 环境

    sudo yum -y install gcc gcc-c++ # nginx编译时依赖gcc环境
    
  2. 安装 pcre

    sudo yum -y install pcre pcre-devel # 让nginx支持重写功能
    
  3. 安装 zlib

    sudo yum -y install zlib zlib-devel # zlib库提供了很多压缩和解压缩的方式,nginx使用zlib对http包内容进行gzip压缩
    
  4. 安装 openssl

    sudo yum -y install openssl openssl-devel # 安全套接字层密码库,用于通信加密
    
  5. nginx 源码包下载

    cd /usr/local/src #进入src文件夹
    wget http://nginx.org/download/nginx-1.16.0.tar.gz #下载nginx源码包
    tar -zxvf nginx-1.16.0.tar.gz # 解压缩
    cd nginx-1.16.0 
    
  6. 对源码编译安装

    ./configure 
    
    make 			#编译
    make install		#安装
    
  7. nginx服务操作命令

    /usr/local/nginx/sbin/nginx				#启动服务
    /usr/local/nginx/sbin/nginx -s reload	#重新加载服务
    /usr/local/nginx/sbin/nginx -s stop		#停止服务
    ps -ef | grep nginx 				  		#查看服务进程
    
  8. 修改配置文件(无公网IP可不改)

    vi /usr/local/nginx/conf/nginx.conf
    

    server_name 中的 localhost 更改为个人 IP ,而后保存并退出。

  9. 设置Nginx开机启动

    vi /usr/lib/systemd/system/nginx.service
    

    在文件中写入以下脚本:

    [Unit]
    Description=nginx
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    保存并执行如下命令,完成设置:

    systemctl enable nginx.service
    
  10. 验证是否安装成功:

    http://localhost		#若更改了IP,将localhost改为自己的公网IP
    
二、安装PHP 7.2
  1. PHP 7.2 源码安装包下载

    cd /usr/local/src
    wget https://www.php.net/distributions/php-7.2.20.tar.gz  # 下载
    tar -zxvf php-7.2.20.tar.gz   # 解压缩
    
  2. 源码编译并安装 PHP 7.2

    cd php-7.2.20
    yum install -y gcc gcc-c++ make automake autoconf gd file bison patch mlocate flex diffutils zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel libcurl libcurl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers openldap-devellibxslt-devel kernel-devel libtool-libs readline-devel gettext-devel libcap-devel php-mcrypt libmcrypt libmcrypt-devel recode-devel gmp-devel icu libxslt libxslt-devel php-devel
    
    ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql-sock --with-mysqli --with-libxml-dir --with-openssl --with-mhash --with-pcre-regex --with-zlib --with-iconv --with-bz2 --with-curl --with-cdb --with-pcre-dir --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --with-gettext --with-gmp --with-mhash --with-libmbfl --with-onig --with-pdo-mysql --with-zlib-dir --with-readline --with-libxml-dir --with-xsl --with-pear --enable-fpm --enable-soap --enable-bcmath --enable-calendar --enable-dom --enable-exif --enable-fileinfo --enable-filter --enable-ftp --enable-gd-jis-conv --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --enable-pdo --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-zip --enable-mysqlnd-compression-support
    
    make 			#编译
    make install		#安装
    
  3. 创建php-fpm.conf、www.conf配置文件:

    cd /usr/local/php/etc
    cp php-fpm.conf.default php-fpm.conf
    cd /usr/local/php/etc/php-fpm.d
    cp www.conf.default www.conf
    
  4. 创建php.ini配置文件:

    find /usr/local/src/php-7.2.20 -name php.ini*
    cp /usr/local/src/php-7.2.20/php.ini-production /usr/local/php/etc/php.ini
    
  5. 编辑编辑PHP配置文件

    vim /usr/local/php/etc/php.ini
    

    ;cgi.fix_pathinfo=1 改为 cgi.fix_pathinfo=0

    vim /usr/local/php/etc/php-fpm.d/www.conf
    


    user = nobody group = nobody
    改为
    user = root group = root

  6. 手动启动和关闭php:

    /usr/local/php/sbin/php-fpm -R   # 这里后面带个 -R  表示用root 用户启动
    /usr/bin/pkill -9 php-fpm
    pstree -p | grep php
    
  7. 设置php-fpm开机启动:
    关闭 php-fpm 进程:

    /usr/bin/pkill -9 php-fpm
    

    创建php-fpm.service文件:

    vi /usr/lib/systemd/system/php-fpm.service
    

    在文件中写入启动脚本:

    [Unit]
    Description=php-fpm
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/run/php-fpm.pid
    ExecStart=/usr/local/php/sbin/php-fpm
    ExecStop=/usr/bin/pkill -9 php-fpm
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    保存上述脚本文件,并执行如下命令,完成php-fpm开机启动设置:

    systemctl enable php-fpm.service
    

    可以使用systemctl命令管理php-fpm:

    systemctl start php-fpm.service  #启动
    systemctl stop php-fpm.service   #停止
    service php-fpm start
    service php-fpm stop
    service php-fpm restart
    service php-fpm reload
    
  8. Nginx + PHP
    配置 Nginx :

    vi /usr/local/nginx/conf/nginx.conf
    

    修改 server{} :

    server {
         listen       80;
         server_name  localhost; # 服务器改成自己的公网IP
    
         #charset koi8-r;
    
         #access_log  logs/host.access.log  main;
         # 默认网站根目录(www目录)
         root         /usr/share/nginx/html;
    
         location / {
             root   html;
             index  index.php 1.php index.html index.htm;
         }
    
         #error_page  404              /404.html;
    
         # redirect server error pages to the static page /50x.html
         #
         error_page   500 502 503 504  /50x.html;
         location = /50x.html {
             root   html;
         }
    
         # proxy the PHP scripts to Apache listening on 127.0.0.1:80
         #
         #location ~ \.php$ {
         #    proxy_pass   http://127.0.0.1;
         #}
    
         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
         #
         location ~ \.php$ {
             root           html;
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             fastcgi_param  PATH_INFO  $fastcgi_path_info;
             fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
             include        fastcgi_params;
         }
    
         # deny access to .htaccess files, if Apache's document root
         # concurs with nginx's one
         #
         #location ~ /\.ht {
         #    deny  all;
         #}
     }
    

    修改完保存文件并重启Nginx服务器:

    nginx -s reload
    

    /usr/share/nginx/html/ 目录下创建 phpinfo.php

    <?php phpinfo();?>
    

    最后在浏览器中输入 http://ip/phpinfo.php
    在这里插入图片描述

  9. 可能出现的错误:

    Job for php-fpm.service failed because a timeout was exceeded. See "systemctl status php-fpm.service" and "journalctl -xe" for details.
    

    输入 systemctl status php-fpm.service 之后出现:

    ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
    ERROR: FPM initialization fa
    

    出现此问题的原因为9000端口被占用:

    killall php-fpm   #关掉所有php-fpm进程
    /usr/local/php/sbin/php-fpm -R   #手动启动
    

    也可以使用systemctl命令启动php-fpm

  10. 卸载 PHP
    查看php版本命令:

    php -v
    

    下面的命令是删除不干净的:

    yum remove php
    

    必须强制删除,使用下面命令查看全部php软件包

    rpm -qa|grep php	
    

    结果如下:

    php-json-7.2.29-1.el7.remi.x86_64
    php-pecl-mcrypt-1.0.3-1.el7.remi.7.2.x86_64
    php-common-7.2.29-1.el7.remi.x86_64
    php-cli-7.2.29-1.el7.remi.x86_64
    php-devel-7.2.29-1.el7.remi.x86_64
    

    注意卸载要先卸载没有依赖的
    pdo是mysql的依赖项;common是gd的依赖项;
    如果不按顺序来会报错:
    error: Failed dependencies:
    php-pdo is needed by (installed) php-common-7.2.29-1.el7.remi.x86_64

    卸载命令:

    rpm -e php-json-7.2.29-1.el7.remi.x86_64
    

    不过可以进行强制删除:

    rpm -e php-json-7.2.29-1.el7.remi.x86_64 --nodeps
    
三、安装MySQL 5.7
  1. 先检查系统是否装有mysql

    rpm -qa | grep mysql
    
  2. 下载MySQL的repo源

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    

    如果报错: -bash: wget: 未找到命令
    安装插件 yum -y install wget

  3. 安装mysql源

    sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
    
  4. 检查mysql源是否安装成功

    yum repolist enabled | grep "mysql.*-community.*"
    
  5. 安装MySQL

    yum install mysql-community-server
    
  6. 启动MySQL服务

    systemctl start mysqld
    
  7. 查看MySQL的启动状态

    systemctl status mysqld
    
  8. 重置MySQL密码
    登录MySQL:

    mysql -uroot -p   #初始密码为空
    

    修改密码:

    set password for 'root'@'localhost'=password('修改的密码');
    

    退出:

    quit;
    
  9. 设置开机自启动

    systemctl enable mysqld
    systemctl daemon-reload
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值