[实验] LNMP 平台的搭建 (openSUSE Leap 15 版)

步骤目录:

步骤一:LNMP 简介

步骤二:系统环境要求

步骤三:搭建 LNMP
3.1 Nginx 网页服务
3.1.1 安装 Nginx 网页服务
3.1.2 配置 Nginx 网页服务的配置文件
3.1.2.1 删除原有的 Nginx 服务的配置文件
3.1.2.2 创建新的 Nginx 网页服务的配置文件
3.1.2.3 配置 Nginx 网页服务的配置文件
3.1.3 启动 nginx 网页服务
3.2 MariaDB 数据库
3.2.1 安装 MariaDB 数据库
3.2.2 启动 MariaDB 数据库
3.3 PHP 环境和连接服务
3.3.1 安装 PHP 环境和连接服务
3.3.2 创建提供 PHP 连接服务的用户
3.3.3 配置 PHP 连接服务的配置文件

步骤四:后续工作

步骤五:测试 LNMP 平台

具体的操作步骤:

步骤一:LNMP 简介

LNMP 是一个实现网站服务的方法,它由 4 样东西组成:
1) Linux 系统
2) Nginx 网页服务
3) MariaDB 数据库
4) PHP 网页程序

步骤二:系统环境要求

1) 服务器的系统需要是 openSUSE 15 版本
2) 服务器要关闭防火墙
3) 服务器系统要配置好可用的软件源(最好是软件数量最多的官方版本)

步骤三:搭建 LNMP
3.1 Nginx 网页服务
3.1.1 安装 Nginx 网页服务

# zypper -n install nginx

3.1.2 配置 Nginx 网页服务的配置文件
3.1.2.1 删除原有的 Nginx 服务的配置文件

# rm /etc/nginx/nginx.conf

3.1.2.2 创建新的 Nginx 网页服务的配置文件

# cp /etc/nginx/nginx.conf.default /etc/nginx.conf

3.1.2.3 配置 Nginx 网页服务的配置文件

# vi /etc/nginx/nginx.conf

将其中的:

......
        location / {
            root   html;
            index  index.html index.htm;
        }
......
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
......

修改为:

......
        location / {
            root   html;
            index  index.php index.html index.htm;
        }
......
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }
......

(补充:这里以让 Nginx 将对于 PHP 的请求传递到本机的 9000 端口为例)

3.1.3 启动 Nginx 网页服务

# systemctl start nginx

3.2 MariaDB 数据库
3.2.1 安装 MariaDB 数据库

# zypper -n install mariadb mariadb-server

3.2.2 启动 MariaDB 数据库

# systemctl start mariadb

3.3 PHP 环境和连接服务
3.3.1 安装 PHP 环境和连接服务

# zypper -n install php7 php7-fpm php7-mysql php7-gd php7-mbstring php7-opcache php7-json php7-xmlrpc php7-zlib

3.3.2 创建提供 PHP 连接服务的用户

# useradd php-fpm -s /sbin/nologin

3.3.3 配置 PHP 连接服务的配置文件

# vi /etc/php-fpm.conf

将以下内容:

......
user = nouser
group = nouser
......

修改为:

......
user = php-fpm
group = users
listen = 127.0.0.1:9000
......


补充:这里以
1) 以 php-fpm 用户和 users 用户组的身份启动 php-fpm
2) 让 php-fpm 监听本地 9000 端口为例

步骤四:后续工作

1) 给 MariaDB 数据库设置用于存储网页数据的用户和密码
2) 将 PHP 网页程序放到 Nginx 的网页目录下(/srv/www/htdocs)
3) 给 PHP 网页程序设置用于连接 MariaDB 数据库的用户和密码

步骤五:测试 LNMP 平台

使用浏览器访问服务器 IP 地址就可以看到对应 PHP 网页了

[实验] Django 服务的搭建

纪念:站主于 2020 年 3 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

注意:

文中的 python 系统名和 mysite 项目只是站主在本次操作中随意取的名称,读者可以根据自己的喜好换成任意别的名称

步骤目录:

步骤一:系统环境要求

步骤二:安装 Django
2.1 安装 Python3
2.2 创建并进入 Django 项目的目录
2.3 将 Django 项目的目录指定为 Django 环境
2.4 进入 Django 环境
2.5 检验 Django 环境是否成功

步骤三:创建 mysite 项目
3.1 创建 mysite 项目
3.2 mysite 项目的目录
3.2.1 安装 tree 目录查看软件
3.2.2 查看 mysite 项目的目录
3.3 Django 项目目录介绍

步骤四:启动 Django 服务
4.1 启动 Django 服务
4.2 测试 Django 服务

