从零搭建个人网站服务器

2023-11-02

准备前提

  • 服务器(以阿里云的轻量应用服务器为列)

  • 已经开发好的网站

服务器简介

内存:2G

CPU:2核

系统盘:60G

系统镜像:CentOs

已经预安装了PHP 与 Mysql

 

环境安装

 

1. node环境搭建

如果后端使用的是 node 开发,那需要安装 node 的运行环境

使用wget命令,下载文件

$wget https://nodejs.org/dist/v8.11.3/node-v14.16.1-linux-x64.tar.xz

解压

$xz -d node-v14.16.1-linux-x64.tar.xz$tar -xvf node-v14.16.1-linux-x64.tar

建立软连接

$ln -s /node-v14.16.1-linux-x64/bin/npm /usr/local/bin/ $ln -s /node-v14.16.1-linux-x64/bin/node /usr/local/bin/

检查是否安装成功

 

当可以显示node及npm版本时说明已经安装成功。

2. PM2环境搭建

PM2 是一个带有负载均衡功能的 Node 应用进程管理器。

全局安装 & 更新​​​​​​​

$ npm install pm2 -g# Or install the V2 release candidate$ npm install pm2@next -g# Install latest pm2 version$ npm install pm2 -g# Save process list, exit old PM2 & restore all processes$ pm2 update

建立软连接

$ln -s /usr/local/node/bin/pm2 /usr/local/bin/

检查是否安装成功

$ pm2

图片

pm2 常用命令

$ pm2 start app.js # 启动app.js应用程序$ pm2 start app.js -i 4        # cluster mode 模式启动4个app.js的应用实例
# 4个应用程序会自动进行负载均衡$ pm2 start app.js --name="api" # 启动应用程序并命名为 "api"$ pm2 start app.js --watch      # 当文件变化时自动重启应用$ pm2 start script.sh          # 启动 bash 脚本$ pm2 list                      # 列表 PM2 启动的所有的应用程序$ pm2 monit                    # 显示每个应用程序的CPU和内存占用情况$ pm2 show [app-name]          # 显示应用程序的所有信息$ pm2 logs                      # 显示所有应用程序的日志$ pm2 logs [app-name]          # 显示指定应用程序的日志$ pm2 flush                       # 清空所有日志文件$ pm2 stop all                  # 停止所有的应用程序$ pm2 stop 0                    # 停止 id为 0的指定应用程序$ pm2 restart all              # 重启所有应用$ pm2 reload all                # 重启 cluster mode下的所有应用$ pm2 gracefulReload all        # Graceful reload all apps in cluster mode$ pm2 delete all                # 关闭并删除所有应用$ pm2 delete 0                  # 删除指定应用 id 0$ pm2 scale api 10              # 把名字叫api的应用扩展到10个实例$ pm2 reset [app-name]          # 重置重启数量$ pm2 startup                  # 创建开机自启动命令$ pm2 save                      # 保存当前应用列表$ pm2 resurrect                # 重新加载保存的应用列表$ pm2 update                    # Save processes, kill PM2 and restore processes$ pm2 generate                  # Generate a sample json configuration file

更多内容请参考PM2官网:https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/

 

3. nginx安装

当你的项目比较多时,建议使用 nginx 进行代理管理。

安装步骤​​​​​​​

# 安装依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel# 解压缩tar -zxvf linux-nginx-1.12.2.tar.gzcd nginx-1.12.2/# 执行配置./configure# 编译安装(默认安装在/usr/local/nginx)makemake install

采坑指南:

  • 安装依赖时报下面的错误

Multilib version problems found. This often means that the root cause is something else and multilib version checking is just pointing out that there is a problem.

这是 yum 版本问题引起的,只需要更新 yum 版本即可

$ yum update
  • 编译时报错

make: *** No rule to make target build', needed bydefault'. Stop.

启动nginx

$ /usr/local/nginx/sbin/nginx

此时你会看到报错,说80端口已被占用,这是因为服务器默认将80端口设置为网站根目录 /home/www/htdocs

需要先找到80端口的PID,然后杀死该进程后重新启动nginx​​​​​​​

