前言
每個真的程序員可能都想過要做一個自己的個人網站,很不幸我也是其中一個...
那么作為一個前端而言,頁面這一邊自然是沒有問題,但是怎么部署到服務器、服務器的配置這些可能比較頭疼,在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部署