当前位置: 首页 > 后端技术 > Node.js

从零到一个搭建自己的个人域名网站

时间:2023-04-03 13:04:11 Node.js

本文只是一个简单的前端项目部署,不涉及后台。以githubaction为例(CI/CD)。目前暂定项目为demo(可自行调整)环境node安装(注意如果是macM1.版本固定安装为14.17.0)本地创建项目npxcreate-react-appdemogithub创建repository创建一个名字叫demo配置Github的公私钥私钥在本地,公钥可以在github上分发配置提交本地代码到githubgitinitgitadd.gitcommit-m'a'gitremoteaddorigingit@github.com:***/demo.gitgitpush-uoriginmaster买服务器可以买阿里云、腾讯云等的云主机(我这里买的是UCloud的ubuntu)。记住服务器的用户名和密码以及登录服务器的外网IP,在/home/ubuntu目录下创建目录demo用于存放项目。登录服务器并生成公私钥,进入githubdemo目录,点击右上角设置,选择,secrets。新名称:SSH_PRIVATE_KEY值:服务器中设置的私钥值。在github中创建actionname:测试构建和部署siteon:push:branches:-masterjobs:CI_CD:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v2-uses:actions/setup-node@v2-betawith:node-version:14-运行:npmci-运行:npmrun-scriptbuild-使用:wlixcc/SFTP-Deploy-Action@v1.0with:username:'***'#Serverusernameserver:'****'#服务器外网IPssh_private_key:${{secrets.SSH_PRIVATE_KEY}}#参考之前创建的secretlocal_path:'./build/*'#对应我们项目build的文件夹路径remote_path:'/home/ubuntu/demo'我们指定代码应该放在服务器上的目录。在服务器中配置nginx。首先安装nginx1。修改nginx默认端口下的default文件/etc/nginx/sites-available2.在/etc/nginx/conf.d目录下创建demo.conf文件server{listen80;#项目路径根'/home/ubuntu/demo';indexindex.htmlindex.htm;location/{try_files$uri$uri//index.html;}位置^~/资产/{gzip_static开启;过期最大值;add_header缓存控制公共;}error_page500502503504/500.html;client_max_body_size20M;keepalive_timeout10;直接访问地址购买域名可以在阿里云、腾讯云等购买,域名购买成功后,在域名记录后面添加域名和ip(服务器外网IP)的映射域名被访问。这时候网站就可以通过http://域名地址直接访问到这里了,基本就结束了。但是访问的时候会提示http不安全。此时需要升级https服务器生成Let'sEncrypt(SSL)证书#安装cerbotaptinstallcertbot#生成证书命令sudocertbotcertonly--emailmailbox--webroot-w/home/ubuntu/demo-d域名-d域名#-w指定代码所在目录后#-d指的是域名(可以生成支持多域名的证书)并将证书配置到nginxserver{listen443;server_name域名;root'/home/ubuntu/demo';指数指数。html索引.htm;SSL开启;ssl_certificate/etc/letsencrypt/live/***/fullchain.pem;ssl_certificate_key/etc/letsencrypt/live/***/privkey.pem;location/{try_files$uri$uri//index.html;}location^~/assets/{gzip_staticon;过期最大值;add_header缓存控制公共;}error_page500502503504/500.html;client_max_body_size20M;keepalive_timeout10;}server{listen80;server_name域名;return301https://$server_name$request_uri;}证书永久有效目前Encrept的有效期只有三个月,可以设置永久有效crontab-e152**/2*cerbotrenew--quiet--renew-hook"sudoservicenginxrestart"完成后可以通过https://域名访问项目地址