Featured image of post 搭建LNMP环境并安装V2board

搭建LNMP环境并安装V2board

V2board安装教程

介绍

V2board是一款支持 V2ray/Shadowsocks/ShadowsocksR 的机场面板

准备

一台装有debian10的vps、一个能够正常解析的域名

部署LNMP环境

以下步骤为手动搭建lnmp环境,若使用lnmp一键包、oneinstack等可适当跳过

安装必要软件包

sudo apt update && apt upgrade -y
sudo apt install -y curl vim wget unzip apt-transport-https lsb-release ca-certificates git gnupg2 redis

安装nginx

sudo apt update
sudo apt install -y nginx

安装PHP

#添加软件源
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
#安装php7.4
sudo apt update
sudo apt install -y php7.4-fpm php7.4-redis php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-opcache php7.4-zip php7.4 php7.4-json php7.4-bz2 php7.4-bcmath

安装Mysql

wget https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb
sudo dpkg -i mysql-apt-config*
sudo apt install mysql-server
#根据提示设置密码

创建网站目录并安装V2board

sudo -i
mkdir -p /var/www/v2b
cd /var/www/v2b
git clone https://github.com/v2board/v2board.git ./
wget https://getcomposer.org/installer -O composer.phar
php composer.phar
php composer.phar install
chmod -R 755 ${PWD}
chown -R www-data:www-data ${PWD}

配置nginx及ssl

安装acme.sh
wget -O - https://get.acme.sh | sh
source ~/.bashrc

创建目录并删除nginx默认文件

rm -rf /etc/nginx/sites-enabled/default
mkdir -p /var/www/letsencrypt

在/etc/nginx/sites-enabled/acme中填写以下内容并执行systemctl restart nginx

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name _;

	location /.well-known/acme-challenge {
		root /var/www/letsencrypt;
	}

	location / {
		return 301 https://$host$request_uri;
	}
}

将域名解析到vps并执行

#example.com替换成你的域名
acme.sh --issue -d example.com -w /var/www/letsencrypt
mkdir -p /etc/nginx/ssl
acme.sh --install-cert -d example.com \
--key-file       /etc/nginx/ssl/example.com.key  \
--fullchain-file /etc/nginx/ssl/example.com.crt \
--reloadcmd     "service nginx force-reload"
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

在/etc/nginx/sites-enabled/sspanel.conf中填入以下内容,并执行systemctl restart nginx

#example.com替换成你的域名
server {
  listen 443 ssl http2 default_server;
  listen [::]:443 ssl http2 default_server;

  root /var/www/sspanel/public;
  index index.php index.html;
  server_name example.com;

  ssl_dhparam /etc/nginx/ssl/dhparam.pem;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
  ssl_prefer_server_ciphers on;

  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 1d;

  ssl_certificate /etc/nginx/ssl/example.com.crt;
  ssl_certificate_key /etc/nginx/ssl/example.com.key;
  add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
  add_header X-Frame-Options SAMEORIGIN;
  add_header X-Content-Type-Options nosniff;
  add_header X-XSS-Protection "1; mode=block";

  location /downloads {
  }

  location / {
    try_files $uri $uri/ /index.php$is_args$query_string;
  }

  location ~ .*\.(js|css)?$
  {
    expires      1h;
    error_log off;
    access_log /dev/null;
  }

  location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php7.4-fpm.sock;
  }
}

创建数据库并初始化

mysql -u root -p
mysql>CREATE DATABASE v2b;

php artisan v2board:install

配置定时任务

在corntab中添加以下内容

php /var/www/v2b/artisan schedule:run

配置守护进程

apt install supervisor
cat <<EOF >/etc/supervisor/conf.d/v2b
  autorestart=True      ; 程序异常退出后自动重启
  autostart=True        ; 在 supervisord 启动的时候也自动启动
  redirect_stderr=True  ; 把 stderr 重定向到 stdout,默认 false
  command=php artisan queue:work --queue=send_email,send_telegram,stat_server  ; 启动命令,与手动在命令行启动的命令是一样的
  user=root           ; 用哪个用户启动
  directory=/var/www/v2b/  ; 程序的启动目录
  stdout_logfile_maxbytes = 20MB  ; stdout 日志文件大小,默认 50MB
  stdout_logfile_backups = 0     ; stdout 日志文件备份数
  ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
  stdout_logfile = /var/log/v2bdm.log
EOF
Built with Hugo
Theme Stack designed by Jimmy