Windows系统下Nginx+PHP搭建兰空图床,实现typora自动化上传图片!

以前使用Gitee作图床,大小受限制,使用github做图床,速度又有些慢,就想着在本地搭建一个图床,兰空图床是一个php写的图床程序,图片上传速度快,界面优美且非常容易操作。
本次使用Nginx+PHP在windows系统下搭建图床,文章包括以下内容:

  • 搭建Nginx+PHP环境
  • Nginx配置站点
  • Nginx配置Https访问
  • 配置Nginx+PHP开机自动启动
  • 兰空图床安装
  • 兰空图床配置
  • PicGo图床配置(Typora支持的图床软件)
  • Windows配置软件开机自启动(配置nginx和php服务开机自启动)

注意: 本次搭建环境没有用到集成环境,所以内容比较多。若想要使用集成环境的,那么本文中只有图床安装图床配置PicGo图床配置 这三个章节对你有作用,, 请根据自身需要查看内容。当然,可能Nginx配置Https访问也对你有作用

兰空图床简介

官网上是这么介绍的:Lsky Pro 是一个用于在线上传、管理图片的图床程序,中文名:兰空图床,你可以将它作为自己的云上相册,亦可以当作你的写作贴图库。

  • 官网地址

  • 安装环境要求

    • mysql (版本5.7以上)
    • PHP >= 8.0.2
      • BCMath PHP 扩展
      • Ctype PHP 扩展
      • DOM PHP 拓展
      • Fileinfo PHP 扩展
      • JSON PHP 扩展
      • Mbstring PHP 扩展
      • OpenSSL PHP 扩展
      • PDO PHP 扩展
      • Tokenizer PHP 扩展
      • XML PHP 扩展
      • Imagick 拓展
      • exec、shell_exec 函数
      • readlink、symlink 函数
      • putenv、getenv 函数

Nginx配置

1. Nginx下载

官网下载地址

我下载的是1.2.3版本,下载后进行解压

2. 启动Nginx

  • 启动nginx,两种方法
    1. 进入nginx文件,双击nginx.exe
    2. 打开cmd,进入nginx解压目录下,输入命令 start nginx
  • 退出\重载操作
# 重载
nginx -s reload 
# 退出
nginx -s quit 

3. 配置PHP运行环境

