从零搭建个人网站服务器
准备前提
服务器(以阿里云的轻量应用服务器为列)
已经开发好的网站
服务器简介
内存: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.gz
cd nginx-1.12.2/
# 执行配置
./configure
# 编译安装(默认安装在/usr/local/nginx)
make
make 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 rootmysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladminmysqladmin -u root password "newpass"如果root已经设置过密码,采用如下方法mysqladmin -u root password oldpass "newpass"
方法3:用UPDATE直接编辑user表mysql -u rootmysql> use mysql;mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';mysql> FLUSH PRIVILEGES;
在丢失root密码的时候,可以这样mysqld_safe --skip-grant-tables&mysql -u root mysqlmysql> 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进行访问啦。
从零搭建个人网站服务器相关推荐
- 吃透这套架构演化图,从零搭建Web网站也不难
转载自 吃透这套架构演化图,从零搭建Web网站也不难 前言 工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对 ...
- 怎么配置搭建Nginx网站服务器
centos系统中怎么配置搭建Nginx网站服务器针对这个问题,今天小编总结这篇有关Nginx配置的文章,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助. 一 .Nginx服务基础Nginx (e ...
- 群晖python套件包_利用群晖Docker安装ubuntu16.04搭建python网站服务器(部署篇)
在帖子<利用群晖Docker安装ubuntu16.04搭建python网站服务器(安装篇)(地址:http://www.cirdown.com:81/thread-185-1-1.html)&g ...
- mysql webmail ubuntu12.04 imap_Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境)教程...
前言 看了网上很多关于用linux操作系统搭建网站服务器的教程,于是我自己也测试了很多,但今天所测试的 Ubuntu 12.04下搭建Web网站服务器 (MySQL+PHP+Apache环境),感觉这 ...
- 免费域名和空间搭建个人网站——服务器篇
免费域名和空间搭建个人网站 服务器篇 网上有很多免费的服务器,但是免费的都不好用,只能凑合一下啦~~ 当然你也可以购买一些像腾讯,阿里云或者国外的虚拟主机. 我用的是国内的主机屋 点击免费空间,选择立 ...
- 网站搭建:从零搭建个人网站教程(4)
系列文章 网站搭建:从零搭建个人网站教程(1) 网站搭建:从零搭建个人网站教程(2) 网站搭建:从零搭建个人网站教程(3) 网站搭建:从零搭建个人网站教程(4) 网站搭建:从零搭建个人网站教程(5) ...
- 群晖 python_利用群晖Docker安装ubuntu16.04搭建python网站服务器(安装篇)
折腾的原因:我目前有两个网站需要挂载,因为为了玩,并不是为了大流量,所以就挂在家里的群晖中.一个是小圈子(www.cirdown.com:81),因为用的是discuz论坛,php的,所以直接用我的黑 ...
- 网站搭建:从零搭建个人网站教程(2)
系列文章 网站搭建:从零搭建个人网站教程(1) 网站搭建:从零搭建个人网站教程(2) 网站搭建:从零搭建个人网站教程(3) 网站搭建:从零搭建个人网站教程(4) 网站搭建:从零搭建个人网站教程(5) ...
- 吃透这套架构演化图_从零搭建Web网站也不难!
摘要: 前言 工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对比较零碎,随时补充.俗话说得好,冰冻三尺非一日 ...
最新文章
- python读取txt文件第一行-python读取文本文件数据
- 2.3.4 信号量机制
- eclipse java 1.8 vm_GGTS(Eclipse)和JAVA 1.8中不兼容的JVM
- Web安全学习Week5
- Exchange 2016 批量添加X500地址,解决迁移后退信的问题
- Java 非阻塞 IO 和异步 IO
- 我认为最节省时间的CSS命名规范
- twisted系列教程十四— pre-fireed deferred
- java 基本类型共享_Java基础数据类型
- MySQL和Oracle的添加字段的处理差别
- 如何打造工业物联网帝国?
- 知识图谱组队学习Task03——图数据库导入数据
- 详析Exchange 2007/2010 SSL证书如何安装
- Spring(16)——使用注解进行bean定义
- 2012NOIP模拟试题
- MQTT 消息通信工具使用
- 网易严选App感受Weex开发
- 麻雀算法(SSA)优化的BP神经网络预测,SSA-BP回归预测,多输入单输出模型。
- 海信智能电视如何看电视直播
- Android 自定义写字板控件实现用图片做橡皮擦实现擦除功能
热门文章
- 云管理平台建设,这项功能必不可缺 ↓
- SAS 年月日时分秒转年月日
- python数据库操作sqlite_python操作数据库之sqlite3打开数据库、删除、修改示例
- vscode通过插件一键运行 c++单元测试
- C语言_文件篇(文件的打开,读取,写入,定位,关闭)
- dnf服务器预更新状态,DNF:95版本来临之前,这几点准备要做好,否则一更新你就傻眼...
- java工程师英文简历_软件工程师英文简历范文
- 【DGL学习2】编写自己的GNN模型(MPNN)
- pyqtgraph 在Opengl模式下开启抗锯齿效果
- 比小飞机好用, 开源免费冷门Fps硬件监测软件 CapFrameX 使用教程