Linux 基础网络服务环境搭建和配置

既然有台云服务器,干嘛要让他吃灰呢?除了让他“剧烈运动”外,还可以让他适当的发挥其他作用。

[TOC]

LNMP 环境

啥是 LNMP ?

LNMP 指的是 Linux Nginx Mysql PHP,这四大天王。

以下操作是在 CentOS 7.6 系统环境以及非 root 用户下进行的。

Nginx 安装

为 CentOS 包管理 yum 配置 EPEL 源

sudo yum install -y epel-release
sudo yum -y update

开始安装 Nginx 包

sudo yum install nginx

使用 yum 包管理安装的 Nginx 的默认各常用文件目录路径如下:

默认网站目录:/usr/share/nginx/html

配置文件:/etc/nginx/nginx.conf

网站配置文件目录:/etc/nginx/conf.d

Nginx 操作

启动、停止和重启 Nginx 服务

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

启用和禁用开机自启动

sudo systemctl enable nginx
sudo systemctl disable nginx

配置文件测试错误和重载配置文件

sudo nginx -t
sudo nginx -s reload

MySQL 和 SQLite3 安装

这里我用 MariaDB 替换了 MySQL 数据库。

直接通过 yum 包管理安装 MariaDB

sudo yum install mariadb-server

安装完后进行初始化配置

sudo mysql_secure_installation

一般来说,系统都会自带 SQLite3 数据库的,输入 sqlite3 测试是否已安装,如未安装也可直接通过 yum 包管理进行安装

sudo yum install sqlite-devel

MariaDB 操作

启动、停止和重启 MySQL 服务

sudo systemctl start mariadb
sudo systemctl stop mariadb
sudo systemctl restart mariadb

启用和禁用开机自启动

sudo systemctl enable mariadb
sudo systemctl disable maridb

PHP 7.4 安装

通过 yum 包管理安装

sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php74
sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt \
 php-mbstring php-curl php-xml php-pear php-bcmath php-json  \
 php-xmlrpc php-pdo  php-pecl-zip php-intl php-common php-imap php-odbc

PHP 操作

启动、停止和重启 Nginx 服务

sudo systemctl start php-fpm
sudo systemctl stop php-fpm
sudo systemctl restart php-fpm

启用和禁用开机自启动

sudo systemctl enable php-fpm
sudo systemctl disable php-fpm

LNMP 环境配置

Nginx 与 PHP 配置

修改 php.ini 配置文件的 cgi.fix_pathinfo 配置项为 0

sudo vim /etc/php.ini
 cgi.fix_pathinfo = 0

修改 www.conf 配置文件的运行用户和用户组,确保和 Nginx 的运行用户一致

sudo vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx

重启 php-fpm 服务

sudo systemctl restart php-fpm

创建一个 HTTPS 协议,并配置 PHP CGI 以运行 PHP 文件的站点配置

sudo vim /etc/nginx/conf.d/newsite.conf
server {
    listen      80;
    server_name 127.0.0.1;
    rewrite ^(.*) https://$server_name$1 permanent;
}
server {
    listen      443 ssl;
    server_name 127.0.0.1;

    # HTTPS_SSL_config
    ssl_certificate     /etc/nginx/cert/****.pem;
    ssl_certificate_key  /etc/nginx/cert/****.key;
    ssl_session_timeout  5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    # Website root dir config
    location / {
        root    /www/newsite;
        index   index.html;
        try_files $uri $uri/ $uri.php$is_args$args;
    }

    # PHP run config
    location ~ \.php$ {
        root           /www/random;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
        include        fastcgi_params;
    }
}

测试和重载配置文件

sudo nignx -t
sudo nginx -s reload

PHP 配置 SQLite3 拓展

如果你的 PHP 安装目录下没有 ext 这个拓展文件夹,那么先通过命令寻找目录

sudo find / -name 'sqlite*'

通过上面的命令查找所有关于 sqlite 的文件路径

/opt/remi/php74/root/usr/lib64/php/modules/sqlite3.so

上面是我服务器的路径,路径地址因环境而异

打开 php.ini 配置文件,并修改下面五项配置,如果没有该配置项就追加进去

sudo vim /etc/php.ini
extension_dir = "/opt/remi/php74/root/usr/lib64/php/modules/"

extension=pdo.so
extension=sqlite.so
extension=pdo_sqlite.so

sqlite3.extension_dir = "/opt/remi/php74/root/usr/lib64/php/modules/"

重启 php-fpm 服务

sudo systemctl restart php-fpm

MySQL 开启远程登陆

在服务器进入数据库

mysql -uroot -p

更新用户表里面的 root 用户的 Host 字段

use mysql;
UPDATE user SET Host=@'%' where user='root' AND Host='localhost' LIMIT 1;
FLUSH PRIVILEGES;

查看更新后的数据

SELECT User, Password, Host FROM user;

在服务器运营商的网站管理页面的防火墙里,增加 3306 数据远程访问端口规则