Centos 7.6 安装配置lnmp

全新安装的一台阿里云ECS服务器,准备安装nginx1.12版本,php7.3.3版本,mysql8.0版本(可选安装为5.7版本)。

请注意,本文虽然可以正常安装运行,但是zip扩展没有安装,在你看到这段文字的时候,该问题依然存在,此外,mysql8.0版本消耗硬件资源较多,不妨暂时用回mysql5.6或5.7版本。


首先执行yum的更新命令,该命令将查询系统中的软件并进行更新。

yum upgrade

接着创建一个www账户用来运行服务器软件:

groupadd www
useradd www -g www

一、 配置防火墙,centos7.6使用的是firewall,第一步需要先打开防火墙,然后在防火墙中添加允许的端口80和3306端口

启动防火墙:

systemctl start firewalld

查看防火墙状态:

systemctl status firewalld

添加端口:

 firewall-cmd --zone=public --permanent --add-port=80/tcp

其中
1、firwall-cmd:是Linux提供的操作firewall的一个工具;

2、–permanent:表示设置为持久;

3、–add-port:标识添加的端口;

4、–zone=public:指明作用域

***注意firewall和cmd之间只有”-“相连,没有空格!!!

所以需要运行的是这两句:

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=3306/tcp

运行完毕需要将配置重新载入使得添加的端口生效:

firewall-cmd --reload

二、 安装nginx

使用yum安装:

yum install -y nginx

安装完毕后,将nginx添加开机自启动:

systemctl enable nginx.service

启动nginx:

service nginx start

三、 安装mysql

首先需要去mysql的官网下载资源包,打开https://dev.mysql.com/downloads/repo/yum/
下拉到底部,选择“Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM”版本后的下载按钮

在打开的网页下方的“No thanks, just start my download.”上点击右键复制链接地址

重新连接至服务器,直接输入以下代码,注意wget后边的链接替换为你刚刚复制到的链接,rpm -ivh 后边的内容需要换成复制到的链接最后一个/后的所有内容:

wget https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
rpm -ivh  mysql80-community-release-el7-2.noarch.rpm  
yum update 

以下为mysql8.0的安装

运行以下命令即可安装mysql8.0版本:

yum install mysql-server

以下为其他版本mysql的安装

以上步骤默认安装的是最新版本的mysql8.0,为了安装其他版本的mysql,我们需要执行以下操作。首先可以先查看一下当前默认安装的是哪个版本的mysql,在shell中运行

yum repolist all | grep mysql

将会显示类似如下结果,详细列出了哪些是被禁用的哪些是启用的,例如下图中被启用的是mysql5.7版本。

如果是按照以上步骤进行的,那么会显示mysql80启用其余被禁用,要安装其他版本,需要先禁用mysql80版本:

yum-config-manager --disable mysql80-community

然后再启用其他版本(这里以57版本为例,其余版本只要替换enable空格后的字符为列表中显示的任意一个版本即可):

yum-config-manager --enable mysql57-community

除了使用这种方法切换版本外,还可以直接对配置文件进行编辑完成切换。找到/etc/yum.repos.d/mysql-community.repo文件并打开,会发现有许多项:

其中被启用的版本条目下的enabled的值是1,没有被启用的版本下该值为0。且同一时间内只能有一个版本的enabled值为1,其余为0。
为了启用mysql57版本,我们将mysql80版本下的enabled值修改为0,mysql57版本下的enabled值改为1,同理可以进行其他版本的操作。

修改完成后进行保存,然后在shell中运行以下命令查看并检查是否已启用和禁用了正确的版本。

yum repolist enabled | grep mysql

无论是运行命令进行修改还是编辑配置文件进行修改,修改完成后都要运行以下命令开始安装mysql:

yum install mysql-server

安装过程会提示是否安装,输入y确认即可,等待mysql安装完成。

安装完成后,需要授予文件权限给mysql:

chown mysql:mysql -R /var/lib/mysql

然后初始化mysql:

mysqld --initialize

启动mysql:

service mysqld start

查看运行状态:

systemctl status mysqld

查看MySQL中的默认root账号的密码:

sudo grep 'temporary password' /var/log/mysqld.log

将会输出一下内容,注意最后一部分就是默认密码,图中为我的mysql的默认密码:

这里显示出的默认密码是:E:xY#)F6hFBG

然后输入:

mysql -u root -p

确认后提示输入密码,输入刚刚看到的密码即可成功登录,登陆后是这样的:

接下来我们要修改一下我们的默认密码,输入:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

其中末尾的MyNewPass4!需要修改成你自己设定的新密码,依照官方文档,新密码需要至少一个大写字母、一个小写字母、一个数字和一个特殊符号,并且总长度至少为8位,在我修改的时候发现不需要特殊字符也可以,请你尽量依照官方文档的密码要求制定密码。

提示以下内容就说明修改成功了:

然后输入:

exit

即可退出mysql界面


四、安装php

首先使用yum来安装php需要的一些东西,输入:

yum install -y zlib-devel libxml2 libxml2-devel libxslt libxslt-devel openssl openssl-devel libpng libpng-devel freetype freetype-devel gd gd-devel zip unzip git

确认即可安装,接着需要安装一些yum中版本较低或没有的

打开
https://curl.haxx.se/download.html
选中后缀名为tar.gz的链接,右键复制链接

如图为curl-7.64.0.tar.gz