$ sudo lsof -i:80$ kill -9 显示出来的进程的PID值

如果提示说 lsof 不存在,那需要先进行安装 lsof

$ yum install lsof

当你访问80端口的时候看到下面就表示成功了

图片

 

4. 数据库设置

服务器已经预安装了 mysql 数据库,在实际使用中我们需要进行两个必要的设置。

修改数据库密码

数据库的默认密码比较长且复杂,不利于记忆。​​​​​​​

方法1:用SET PASSWORD命令
 mysql -u root

 mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
 mysqladmin -u root password "newpass"

 如果root已经设置过密码,采用如下方法

 mysqladmin -u root password oldpass "newpass"
方法3:用UPDATE直接编辑user表
 mysql -u root

 mysql> use mysql;

 mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';

 mysql> FLUSH PRIVILEGES;
在丢失root密码的时候,可以这样
 mysqld_safe --skip-grant-tables&

 mysql -u root mysql

 mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';

 mysql> FLUSH PRIVILEGES;

有可能你会遇到下面的报错

You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

意思是说在安全模式下不能更新,此时需要关闭安全模式

set sql_safe_updates=off;

置数据库所有IP均可访问

        数据库默认值允许本机IP访问,现实中,我们需要使用如 navicat 可视化工具,以及一起其他场景下查看数据库。​​​​​​​

mysql> GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'root'; mysql> FLUSH PRIVILEGES;

 

 

开启https

 

前提是你已经购买了域名,这里还是以阿里云平台为例。

在阿里云上购买SSL证书,有免费版的,每年可以申请20个单域名SSL证书。

图片

申请成功之后,这里选择下载 Nginx 类型。

将证书放到nginx的配置目录下,linux 中一般把nginx 安装在 /use/local/nginx 目录下;

图片

在 /use/local/nginx/conf/nginx.conf 中进行配置:​​​​​​​

server {  listen 443;    ssl on;   server_name www.dengzhanyong.com;   add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;  keepalive_timeout 70;  ssl_certificate cert/dengzhanyong.pem;   # 证书路径,相对路径   ssl_certificate_key cert/dengzhanyong.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;   location / {    root /home; # 访问路径    index index.html index.htm index.php;    try_files $uri $uri/ /index.html;  }
  location ~ \.php$ {  root /project/www;    fastcgi_pass 127.0.0.1:9000;    fastcgi_index index.php;    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;    include fastcgi_params; }}

将域名绑定到服务器

图片图片

 

全部设置完之后你就可以通过https进行访问啦。

 

​​​​​​​

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从零搭建个人网站服务器 的相关文章