具体的操作步骤:
步骤一:系统环境要求

1) 服务器的系统需要是 CentOS 7 版本
2) 服务器要关闭防火墙
3) 服务器要关闭 SELinux
4) 服务器系统要配置好可用的软件源
5) 服务器要能够连接外网

步骤二:安装 Django
2.1 安装 Python3

[root@python ~]# yum -y install python3

2.2 创建并进入 Django 项目的目录

[root@python ~]# mkdir project
[root@python ~]# cd project

2.3 将 Django 项目的目录指定为 Django 环境

[root@python project]# python3 -m venv django_env

2.4 进入 Django 环境

[root@python project]# source django_env/bin/activate
(django_env) [root@python project]# pip install django==1.11.6
Collecting django==1.11.6
  Downloading https://files.pythonhosted.org/packages/82/33/f9d2871f3aed5062661711bf91b3ebb03daa52cc0e1c37925f3e0c4508c5/Django-1.11.6-py2.py3-none-any.whl (6.9MB)
    100% |████████████████████████████████| 7.0MB 12kB/s 
Collecting pytz (from django==1.11.6)
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=15)",)': /simple/pytz/
  Downloading https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl (509kB)
    100% |████████████████████████████████| 512kB 15kB/s 
Installing collected packages: pytz, django
Successfully installed django-1.11.6 pytz-2019.3
You are using pip version 9.0.3, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(django_env) [root@python project]# 


补充:
1) 这里以安装 1.11.6 版本的 django 为例
2) 如果向直接安装最新版本的 django 可以使用 pip install django 命令

2.5 检验 Django 环境是否成功

(django_env) [root@python project]# python
Python 3.6.8 (default, Aug  7 2019, 17:28:10) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.__version__
'1.11.6'
>>> exit()

步骤三:创建 mysite 项目
3.1 创建 mysite 项目

(django_env) [root@python project]# django-admin startproject mysite

3.2 mysite 项目的目录
3.2.1 安装 tree 目录查看软件

# yum -y install tree

3.2.2 查看 mysite 项目的目录

(django_env) [root@python project]# cd mysite
(django_env) [root@python mysite]# tree
.
├── manage.py
└── mysite
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 5 files

3.3 Django 项目目录介绍

1) mysite 此 Django 项目的容器
2) manage.py 命令行工具,与 Django 项目进行交互
3) mysite/init.py 空文件,通知 Python 此项目是一个 Python 包
4) mysite/settings.py 此 Django 项目的配置文件
5) mysite/urls.py 此 Django 项目的 URL 声明和 Django 的网站“目录”
6) mysite/wsgi.py WSGI 兼容 Web 服务器的入口

步骤四:启动 Django 服务
4.1 启动 Django 服务

(django_env) [root@python mysite]# python manage.py runserver 0.0.0.0:8000
Performing system checks...

System check identified no issues (0 silenced).
February 27, 2020 - 05:35:30
Django version 1.11.6, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

(补充:这里以使用 8000 端口开启网站服务为例)

4.2 测试 Django 服务

通过浏览器访问以下网址:

http://127.0.0.1:8000/admin

[实验] LNMP 平台的搭建 (CentOS 8 版)

步骤目录:

步骤一:LNMP 简介

步骤二:系统环境要求

步骤三:搭建 LNMP
3.1 Nginx 网页服务
3.1.1 安装 Nginx 网页服务
3.1.2 配置 Nginx 网页服务的配置文件
3.1.2.1 删除原有的 Nginx 网页服务的配置文件
3.1.2.2 创建新的 Nginx 网页服务的配置文件
3.1.2.3 配置 Nginx 网页服务的配置文件
3.1.3 启动 nginx 网页服务
3.2 MariaDB 数据库
3.2.1 安装 MariaDB 数据库
3.2.2 启动 MariaDB 数据库
3.3 PHP 环境和连接服务
3.3.1 安装 PHP 环境和连接服务
3.3.2 创建提供 php 连接服务的用户
3.3.3 配置 PHP 连接服务的配置文件
3.3.4 启动 PHP 连接服务

步骤四:后续工作

步骤五:测试 LNMP 平台

具体的操作步骤:

步骤一:LNMP 简介

LNMP 是一个实现网站服务的方法,它由 4 样东西组成:
1) Linux 系统
2) Nginx 网页服务
3) MariaDB 数据库
4) PHP 网页程序

步骤二:系统环境要求

1) 服务器的系统需要是 CentOS 8 版本
2) 服务器要关闭防火墙
3) 服务器要关闭 SELinux
4) 服务器系统要配置好可用的软件源

步骤三:搭建 LNMP
3.1 Nginx 网页服务
3.1.1 安装 Nginx 网页服务