不同时间可能有不同的版本,只要后缀为tar.gz即可。接着在服务器上输入以下内容,同样的,wget后边换成你刚刚复制到的链接,tar -zxvf后边跟链接最后一个“/”后的内容,cd后则接 tar -zxvf后的内容,并去除“.tar.gz”即可。

事实上,wget是下载这个链接指向的文件,tar命令则用来解压文件,所以我们就用tar来解压下载到的curl-7.64.0.tar.gz这个压缩包,cd命令用来进入某个文件夹,这里就进入到了解压后的curl-7.64.0这个文件夹中,./configue命令用来编译前的选项控制,make和make install则用来编译安装。因此下面一段的意思是从这个链接下载到源程序的压缩包,解压后配置编译安装。

wget https://curl.haxx.se/download/curl-7.64.0.tar.gz
tar -zxvf curl-7.64.0.tar.gz
cd curl-7.64.0
./configure --prefix=/usr/local/curl
make
make install

然后返回上层目录:

cd ../

接着下载安装libzip,同样打开libzip的官网
https://libzip.org/download/
复制tar.gz安装包,但是这里我们复制来的地址需要稍微修改一下,最新版本的需要额外的操作,有兴趣的可以自行查询,这里我们下载1.3.0版本的,即把最后的文件名修改成以下形式即可,最后一步合起来和分开效果是一样的:

wget https://libzip.org/download/libzip-1.3.0.tar.gz
tar -zxvf libzip-1.3.0.tar.gz
cd libzip-1.3.0
./configure
make
make install

然后返回上层目录:

cd ../

然后下载php的安装包(同样也是tar.gz格式的),打开php官网,找到下载页面

点击tar.gz进入新的页面

然后任意选择一个国家的方块,选择后缀名为php.net的链接打开,浏览器就会自动开始下载,此时找到浏览器的下载管理,将正在下载的该文件的链接复制下来,接着在服务器上下载下来:

wget http://sg2.php.net/distributions/php-7.3.3.tar.gz
tar -xzvf php-7.3.3.tar.gz
cd php-7.3.3

接着还需要进行一项必要的工作,在服务器输入:

echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf
ldconfig -v

确认后,接着需要进行编译前的配置了:

./configure --prefix=/usr/local/php --with-curl=/usr/local/curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml

接着服务器就会开始进行配置,如果没有问题将会在最后提示:

接着就是编译安装了:

make
make install

这一步需要等待较长时间,完成后php7.3.3就安装完成了。完成后需要再进行一些配置:

cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

接着需要使用vim修改php的配置文件,但为了便于新手,这里使用WinSCP连接服务器进行修改,WinSCP可以在网上下载到,使用root账号登录服务器,打开/usr/local/php/lib文件夹,找到php.ini并打开:

找到cgi.fix_pathinfo=1并将其前方的“#”删除,然后将等号右边的值改为0,保存后退出。

接着打开php目录下的etc文件夹中的php-fpm.d文件夹,打开www.conf
找到
user = nobody
group = nodoby
修改为
user = www
group = www

然后启动php-fpm:

/usr/local/bin/php-fpm

接着打开/etc/nginx目录下的nginx.conf文件, 修改默认的 location 块,使其支持 .php 文件:

location / {
    root   html;
    index  index.php index.html index.htm;
}

接着在其后边添加:

location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

接着将server下的server_name后边的值改为你自己的服务器ip地址。

补充:对于该文件,可以看到它的结构如下:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    <其他代码>
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /www/default;

        include /etc/nginx/default.d/*.conf;

        location / {
			index  index.php index.html index.htm;
        }

	location ~* \.php$ {
		fastcgi_index   index.php;
		fastcgi_pass    127.0.0.1:9000;
		include         fastcgi_params;
		fastcgi_param   SCRIPT_FILENAME       $document_root$fastcgi_script_name;
		fastcgi_param   SCRIPT_NAME       $fastcgi_script_name;
	}
        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

更加简化的:

<其它代码>
events {
    <其它代码>
}
http {
   <其它代码>
   server {
        <其它代码>
        location / {
            <其它代码>
        }
   }
   server {
      
   }
}

目前对我们最有用的,就是server中的各项设置了。每个server包括的就可以看作是一个站点的配置。
每个server下的
listen指的是监听的端口。
root指的是网站文件的存放位置,即html和php等文件的存放位置,也就是网站的根目录。
server_name指的是对于发送到服务器的网址请求,如果有多个server,每个server的server_name都不一样,那么nginx就会自动匹配请求到对应的server的配置上去,例如两个server,一个的server_name是aaa.exapmle.com,另一个是bbb.exapmle.com,当有用户向服务器请求aaa.expamle.com时,nginx就会将这个请求匹配到server_name是aaa.example.com的server的配置上去,从而访问不同的站点。
location 用于进行访问路由的配置
其他的需要自行搜索了解,本篇不再赘述。

接着,退出保存该文件后,在shell/终端(就是之前的服务器黑框)中输入:

nginx -t
nginx -s reload
service nginx restart

然后打开服务器上的网站根目录(也就是server下的root后边的目录),创建一个index.php的文件,内容为:

<?php
phpinfo();
?>

保存退出,接着在浏览器输入服务器的ip地址,看到php的配置信息页面,就表明配置成功了。

php的配置信息

请注意,完成本文所述安装后,php的默认配置文件php.ini放置在/usr/local/php/lib目录下,php的一个比较重要的扩展zip还没有安装,这是php编译安装下的bug导致无法在编译时直接按照zip扩展,稍后会发另外一篇文章解决此问题。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code