随机推荐

  • 23个可以免费学习编程的网站

    英文 https medium com javascript in plain english 22 ways to learn coding for free in 2021 87a9c171132c 翻译 web前端开发公众号 ID w
  • Vue2.0选中当前鼠标移入移除加样式

    本人写的小程序 功能还在完善中 欢迎扫一扫提出宝贵意见 效果如gif动态图所示 1 通过v for遍历数组 HTML代码 1
  • 基于亚博K210开发板——串口中断以及开启双核任务

    文章目录 开发板 实验目的 实验准备 硬件原理图 软件对应SDK 对应的头文件 uart h uart h接口函数 高速通用异步收发传输器 UARTHS 对应的头文件 uarths h uarths h接口函数 板级对应的头文件 bsp h
  • C++之xlsx文件操作之写操作

    采用xlsxwriter开源库的实现 声明如下 include xlsxwriter include xmlwriter h include xlsxwriter include workbook h include xlsxwriter
  • 微信小程序 返回上一页面时实现上一页面刷新

    假如从页面B返回页面A时实现页面A刷新 页面B var pages getCurrentPages 当前页面栈 if pages length gt 1 var beforePage pages pages length 2 获取上一个页面
  • vite+electron构建桌面版应用教程超简单

    目录 概述 快速开始 目录结构 Electron Vite Vue 整合模板 结构简单 容易上手 概述 开箱即用 支持 C C 模块 支持在渲染进程中使用 Electron Node js API 结构清晰 可塑性强 很容易实现多窗口 快速
  • Java assert断言

    格式 assert 返回boolean的语句 方法 如果boolean为true 程序继续执行 否则抛出AssertionError 继承于Error而非Exception 表达系统级运行错误 终止程序 因此assert可以定位bug as
  • MySql学习笔记——负载均衡(二十三)

    load balance 当存在多台服务器提供一个任务时 需要从其中选择一台用来完成当前任务 选择的算法就是负载均衡 在mysql中往往会采用一写多读架构 因为一般读操作往往多余写操作 还有就是写操作的同步是个问题 一写多读中 读服务器需要
  • CP343-1 扩展ProfibusCPU 314C-2DP

    1 MPI编程电缆连接PLC 设置接口为PC Adapter MPI 1 如下图所示 2 硬件组态插入组态 建立ethernet 网络 编译后下载 3 CP343 1安装上后 CPU run不起来 组态更新后即可 转载于 https www
  • [OVD]Open-Vocabulary Object Detection Using Captions(CVPR. 2021 oral)

    1 Motivation Despite the remarkable accuracy of deep neural networks in object detection they are costly to train and sc
  • Llama2-Chinese项目:1-项目介绍和模型推理

    Atom 7B与Llama2间的关系 Atom 7B是基于Llama2进行中文预训练的开源大模型 为什么叫原子呢 因为原子生万物 Llama中文社区希望原子大模型未来可以成为构建AI世界的基础单位 目前社区发布了6个模型 如下所示 Flag
  • JS声明对象key为变量

    JS声明对象key为变量 给对象的键加方括号即可 如下 const roomName room roomName const roomDetail roomName roomDescription
  • 伪类和伪元素的区别是什么?

    一 两者的定义 1 伪类 pseudo class 是一个以冒号作为前缀 被添加到一个选择器末尾的关键字 当你希望样式在特定状态才被呈现到指定的元素时 你可以往元素的选择器后面加上对应的伪类 2 伪元素用于创建一些不在文档树中的元素 并为其
  • 【洛谷 P1093】[NOIP2007 普及组] 奖学金 题解(结构体排序)

    NOIP2007 普及组 奖学金 题目描述 某小学最近得到了一笔赞助 打算拿出其中一部分为学习成绩优秀的前 5 5 5 名学生发奖学金 期末 每个学生都有 3 3 3 门课的成绩 语文 数学 英语 先按总分从高到低排序 如果两个同学总分相同
  • 数组转换字符串

    一 数组转字符串 3种方法 toString toLocaleString join join JS 允许数组与字符串之间相互转换 其中 Array 方法对象定义了 3 个方法 如下 数组方法 说明 toString 将数组转换成一个字符串
  • Android 检测 手机硬件状态 的Utils

    package com cy tools import android annotation SuppressLint import android app Activity import android bluetooth Bluetoo
  • Github中如何给项目创建GitHub Pages官方网页

    实现效果图 我的项目是 https github com shunyue1320 uab ui 我需要给项目创建一个官方文档的网页如 https shunyue1320 github io uab ui 看着Github大项目都有一个高大上
  • 【网络代理】代理IP检测的知识

    做网络的基本都知道代理 这个是肯定的 不管是用花刺还是猎手的网页代理 还是直接VPN的通道代理 代理有着不用说大家也知道的重要性 不管是做CPA还是做点击亦或者投票 代理都能帮我们一下 虽然帮的忙不大 但是却很重要 下面风就网页代理而言 探
  • tkinter模块

    thinker模块 第一个thinker程序 导入thinker模块 import tkinter 创建Tk类的实例 本质是显示窗口 window tkinter Tk 设置窗口背景为蓝色 window background blue 设置
  • 从零搭建个人网站服务器

    准备前提 服务器 以阿里云的轻量应用服务器为列 已经开发好的网站 服务器简介 内存 2G CPU 2核 系统盘 60G 系统镜像 CentOs 已经预安装了PHP 与 Mysql 环境安装 1 node环境搭建 如果后端使用的是 node