从0开始搭建自己的个人网站(一)
前言
每个真的程序员可能都想过要做一个自己的个人网站,很不幸我也是其中一个...
那么作为一个前端而言,页面这一边自然是没有问题,但是怎么部署到服务器、服务器的配置这些可能比较头疼,在2016年的时候,我其实做过一个个人的博客系统,虽然他的生命周期只有半年,但是当时服务器配置基本上是找运维的朋友搭的,所以还是没有能转化为自己的东西。借今年双11云服务器很便宜这个契机,我准备再捣鼓一个博客/个人网站,并且还要记录下来,方便以后自己回顾(假如这个生命周期又只有半年,再过3年后又心血来潮就可以参考这个系列的文章了... 哈哈哈😂),同时也给有意向做个人网站的同学作为一个参考,或者说交流,因为我自己也是现学现用,肯定会有一些个人谬解,就还请多指正了。
说明
- 本文适合阅读对象:linux纯小白的前端
- 操作系统: CentOS 7.7 64位
- web服务器:nginx
- 版本控制:svn
- 前端使用vue-cli3
- 后端使用nest.js ,后面再把之前写的JAVA springMVC的版本整理出来
- 数据库:mysql
linux常用操作:
//查看文档
vim xxx
i
esc
//保存退出
!wq
//强制(不保存)退出
!q
//查看80端被哪个服务占用的
netstat -apn|grep 80
//强制关闭某端口
kill -9 15516
//相当于浏览器访问某地址
curl http://
1. 安装svn
就像写文档一定要注意备份一样,做所有的事情之前首先将我们的代码版本控制起来,这里暂时选择svn,后续可能会切git
//使用yum安装
yum install subversion
在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下面,创建成功后在svn下面多了几个文件夹。
[root@localhost /]# cd /home
[root@localhost home]# mkdir svn
[root@localhost home]# svnadmin create /home/svn
[root@localhost home]# ls svn
conf db format hooks locks README.txt
特别关注一下conf文件夹,这个是存放配置文件的
[root@localhost home]# cd svn/conf
[root@localhost conf]# ls
authz passwd svnserve.conf
其中:
authz 是权限控制文件
passwd 是帐号密码文件
svnserve.conf 是SVN服务配置文件
接下来我们依次修改这3个文件。
配置passwd
//创建了3个用户,一个test1,一个test2
[root@localhost conf]# vi passwd
[users]
helijun=xxx
test1=123456
test2=123456
配置authz
[root@localhost conf]# vi authz
[/] //仓库下所有文件
helijun=rw
test1=r
test2=r
*=
配置svnserve.conf
// 不可以有空格
[root@localhost conf]# vi svnserve.conf
// 打开下面的5个注释
anon-access = read #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /home/svn # 认证空间名,版本库所在目录,改成自己svn所在目录!!!
启动与停止
// -d表示守护进程, -r 表示在后台执行
[root@localhost conf]# svnserve -d -r /home/svn(启动)
[root@localhost conf]#killall svnserve(停止)
客户端连接
输入地址svn://你的IP,默认端口3690,如果修改了端口,那么要记得加上端口
ps:如果连接不上,检查云服务器是否开启了3690端口,要去阿里云控制台检查
svn配合nginx实现提交代码自动更新 (真实在这里卡了比较长时间)
有时候我们希望提交代码到svn后,网站访问到内容就能自动拉取到最新的,可以使用svn的hook,原理就是检测到有commit触发一个可以理解为函数,函数逻辑就是将最近的代码同步到指定目录,而这个目录又刚好是nginx映射的对应目录。按照以下代码敲一遍基本上就可以了,已经要注意几个目录路径!
// 利用svn hooks
cd /home/svn/hooks/
cp post-commit.tmpl post-commit
vim post-commit
//修改为
#!/bin/sh
REPOS="$1"
REV="$2"
TXN_NAME="$3"
WEB=/usr/local/静态页面目录(需修改) #nginx root目录
export LANG=en_US.UTF-8
svn update $WEB --username helijun(对应rw权限的svn用户) --password xxx
//给post-commit添加可执行权限
chmod a+x post-commit
//注意:在web目录更新一次,之后每次提交后才会自动更新,否则不会自动更新
cd /usr/local/静态页面目录
svn checkout svn://182.92.xxx.xxx/...
nginx安装及使用
// 下载nginx压缩包
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
// 配置nginx安装所需的环境
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
// 解压
tar -zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1
// 默认配置,
./configure
// 编译安装nginx
make
// 安装
make install
// 这时候返回上一级目录,就会发现多了nginx目录,接下来,启动nginx
// 进入/usr/local/nginx/sbin目录
./nginx
// 关闭nginx
./nginx -s quit 或者 ./nginx -s stop
// 重启nginx
./nginx -s reload
// 查看nginx进程
ps aux|grep nginx
// 设置nginx开机启动,需在rc.local增加启动代码
vim /etc/rc.local
然后在底部增加/usr/local/nginx/sbin/nginx
如果输入服务器ip无法访问
以上配置之后理论上是可以通过ip直接访问到nginx那个动人的welcom to nginx页面的,但是现实情况我在这里卡了好久,如也遇到这种情况请检查:
- 先在本地服务器用curl访问以下ip,如果有页面元素接着按下面检查
- 防火墙是否关闭
- 阿里云管理后台是否开启了80端口,入口:,实例列表>更多>网络和安全组>安全组配置> 配置规则>添加安全组规则。切记切记!!如下图
关于centos 7 中service iptables stop 指令使用失败的结局方案
首先不管防火墙有没有关 都使用systemctl stop firewalld 关闭防火墙
然后使用 yum install iptables-services 安装或更新服务
再使用systemctl enable iptables 启动iptables
最后 systemctl start iptables 打开iptables
大功告成
再试试service iptables start
nignx映射静态页面
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
# 根目录访问
location / {
root /usr/local/静态页面目录/;
index index.html index.htm;
}
# 禁止访问到svn目录
location ~* /\.svn/ {
deny all;
}
到这里就可以基本实现了静态的个人网站页面访问了,
mysql安装
由于后台使用的是nest.js,(这个框架我也是现学现用,跟spring的mvc思想非常相似,另外typescript也是从入门到使用)为了测试nest连接数据库,我这里要先安装了mysql
// 下载安装包
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
// 安装
sudo rpm -ivh mysql57-community-release-el7-8.noarch.rpm
sudo yum install mysql-server
// 设置密码
// 当第一次启动MySQL服务器时,为MySQL根用户生成一个临时密码。 您可以通过运行以下命令找到密码
sudo grep 'temporary password' /var/log/mysqld.log
// 如果这个文件为空:
1.删除原来安装过的mysql残留的数据(这一步非常重要,问题就出在这)
rm -rf /var/lib/mysql
2.重启mysqld服务
systemctl restart mysqld
3.再去找临时密码
grep ‘temporary password’ /var/log/mysqld.log
localhost:后边的就是临时密码,先复制下来
// 配置mysql安装项:
sudo mysql_secure_installation
// 输入刚才的临时密码
// 接下来mysql会提示你输入新的密码,和一下其他设置,一般情况下我们都会输入y(密码必须至少包含8个字符并且至少包含一个大写字母,一个小写字母,一个数字和一个特殊字符。)
如果出现1130错误:1130 - Host XXX is not allowed to connect to this MySQL server。
1. mysql -u root -p
2. use mysq;
3. select host from user where user='root';
//可以看到当前主机配置信息为localhost.
4.执行update user set host = '%' where user ='root';
// 将Host设置为通配符%,Host设置了“%”后便可以允许远程访问。
5. flush privileges;
//配置立即生效
6. 使用navicat 成功连接至mysql
修改密码:
ALTER USER USER() IDENTIFIED BY 'mysql的密码';
先写到这里 2019-11-27 00:21
后续的一个简要目录
- 使用https
- nest基本使用 >> nest实现一个增删改查
- 按照node环境,部署nest项目
- mysql表结构设计
- vue cli3生成项目,及基本的构架设计,工程化思想
- ...
- docker部署