打开nginx的配置文件,即/conf/nginx.conf,修改server部分,修改结果如下所示:

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.php index.html index.htm;
        }
        # 将原文件中以下代码取消注释,并修改成如下所示
        location ~ \.php$ {
        	# 该路径要与上面的location中的root一致
            root           html;
            # 该端口与cgi启动php的端口要一致
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            # 这里必须修改成如下所示
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

PHP配置

1. PHP下载

官网下载地址

下载版本选择8.1,因为兰空图床要求PHP最低版本为 8.0.2;

下载格式选择ZIP

2. 基础配置

将下载后的ZIP文件进行解压,进入解压后的文件夹中,新建php.ini文件,将文件php.ini-development中的所有内容拷贝到php.ini中。(或直接将该文件备份一份然后更名为php.ini)

打开php.ini文件,并修改以下配置

  • extension_dir

启用extension_dir(取消注释就是启用),并修改路径为ext文件(在解压的php包中)的绝对路径,如下所示

extension_dir = "E:\LocalServer\php-8.1.11\ext"
  • cgi.fix_pathinfo

启用cgi.fix_pathinfo并将其值设为1,该参数是用来设置cgi模式下PHP是否提供PATH_INFO信息,因为nginx默认不会设置PATH_INFO的值,所以需要通过上面的方法来提供,修改后如下所示

cgi.fix_pathinfo=1

3. 运行PHP

3.1 启动PHP

启动PHP需要使用 cgi , php的文件目录中存放有软件 php-cgi.exe ,然后打开cmd,将下行命令复制并运行:

# 进入php文件目录,运行下命令
php-cgi.exe -b 127.0.0.1:9000 -c php.ini 

注意:

  • 运行的cmd窗口是不能关闭的,否则PHP服务就会停止
  • cgi的监听端口要与上面Nginx配置文件中监听的cgi端口一致
3.2 查看phpinfo

进入Nginx的html目录,删除里面的所有文件,并新建index.php文件,文件内容如下:

<?php 
// 查看PHP的基本信息,包括版本,扩展等。
phpinfo();
?>

分别启动Nginx和PHP,若Nginx已经启动,需要重启一下。
在浏览器输入localhost,注意,这里的端口默认是80,是在上面的nginx中配置的,若想要配置其他端口,如8080,需要修改Nginx的配置文件,重启后访问:

// 或访问 127.0.0.1:8080,结果是一样的
localhost:8080

出现以下页面表示Nginx + PHP的环境已经搭建完成:
Nginx + PHP 环境

4. PHP 配置图床环境

4.1 开启基础扩展

根据兰空图床官网的要求,开启相应的扩展。

打开 php.ini 文件,在文件中查找对应的扩展,将兰空图床要求的扩展开启

# 如 Fileinfo、JSON、Mbstring、OpenSSL、PDO等扩展,直接在php.ini中取消注释即为开启扩展
# 如下所示
extension=mbstring
extension=openssl
extension=pdo_mysql
extension=pdo_odbc
4.2 安装Imagick扩展

兰空图床是需要php开启 Imagick 扩展的, 但php上无法直接开启该扩展, 需要我们手动安装 ImageMagick 软件, 还需要下载 Imagick的扩展文件, 即 Imagick.dll 文件, 具体操作如下:

先安装ImageMagick 软件,然后下载扩展文件(Imagick.dll)文件,将dll文件放入php解压目录中的 ext目录下,并在php.ini文件中任意位置添加extension=imagick

4.2.1 下载扩展

下载扩展文件时,版本选择ts(Thread-Safe线程安全),还是nts x86,还是x64,需要和下载时的php对应,可以在上面的phpinfo的页面中查看, 版本号不确定就下载最新版的,我这里选择的是3.1.2版本。

php基础信息
在这里插入图片描述

4.2.2. 添加扩展

将压缩包里的php_imagick.dll(全部dll文件),复制到php 扩展文件目录 php/ext 中。

并在 php.ini 配置文件中添加,extension=php_imagick.dll。

4.2.3 下载ImageMagick软件

ImageMagick下载地址

  • 该软件安装完成后,会自动添加环境变量,若没有环境变量,需要自己添加。
  • 安装完成后,打开cmd,输入 convert -version 会出现软件版本,表示安装成功,若返回 无效驱动器规格 (如下图所示),也没有关系,继续往下看。

在这里插入图片描述

4.2.4. 查看Imagick扩展是否开启

打开phpinfo,即上面配置的localhost,搜索imagick,结果如下所示,表示扩展开启成功:

php开启imagick扩展
至此,PHP的环境已经搭建完成,然后然后我们进入图床的安装以及Nginx站点的配置。

图床安装 以及 Nginx站点

若我们不想使用IP:端口的形式来访问我们搭建的图床,而是想要使用我们自定义的域名来访问图床,如 imghub.com , myImg.com等,请看一下配置。

1. 配置本地域名映射

  • 修改hosts文件

hosts文件路径:C:\Windows\System32\drivers\etc\hosts

文件中添加以下映射:

# 比如你想要使用 imghub.com 作为你的图床域名来访问,写法如下:
127.0.0.1      	imghub.com

**注意:**该文件是不可修改的,需要使用文本文档打开,修改以后保存,然后选择将原来的覆盖即可。

  • 查看配置是否生效
    打开cmd,输入ping imghub.com,出现以下结果说明配置成功。
    查看域名映射是否生效

2. 下载图床

图床下载地址

下载zip文件,将安装包解压,我存放在E:/LocalServer/Imghub路径下,我的文件目录结构如下:

在这里插入图片描述

3. Nginx 配置https访问

因为设置好的兰空图床如果想要在PicGo中添加的话,需要使用https的格式,所以要配置https访问,这里的配置我是参考这位博主的文章:Windows下Nginx配置支持HTTPS协议

3.1 安装OpenSSL

OpenSSL下载地址(根据系统选择32位或者64位版本下载安装)。

安装完成后添加openssl的bin目录到环境变量中

3.2 生成证书
3.2.1 创建证书存放目录

首先在Nginx的conf目录中创建 ssl 文件夹用于存放证书。这个目录不是必须的,看个人情况设置,我放在Nginx中主要是为了后续配置站点文件写路径方便。
然后在ssl文件夹中创建 imghub 文件夹, 用于存放图床的证书,我的文件目录结构如下:
在这里插入图片描述

3.2.2 创建私钥

在 E:/localServer/Nginx-1.2.2.0/conf/ssl/imghub 目录(这里我设置的用于存放证书的目录,写自己的路径即可)下打开cmd,
并执行命令:

# test文件名自己随便起即可
openssl genrsa -des3 -out test.key 1024    

过程中需要输入密码,记住此密码,后面会用到。

3.2.3 创建csr证书

同样在imghub的文件夹中打开cmd,并在命令行中执行命令:

# 其中test.key文件是上述命令生成的文件。
openssl req -new -key test.key -out test.csr 

执行上述命令后,会让我们输入一系列的信息。其中
Common Name填写图床要使用的域名,我是用的是imghub.com,其他内容随意填写即可。

以上步骤完成后,ssl文件夹内出现两个文件:test.csr 和 buduhuis.key

3.2.4 去除密码。

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令,否则会在启动nginx的时候需要输入密码。

复制test.key并重命名为test.copy.key

在命令行中执行如下命令以去除口令:

openssl rsa -in test.copy.key -out test.key

然后输入密码,这个密码就是上文中在创建私钥的时候输入的密码。

3.2.5 生成crt证书

在命令行中执行此命令:

openssl x509 -req -days 365 -in test.csr -signkey test.key -out test.crt

至此,证书生成完毕。imghub文件夹中一共生成了4个文件。
配置https服务器的时候,我们需要用到的是其中的test.crttest.key这两个文件。

4. 添加虚拟主机文件

创建完证书以后,创建图床对应的虚拟主机文件:

在 Nginx 的 conf 文件夹(和nginx.conf同目录)下创建 vhost 文件夹,并在vhost文件夹中创建imghub.conf文件,文件内容如下所示:

  • imghub.conf
	# 配置http://imghub.com访问
    server {
        listen       80;
        server_name  imghub.com;
	 	# 图床的访问日志存放地址
        access_log  E:\LocalServer\Imghub\logs\host.access.log ;

        location / {
        	# 必须要添加此行代码,否则无法进入安装界面
			try_files $uri $uri/ /index.php?$query_string;
			# 图床文件的存放路径
            root   E:\LocalServer\Imghub\html\public;
            index  index.php index.html index.htm;
        }
        location ~ \.php$ {
            root           E:\LocalServer\Imghub\html\public;
            # 该端口与cgi启动php的端口要一致
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            # 这里必须修改成如下所示
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   E:\LocalServer\Imghub\html\public;
        }
    }
    
	# 配置https://imghub.com 访问
	server {
        listen       443 ssl;
        server_name  imghub.com;

        ssl_certificate      ssl/imghub/test.crt;
        ssl_certificate_key  ssl/imghub/test.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            # 必须要添加此行代码,否则无法进入安装界面
			try_files $uri $uri/ /index.php?$query_string;
            root   E:\LocalServer\Imghub\html\public;
            index  index.php index.html index.htm;
        }
		
		location ~ \.php$ {
            root           E:\LocalServer\Imghub\html\public;
            # 该端口与cgi启动php的端口要一致
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
             # 这里必须修改成如下所示
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

5. Nginx引用虚拟主机文件

添加虚拟主机文件以后,需要在nginx.conf文件中引用,如下所示,然后nginx重新加载配置即可。

http{
	... # 原文件配置
	# 添加下行代码
	include vhost/*.conf; 
}

6. 安装mysql

MySQL需要安装 5.7版本以上的,安装教程网上一大堆,我就不赘述了,直接进入下个环节。

7. 安装兰空图床

若按照上述配置一步步配置下去,在浏览器中访问 imghub.com ,会进入兰空图床的安装界面:

7.1 环境监测

在这里插入图片描述

7.2 数据库配置

首先需要自己创建一个数据库,用来存放图片数据,然后点击立即安装即可

注意: 数据库字符集必须为 utf8mb4,排序规则必须为utf8mb4_general_ci,数据库引擎必须为 InnoDB

在这里插入图片描述

7.3 安装完成

如果你看到这一步,那么恭喜你,你的个人图床到此已经搭建完成!!!!
在这里插入图片描述

图床管理

兰空图床的主页面是这样的,你可以直接在这里上传图片:
在这里插入图片描述

1. 图片上传管理

在 我的图片 > 设置中,可以设置图片上传的指定相册,我的配置如下所示:
在这里插入图片描述

2. 路径管理

在我的图片 > 存储策略中,可以新建存储策略,并设置存储路径等信息。

兰空图床支持多种第三方储存,分别有 AWS S3、阿里云 OSS、腾讯云 COS、七牛云、又拍云、SFTP、FTP、WebDav、Minio。

在这里插入图片描述

PicGo图床配置

1. 获取图床token

V2.0版本的兰空图床不能直接查看token,需要通过其提供的接口获取token,可以在自己搭建的兰空图床上查看接口文档

  • token获取接口: https://你的网址/api/v1/token
  • 兰空图床接口文档:https://你的网址/api
    在这里插入图片描述

可以使用在线post工具进行获取,我这里使用的是Apifox

获取token的接口需要上传两个参数(json格式),email和password,即安装兰空图床时你输入的账号和密码

在这里插入图片描述

2. 配置PicGo

2.1 安装兰空图床插件

在PicGo中安装lankong插件

在这里插入图片描述

2.2 配置图床信息

参数设置如下

  • 版本: V2
  • Server:填写个人的网站地址,结尾不能加 /(注意)
  • Auth token :Bearer + 上一步获取的token,中间要有空格,示例如下
Bearer 1|SpOR5Y5Hfnasdasdwafwqefdwgkt4qzHSKuP6RZ
  • Stratrgy ID:除非你自己新建了存储策略,否则留空即可

  • Ignore certificate error: 由于有些站点使用 Let’s Encrypt 颁发的免费证书,有效期只有 90 天,在测试上传中可能遇到 certificate has expired 错误,请打开开关 Ignore certificate error 即可成功上传。

  • Sync Delete: 同步删除选项,只支持 V2,默认关闭,开启后在 PicGo 相册中删除图片可同步删除图床上的文件
    在这里插入图片描述
    至此,兰空图床的配置已经基本完成,但是,想想你每次开机都得去启动nginx,php 是不是非常麻烦,所以,下面我提供了在windows下自动启动的方法,若需要的话请继续往下看。

配置Nginx和PHP开机自启动

在windows上,设置开机自启动就是将自己编写的脚本注册成服务,然后在服务上设置开启自动启动,但是我们自己编写的脚本注册服务后经常会无法启动,因此,本文提供了使用第三方软件注册服务来使软件进行开机自启动的方案。

  • 具体流程:
    1. 使用第三方工具RunHiddenConsole ,编写bat脚本,主要是用于启动Nginx和PHP。 若想要启动自己的脚本,请跳过这一过程,直接到第二步。
    2. 使用第三方工具srvany , 将该bat脚本注册成windows服务,并在服务中设置开机自启动。

1. 编写bat脚本启动Nginx和PHP

RunHiddenConsole网盘下载链接

通过使用第三方工具RunHiddenConsole,编写bat脚本,脚本内容如下,路径根据自己的进行修改

:: 先关闭已有的nginx和php服务
@echo off
echo Stopping nginx...  
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul

:: 开启服务
@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5

REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000
 
echo 正在启动 FastCGI(PHP)...
RunHiddenConsole E:/LocalServer/php-8.1.11/php-cgi.exe -b 127.0.0.1:9000 -c E:/LocalServer/php-8.1.11/php.ini
 
echo 正在启动 nginx...
RunHiddenConsole  E:/LocalServer/nginx-1.22.0/nginx.exe -p E:/LocalServer/nginx-1.22.0

2. 将bat脚本注册成服务

srvany网盘下载链接

使用srvany修改注册表,来将bat脚本注册成服务。
下面的脚本中,你只需要修改你自己的脚本路径就能正常注册服务,其他的内容都不用改。

下载第三方脚本后,进行解压,然后使用管理员身份打开cmd,并输入以下命令:

  • 个别参数含义
    • NPS 表示我本次注册的服务的名字,调用srvany的路径要写绝对路径。当然如果在srvany的目录下进入的cmd,则不用写绝对路径。
    • 第三行代码作用是 将你的脚本所在路径添加到服务中
    • 第四行代码作用是 将你的脚本注册成服务
E:\LocalServer\srvany\instsrv.exe NPS E:\LocalServer\srvany\srvany.exe

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NPS\Parameters

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NPS\Parameters /v AppDirectory /d "E:\LocalServer\nginx-1.22.0" /t reg_sz /f

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NPS\Parameters /v Application /d "E:\LocalServer\nginx-1.22.0\start_nginx.bat" /t reg_sz /f                          

3. 设置开机自启动

在cmd中执行过上述脚本后,在windows的服务中就能查询到,

按Win + r,输入 services.msc,然后回车,进入services.msc界面
在这里插入图片描述

总结

若你根据教程到此,那么你已经配置出了自己的兰空图床,并且能够开机自启动,每次开机时,你只需要在浏览器中输入 imghub.com 就能进入你自己的图床,上传你的图片。是否很有成就感?哈哈哈。毕竟步骤真的很多。但是当你使用typora点击右键上传图片,并且弹出图片上传成功的那一刻,你会觉得这一切都只值得的!!!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
搭建RTMP流媒体服务,你需要完成以下两个步骤: 1. 安装Nginx和RTMP模块 2. 配置Nginx和RTMP模块 下面我将为你详细介绍如何完成这两个步骤。 ## 安装Nginx和RTMP模块 ### 安装Nginx 首先,你需要安装Nginx。在Ubuntu系统上,可以使用以下命令进行安装: ``` sudo apt-get update sudo apt-get install nginx ``` 安装完成后,你可以使用以下命令验证Nginx是否成功安装: ``` nginx -v ``` 如果成功安装,你应该可以看到Nginx的版本信息。 ### 安装RTMP模块 安装Nginx后,你需要安装RTMP模块。RTMP模块可以让Nginx支持RTMP协议,从而实现流媒体服务。 在Ubuntu系统上,你可以使用以下命令下载RTMP模块: ``` sudo apt-get install libnginx-mod-rtmp ``` 安装完成后,你需要启用RTMP模块。可以使用以下命令启用: ``` sudo ln -s /usr/share/nginx/modules-available/mod-rtmp.conf /etc/nginx/modules-enabled/ sudo ln -s /usr/share/nginx/modules-available/mod-rtmp.load /etc/nginx/modules-enabled/ ``` ## 配置Nginx和RTMP模块 安装完成Nginx和RTMP模块后,你需要配置Nginx和RTMP模块以实现流媒体服务。 ### 配置Nginx 首先,你需要编辑Nginx的配置文件。可以使用以下命令打开默认Nginx配置文件: ``` sudo nano /etc/nginx/nginx.conf ``` 在文件末尾添加以下代码: ``` rtmp { server { listen 1935; chunk_size 4096; application live { live on; record off; } } } ``` 这里我们定义了一个RTMP服务器,它将监听1935端口并支持流媒体服务。在application块中,我们定义了一个名为live的应用程序,它将允许直播,并关闭录制。 ### 启动Nginx 完成Nginx配置后,你需要启动Nginx。可以使用以下命令启动: ``` sudo service nginx start ``` ### 配置推流和拉流 现在,你可以使用推流软件将视频流推送到服务器上。例如,可以使用OBS Studio或FFmpeg进行推流。 在OBS Studio中,你需要配置以下设置: - 流类型:自定义流服务器 - URL:rtmp://your-server-ip:1935/live - 流关键字:随意命名 在FFmpeg中,你可以使用以下命令进行推流: ``` ffmpeg -re -i input.mp4 -c copy -f flv rtmp://your-server-ip:1935/live/stream-name ``` 这里我们将本地input.mp4文件推流到服务器上,流名称为stream-name。 完成推流后,你可以使用以下命令进行拉流: ``` ffplay rtmp://your-server-ip:1935/live/stream-name ``` 这里我们使用ffplay命令进行拉流。你也可以使用其他支持RTMP协议的播放器进行拉流。 到这里,你已经成功搭建了RTMP流媒体服务。祝你好运!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值