不使用宝塔部署博客系统

前言

有人问我不使用宝塔怎么部署博客系统,因为这个部署还是很麻烦的,所以我这里就单独写个文章吧,顺便自己也可以熟悉一下Nginx指令的编写

Nginx和PHP

Nginx安装

到官网 Install | NGINX 下载

vim /etc/yum.repos.d/nginx.repo
# 里面换成下面这个
[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
# 然后安装一下
yum install nginx
# 开启Nginx服务器
sudo systemctl start nginx
# 修改配置文件
vim /etc/nginx/conf.d/default.conf

修改配置文件

可以使用下面的命令来重启Nginx

sudo systemctl restart nginx

我们也可以通过修改一下location这个来修改一下我们默认的存储路径

可以查看一下Nginx版本

可以修改一下Nginx的权限 vim /etc/nginx/conf.d/default.conf

PHP安装

PHP安装可以使用下面的命令

sudo clean all
sudo yum update
sudo yum install yum-utils
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --disable 'remi-php*'
sudo yum-config-manager --enable remi-php80
sudo yum update
sudo yum install php
php -v

还需安装php-fpm yum install php-fpm

设置自启动 systemctl enable --now php-fpm

然后我们修改一下php-fpm的监听方式,因为默认是监听ip地址的,使用UNIX Domain Socket会更快一些

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

Nginx支持PHP

下面我们就可以配置一下PHP,继续修改配置文件,首先我们先看一下Nginx的用户组

cat /etc/nginx/nginx.conf

默认是Nginx,当然你也可以自己替换

然后我们修改一下 /var/run/php-fpm 的用户组,让Nginx也可以访问(如果设置了root身份就不需要了)

chown nginx:nginx /var/run/php-fpm.sock

然后修改一下Nginx配置文件,让它代理php

vim /etc/nginx/conf.d/default.conf
# 加入下面这段代码,里面的root需要根据自己的要求来修改
location ~ \.php$ {
        root /usr/share/nginx/blog;
        fastcgi_pass   unix:/var/run/php-fpm.sock;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

# 重载Nginx服务
nginx -s reload

自己在Nginx根目录新建一个文件,里面的代码如下

然后自己刷新一下Nginx,就可以发现php已经可以支持了

mongodb安装

参考这个: Install MongoDB Community Edition on Red Hat or CentOS — MongoDB Manual

这里我就不写了,参考官方文档安装即可,然后自己修改一下配置文件

vim /etc/mongod.conf

如果自己想本地调试可以把这个改一下,不过如果是是服务器不建议改,要不然别人可以进入你的数据库

启动MongoDB命令

sudo systemctl start mongod

可以自己使用navicate连接MongoDB

博客系统安装

后端部署

对于go来说,我们可以使用交叉编译来进行编译

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go

然后我们需要复制一下下面这几个文件,然后上传到服务器

自己上传到服务器,然后解压

我们使用下面的命令启动博客系统

./main

如果想后台启动

./main install
./main start

前端部署

然后我们再上传PHP,把所有文件打包上传就可以了,自己修改一下index.php, 上面这个改成自己的

然后我们配置一下伪静态 vim /etc/nginx/conf.d/default.conf 把这个加进去,自己记得吧默认的 location / 删了,要不然会无法重启,Nginx重载配置 nginx -s reload

underscores_in_headers on;
location /{
 try_files $uri $uri/ /index.php?$args;
}
location /admin{
 try_files $uri $uri/ /admin/index.html?$args;
}
location ~^/(api|assets|upload|plugins){
    proxy_pass http://127.0.0.1:2333;
    proxy_set_header X-Real-IP $remote_addr;
    add_header Cache-Control no-cache;
}
location /ws{
   proxy_pass http://127.0.0.1:2333;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";
   proxy_set_header X-Real-IP $remote_addr;
}

还有必须要自己再指定一下根目录,要不然会无法识别,还有记得把index也打开

然后再访问就应该没问题了

其他

PHP打印错误日志

修改一下php.ini 文件(vim /etc/php.ini),把下面这个打开

然后重启一下php-fpm

查看Nginx错误日志

tail -f /var/log/nginx/error.log

出现了[crit] 35894#35894: *28 connect() to 127.0.0.1:2333 failed (13: Permission denied) 这个错误。。

这个好像是被Linux拦截了。。。(设置SELinux 成为permissive模式)

setenforce 0

参考文章

Install MongoDB Community Edition on Red Hat or CentOS — MongoDB Manual

(8条消息) CentOS8搭建Web服务器笔记1 Nginx+Php8基础环境_老富的博客-CSDN博客_nginx php8

如何在Ubuntu 20.04上安装PHP 8 - Linux迷 (linuxmi.com)

How to Install Nginx and PHP 8 on Debian 10 | Hostup

nginx 转发错误 13 permission denied_沸腾不起来时,就安静沉淀-CSDN博客