从0开始搭建自己的个人网站(一)

前言

每个真的程序员可能都想过要做一个自己的个人网站,很不幸我也是其中一个...

那么作为一个前端而言,页面这一边自然是没有问题,但是怎么部署到服务器、服务器的配置这些可能比较头疼,在2016年的时候,我其实做过一个个人的博客系统,虽然他的生命周期只有半年,但是当时服务器配置基本上是找运维的朋友搭的,所以还是没有能转化为自己的东西。借今年双11云服务器很便宜这个契机,我准备再捣鼓一个博客/个人网站,并且还要记录下来,方便以后自己回顾(假如这个生命周期又只有半年,再过3年后又心血来潮就可以参考这个系列的文章了... 哈哈哈😂),同时也给有意向做个人网站的同学作为一个参考,或者说交流,因为我自己也是现学现用,肯定会有一些个人谬解,就还请多指正了。

说明

  1. 本文适合阅读对象:linux纯小白的前端
  2. 操作系统: CentOS 7.7 64位
  3. web服务器:nginx
  4. 版本控制:svn
  5. 前端使用vue-cli3
  6. 后端使用nest.js ,后面再把之前写的JAVA springMVC的版本整理出来
  7. 数据库: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端口,入口:,实例列表>更多>网络和安全组>安全组配置> 配置规则>添加安全组规则。切记切记!!如下图
    阿里云开启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部署
posted @ 2019-11-27 09:18  微人类  阅读(1222)  评论(0编辑  收藏  举报