# yum -y install nginx

3.1.2 配置 Nginx 网页服务的配置文件
3.1.2.1 删除原有的 Nginx 服务的配置文件

# rm /etc/nginx/nginx.conf

3.1.2.2 创建新的 Nginx 网页服务的配置文件

# cp /etc/nginx/nginx.conf.default /etc/nginx.conf

3.1.2.3 配置 Nginx 网页服务的配置文件

# vi /etc/nginx/nginx.conf

将其中的:

......
        location / {
            root   html;
            index  index.html index.htm;
        }
......
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
......

修改为:

......
        location / {
            root   html;
            index  index.php index.html index.htm;
        }
......
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }
......

(补充:这里以让 Nginx 将对于 PHP 的请求传递到本机的 9000 端口为例)

3.1.3 启动 nginx 网页服务

# systemctl start nginx

3.2 MariaDB 数据库
3.2.1 安装 MariaDB 数据库

# yum -y install mariadb mariadb-server

3.2.2 启动 MariaDB 数据库

# systemctl start mariadb

3.3 PHP 环境和连接服务
3.3.1 安装 PHP 环境和连接服务

# yum -y install php php-fpm php-mysqlnd php-gd php-mbstring php-opcache php-json php-xml

3.3.2 创建提供 PHP 连接服务的用户

# useradd php-fpm -s /sbin/nologin

3.3.3 配置 PHP 连接服务的配置文件

# vi /etc/php-fpm.conf

添加以下内容:

......
[www]
user = php-fpm
group = php-fpm
listen = 127.0.0.1:9000

(补充:这里以让 php-fpm 监听本地 9000 端口为例)

3.3.4 启动 PHP 连接服务

# systemctl start php-fpm

步骤四:后续工作

1) 给 MariaDB 数据库设置用于存储网页数据的用户和密码
2) 将 PHP 网页程序放到 Nginx 的网页目录下
3) 给 PHP 网页程序设置用于连接 MariaDB 数据库的用户和密码

步骤五:测试 LNMP 平台

使用浏览器访问服务器 IP 地址就可以看到对应 PHP 网页了

[步骤] Linux Nginx 源码安装包的管理 (通过 systemd 实现)

注意:在通过 systemd 管理源码安装的软件或自制 rpm 包安装的软件(以 Nginx 为例)之前,先要源码安装 Nginx 或者自制 rpm 包安装 Nginx

正文:

步骤目录:

步骤一:创建 Nginx 的 systemd 文件

步骤二:导入新创建的 Nginx systemd 配置文件

步骤三:使用 systemd 管理 Ngixn
3.1 使用 systemd 启动 Nginx
3.2 使用 systemd 开机自启 Nginx
3.3 使用 systemd 查看 Nginx 的状态

具体的操作步骤:

步骤一:创建 Nginx 的 systemd 文件

# vim /etc/systemd/system/nginx.service 

创建以下内容:

[Unit]

Description=nginx server daemon

Documentation=man:nginx(8)

After=network.target

[Service]

Type=forking

ExecStart=/usr/local/nginx/sbin/nginx

ExecReload=/usr/local/nginx/sbin/nginx -s reload

ExecStop=/usr/local/nginx/sbin/nginx -s stop

PrivateTmp=true

[Install]

WantedBy=multi-user.target

步骤二:导入新创建的 Nginx systemd 配置文件

# systemctl daemon-reload

步骤三:使用 systemd 管理 Ngixn
3.1 使用 systemd 启动 Nginx

# systemctl start nginx.service

3.2 使用 systemd 开机自启 Nginx

# systemctl enable nginx.service

3.3 使用 systemd 查看 Nginx 的状态

# systemctl status nginx.service

[步骤] Nginx 日志的切割

注意:

在设置 Nginx 自动化日志切割并保存之前要先安装 Nginx

正文:

内容一:切割 Nginx 日志的原理

# mv access.log access2.log
# kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

内容二:切割 Nginx 日志的 Shell 脚本

# mkdir -p /usr/local/nginx/
# vim /usr/local/nginx/nginxlog.sh

创建以下内容:

#!/bin/bash
date=$(date +%Y%m%d)
logpath=/usr/local/nginx/logs
mv $logpath/access.log $logpath/access-$date.log
mv $logpath/error.log   $logpath/error-$date.log
kill -USR1 $(cat $logpath/nginx.pid)

内容三:设置 Nginx 日志切割的自动化任务

# crontab -e
03 03 * * 5 /usr/local/nginx/nginxlog.sh

(补充:这里以每周五的 3 点 3 分执行 /usr/local/nginx/nginxlog.sh 命令为例)