如何從零搭建一個網(wǎng)站

如果你喜歡本文,請多多支持哈,小手一抖,點個小小的紅心就是莫大的鼓舞。創(chuàng)作不易,嚴禁未經(jīng)同意的惡意轉(zhuǎn)載!

image.png

網(wǎng)站建設的方式有哪些?

  1. 應用引擎:GAE,ACE,BAE,SAE,其中ACE是阿里云的應用引擎,現(xiàn)在已經(jīng)下線
  2. GitHub配合Hexo,并利用NexT主題建設博客網(wǎng)站
  3. ECS云服務器

前面兩種都是本人比較早期使用過的,比較方便快捷,但是定制與推廣不便,沒有特別大的商業(yè)價值?,F(xiàn)在主流的網(wǎng)站依然是ECS云服務器,雖然稍微有些復雜麻煩,但是長期來講,它都是最優(yōu)解。

為了讓這篇建站教程更加簡潔,這里對一些簡單的步驟,比如:

  1. 域名購買步驟
  2. 服務器購買步驟

選擇性略過,大家可以直接去對應網(wǎng)站,像淘寶購物一樣,登錄后直接購買即可,網(wǎng)站里面已經(jīng)描述的足夠詳細,這里就不再贅述。

ECS云服務器

image.png

開始建設網(wǎng)站之前,第一步肯定是:云服務器,用于存儲網(wǎng)站的HTML,MySQL數(shù)據(jù)庫,圖片文件,PHP/JAVA代碼等等。

推薦:

  1. 阿里云
  2. 騰訊云

域名

登錄:萬網(wǎng)購買

image.png

購買ECS服務器后,你就擁有一個公網(wǎng)IP,如果網(wǎng)站搭建起來了,就可以直接訪問了,如:192.168.1.100
但是只有一個IP,用戶是記不住的,總不能每次訪問都輸入:192.168.1.100 去訪問你的網(wǎng)站吧。

所以如果想要真正運營起來,想要流量,還需要申請一個域名,瀏覽器輸入域名,就等于是映射訪問了 192.168.1.100 這個地址。

IP相當于你的身份證,域名就相當于你的名字!

DNS服務器

image.png

上述提到 域名-IP地址 是對應關(guān)系,而存儲這個映射關(guān)系的就需要DNS服務器這個重要角色,DNS服務器一般都是域名服務商免費提供的,不需要我們注冊,只需去阿里云/騰訊云的控制臺配置即可:

image.png

平時我們訪問網(wǎng)址,一般都使用:
xx.com或者www.xx.com,所以只需要增加兩種記錄類型即可!

記錄一

主機記錄:@
記錄類型:A
解析線路(isp):默認
記錄值:101.35.99.239
TTL:10分鐘

記錄二

主機記錄:www
記錄類型:A
解析線路(isp):默認
記錄值:101.35.99.239
TTL:10分鐘

什么是主機記錄?

主機記錄就是域名前綴,常見用法有:

  1. www:解析后的域名為www.aliyun.com。
  2. @:直接解析主域名 aliyun.com。
  3. *:泛解析,匹配其他所有域名 *.aliyun.com。
  4. mail:將域名解析為mail.aliyun.com,通常用于解析郵箱服務器。
  5. 二級域名:如:abc.aliyun.com,填寫abc。
  6. 手機網(wǎng)站:如:m.aliyun.com,填寫m。
  7. 顯性URL:不支持泛解析(泛解析:將所有子域名解析到同一地址)
什么是記錄類型?
  1. A:將域名指向一個IPV4地址
  2. CNAME:將域名指向另一個域名
  3. AAAA:將域名指向一個IPV6地址
  4. NS:將子域名指向其他DNS服務器解析
  5. 顯性URL:將域名重定向到另外一個地址
  6. 隱形URL:與顯性URL類似,但是會隱藏真實目標地址

部署網(wǎng)站

第一次注冊ECS云服務器的時候,默認在控制臺獲取到如下幾個信息:

  1. 服務器公網(wǎng)IP
  2. 服務器SSH端口
  3. 服務器遠程連接密碼

部署指的就是把你的代碼上傳到ECS云服務器上面,啟動Apache或者Tomcat服務器,用戶才可以訪問。

部署有常用的兩種方式:

  1. 著名的寶塔面板(推薦小白使用,傻瓜式安裝LAMP)
  2. 使用純凈的CentOS系統(tǒng),手動登陸SSH,腳本化部署(有一定技術(shù)難度,因筆者需要更精確定制PHP和JAVA版本兩種服務器,所以使用了這種方式部署)

更加推薦第二種方式,因為網(wǎng)站建設會遇到各種各樣的奇奇怪怪的問題,如果這些基本操作都解決不了,就不要建設網(wǎng)站了。

LNMP指的是 Linux + Nginx + MySQL + PHP
LAMP指的是 Linux + Apache + MySQL + PHP

備案

發(fā)句牢騷,想當初第一次做網(wǎng)站備案的時候,是一件很煩的過程,需要很多資料,包括網(wǎng)站的內(nèi)容都會審查,否則會不斷給你打電話要求修改,當然萬事開頭難,只要做了第一次,后續(xù)就簡單了。
筆者曾親自經(jīng)歷一個從資源網(wǎng),變成CMS網(wǎng)站,再到博客網(wǎng)站,再到...,因無法盈利,最后終于走到了停止運營的地步.....

注意:不備案的網(wǎng)站是不合法的,如果被相關(guān)部門發(fā)現(xiàn),理論上是要強制關(guān)閉的,這點一定要注意!

備案要提前準備一些資料:

  1. 身份證正反面照片
  2. 居住證照片
  3. 居中證視頻發(fā)送到騰訊云指定的郵箱
  4. 詳細明確的網(wǎng)站備注
  5. 域名實名認證(如果是購買的是阿里云域名,就去阿里云實名認證,然后上傳截圖給阿里云/騰訊云)
  6. 首頁的底部添加備案號,并鏈接到工信部官網(wǎng)首頁
  7. 廣東省個人網(wǎng)站備案承諾書-簽名+手印

備案完成后,必須把備案信息貼到網(wǎng)站首頁底部。

CentOS 7 部署安裝 Apache + MySQL + PHP詳解

下面就是技術(shù)環(huán)節(jié)了,這個環(huán)節(jié)會比較繁瑣,也令許多人望而卻步,但頂住朋友們,馬上就看到曙光了...

第一步:安裝 Apache服務器

$ sudo yum install httpd

一旦安裝成功,你就可以設置服務器啟動時就開啟 Apache 服務:

$ sudo systemctl enable httpd.service

你可以通過重新啟動服務器,然后在命令行終端中敲入這條命令來驗證 Apache 服務是否在服務器啟動時自動開啟了:

$ sudo systemctl is-enabled httpd.service

如果你看到了這樣的響應:enabled,則說明 Apache 服務已經(jīng)配置為在服務器啟動時自動開啟了。

在服務器上啟動 Apache 服務的命令為:

$sudo systemctl start httpd.service

重新啟動 Apache:

$sudo systemctl restart httpd.service

停止 Apache:

$sudo systemctl stop httpd.service

如果你的服務器正在運行防火墻,請運行下列命令以允許它進行 HTTP 和 HTTPS 通信:

$sudo firewall-cmd --permanent --zone=public --add-service=http
$sudo firewall-cmd --permanent --zone=public --add-service=https
$sudo firewall-cmd --reload

http://<服務器的公網(wǎng) IP 地址>

第二步:安裝MySQL

  1. yum源rpm包下載
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
  1. 本地安裝 mysql yum源
yum localinstall mysql57-community-release-el7-11.noarch.rpm
  1. 檢查 mysql 源是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"

第四步安裝mysql之前要先禁用默認的mysql模塊

sudo yum module disable mysql
  1. 安裝 MySQL 服務
yum install -y mysql-community-server
  1. 創(chuàng)建數(shù)據(jù)目錄(可選)
mkdir /data/mysql
chown -R mysql:mysql /data/mysql
  1. 修改配置文件如下,主要修改了一個目錄,及添加了字符集參數(shù)

vim etc/my.cnf

[mysqld]
character-set-server=utf8
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
  1. 啟動MySQL
systemctl start mysqld
  1. 查看登錄密碼
grep 'temporary password' /var/log/mysqld.log
  1. 登錄修改密碼
mysql -uroot -p
alter user 'root'@'localhost' identified by '你的密碼';
flush privileges;
  1. 重啟MySQL
systemctl restart mysqld

MySQL安裝出現(xiàn)問題時的常見解決方式

在安裝MySQL過程中,可能出現(xiàn)一些異常情況,如果出現(xiàn),可以嘗試一下指令重裝或者重啟修復,如果沒有出現(xiàn),可以跳過這些步驟。

完全卸載MySQL(可選步驟)
  1. 查看mysql安裝了哪些東西 rpm -qa |grep -i mysql
  2. 開始卸載 yum remove xx(上述列表)
  3. 查看是否卸載完成 rpm -qa | grep -i mysql
  4. 查找mysql相關(guān)目錄 find / -name mysql
  5. 刪除相關(guān)目錄 rm -rf xx
  6. 刪除/etc/my.cnf rm -rf /etc/my.cnf
  7. 刪除/var/log/mysqld.log(如果不刪除這個文件,會導致新安裝的mysql無法生存新密碼,導致無法登陸)rm -rf /var/log/mysqld.log
MySQL首次安裝無密碼的問題:/var/log/mysqld.log 中找不到臨時密碼(可選步驟)

網(wǎng)上都說初次安裝 grep 'temporary password' /var/log/mysqld.log 即可找到密碼,但是我的mysqld.log中根本沒有temporary password

  1. 刪除原來安裝過的mysql殘留的數(shù)據(jù)(這一步非常重要,問題就出在這)
rm -rf /var/lib/mysql
  1. 重啟mysqld服務
systemctl restart mysqld
  1. 再去找臨時密碼
grep 'temporary password' /var/log/mysqld.log

[Note] A temporary password is generated for root@localhost: qUhk6cfZMh(l

alter user 'root'@'localhost' identified by '你的密碼';
flush privileges;
MySQL 界面管理工具推薦(可選步驟)

MAC:Sequel Pro
Window:Navicat

MySQL運行遠程鏈接(可選步驟)
grant all privileges on *.* to 'root'@'%' identified by '你的密碼' with grant option; flush privileges;
查看MySQL的端口號(可選步驟)
show global variables like 'port';
MySQL 使用中插入中文數(shù)據(jù)出現(xiàn)錯誤的解決方式(可選步驟)
Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1

這個錯誤的原因是向數(shù)據(jù)庫中插入中文,但是數(shù)據(jù)庫的編碼格式為latin1導致,修改為utf8即可。

第三步:安裝 PHP

$ sudo yum install php php-mysqlnd

這里安裝 PHP 應該不會有任何問題。我們需要重新啟動 Apache web 服務器以便它能夠與 PHP 協(xié)作。你可以通過這條命令達到目的:

$ sudo systemctl restart httpd.service

安裝 PHP 模塊

為了增強 PHP 的功能,我們可以選擇性地安裝一些額外的模塊。
在命令行終端敲入這條命令,你就可以找到所有可以獲取到的 PHP 模塊選項和庫:

$ yum search php

響應的結(jié)果就是所有你能夠選擇安裝的組件。其中包含了每個可選組件的描述:

php-bcmath.x86_64 : A module for PHP applications for using the bcmath library
php-cli.x86_64 : Command-line interface for PHP
php-common.x86_64 : Commonfiles for PHP
php-dba.x86_64 : Adatabase abstraction layer module for PHP applications
php-devel.x86_64 : Filesneeded for building PHP extensions
php-embedded.x86_64 : PHPlibrary for embedding in applications
php-enchant.x86_64 : Enchantspelling extension for PHP applications
php-fpm.x86_64 : PHPFastCGI Process Manager
php-gd.x86_64 : Amodule for PHP applications for using the gd graphics library

如果需要獲取每個模塊更多的信息,你可以通過互聯(lián)網(wǎng)搜索,或者直接在命令行終端中敲入這條命令查看:

$ yum info package_name

響應中將會包含許多的信息,其中一個名為 Description 的域包含了這個模塊提供的功能更為詳盡的描述。
舉個例子,如果要獲知 php-fpm 模塊的功能,我們只要在命令行終端中敲入下列指令就可以了:

$ yum info php-fpm

順著眾多其他信息往下看,你將會找到形如這樣的信息:

Summary    : PHPFastCGI Process Manager
URL            : http://www.php.net/
License       : PHPand Zend and BSD
Description : PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI
                   : implementation with some additional features useful for sites of
                   : any size, especially busier sites.

在考究之后,如果你決定要安裝一個模塊包,你可以像我們之前安裝其他軟件時的做法一樣,使用 yum install 命令達到目的。
如果我們決定了 php-fpm 就是我們需要的,那么我們可以在命令行終端鍵入:

$ sudo yum install php-fpm

如果你想安裝多于 1 個的模塊包,你可以在命令行終端中鍵入 yum install 后,列出你想安裝的每個模塊包,并使用空格區(qū)分,就像下面這樣子:

$ sudo yum install package1 package2…

現(xiàn)在,你的 LAMP 軟件棧已經(jīng)安裝并配置妥當了。但我們?nèi)孕枰獪y試一下 PHP。
第四步 —— 測試你 Web 服務器上的 PHP 處理程序,為了測試系統(tǒng)已經(jīng)配置得適合 PHP 運行,我們可以創(chuàng)建一個非常簡易的 PHP 腳本。
我們將這個腳本命名為 info.php。為了讓 Apache 能夠正確地找到并為之服務,它必須保存在一個稱為『web 目錄』特殊的目錄中。
在 CentOS 7 中,這個目錄位于 /var/www/html/。我們可以通過下面這條命令在此創(chuàng)建一個文件:

$ sudo vi /var/www/html/info.php

這將會打開一個空白文件,敲擊小寫字母 I 即可進行編輯。我們想在文件中輸入下列 PHP 代碼組成的文本:

<?php phpinfo(); ?>

然后,敲擊 ESC 鍵并鍵入 :wq! 即可保存并關(guān)閉這個文件。
現(xiàn)在我們可以測試 web 服務器是否能夠正確地顯示由 PHP 腳本生成的內(nèi)容了。我們可以嘗試通過 web 瀏覽器訪問這個頁面。你需要再次獲取服務器的公網(wǎng) IP 地址。
你希望訪問的地址就是:

http://<服務器的公網(wǎng) IP 地址>/info.php

如果你的瀏覽器成功地顯示了這個頁面,那么你的 PHP 就像預期中的那樣正常工作了。
你很可能想要在測試之后移除掉這個文件,因為它事實上可以將服務器的信息展現(xiàn)給未授權(quán)的用戶。為此,我們需要在命令行終端中鍵入下面這條命令:

$ sudo rm /var/www/html/info.php

以后若需要,你可以重新創(chuàng)建這個頁面來獲取這些信息。

PHP網(wǎng)站文件上傳

本人使用的是Typecho開源PHP博客系統(tǒng),當然你也可以使用諸如WordPress,CMS,OA等等,你喜歡就好。

總之,把這個開源系統(tǒng)當作一個普通的zip文件,只要上傳到指定的目錄,訪問IP地址,這個網(wǎng)站就會自動安裝,傻瓜式操作。

當然,你也可以想我一樣,強到自己擼出一個后臺Tomcat網(wǎng)站,手寫HTML,前端,后臺,APP,各類編程語言通吃的全棧型選手。如果不可以,那就乖乖接受PHP是世界最好的語言吧(玩笑,作者不是挑戰(zhàn)你們哈,不要噴我哈哈?。?/p>

首先,需要登錄到SSH后臺:

ssh -p 22 root@你的IP地址
輸入密碼

Linux電腦:配置FTP,可選。使用rz即可,直接用Linux命令rz上傳操作。
MAC電腦:Mac上沒有rz命令,所以上傳下載使用另外的命令代替scp,scp類似于cp命令(cp是本地拷貝不能跨服務器)

  1. 首先需要在CentOs服務器上安裝scp服務,運行下面的命令
yum install openssh-clients(一般不需要,CentOS一般默認自帶)

說明:yum( Yellow dog Updater, Modified)是一個在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端軟件包管理器。

  1. 上傳文件到服務器(注意運行該命令需要在本地終端下執(zhí)行,否則提示找不到本地文件)
scp /Users/alien/Desktop/xx.war root@192.168.1.101://usr/www/html/
  1. 上傳文件夾到服務器
scp -r /Users/alien/Desktop/fileFolder root@192.168.1.101:/usr/www/html/
  1. 服務器下載文件到MAC
scp root@192.168.1.101:/usr/local/WechatIMG135.jpeg /Users/alien/Desktop/
  1. 服務器下載文件夾到mac
scp -r root@192.168.1.101:/usr/local/fileFolder /Users/alien/Desktop/

其他常用指令:

  1. Linux當前目錄所有文件移動到上一級目錄:mv * ../
  2. 啟動Tomcat:/usr/local/tomcat/bin/startup.sh
  3. 停止Tomcat:/usr/local/tomcat/bin/shutdown.sh
  4. 解壓tar文件:tar -zxvf ×××.tar.gz
  5. 解壓zip文件:unzip ×××.zip
  6. 查看當前目錄的全路徑:pwd
  7. 查看Apache安裝的信息:httpd -V
  8. 查看Nginx的配置:nginx -t
  9. 查找文件路徑:whereis python
  10. 找到nginx的二進制文件路徑:ps -aux | grep nginx

安裝handsome主題

到此,網(wǎng)站已經(jīng)部署成功,可以訪問了。但是,默認的Typecho的主題樣式是比較丑的,所以建議給Typecho更換一個主題,這里推薦一款叫做Handsome的主題,售價88元,功能齊全,自定義程度比較高。

安裝Handsome的方式,官方網(wǎng)站已經(jīng)給出詳細文檔,這里不再贅述,為了縮短篇幅,請讀者優(yōu)先查閱官方文檔,下面只針對官方文檔未提及或者常見的一些問題進行說明:

安裝handsome主題模板時候出現(xiàn)的問題

(一)PHP缺少mbstring模塊支持,請聯(lián)系作者獲取解決方案
  1. yum install php-mbstring

  2. 修改php.ini

vi /etc/php.ini

將下面內(nèi)容前面的分號去掉 ;extension=mbstring.so

如果沒有這一行,直接加入一行 extension=mbstring.so

  1. 重啟web service
service httpd restart
(二)Call to undefined function json_decode()
  1. 同樣是擴展問題

yum install php-json

  1. 加入一行 extension=json.so

  2. service httpd restart

同一個IP如何建立多個不同的網(wǎng)站

  1. 首先你需要購買兩個不同的域名
  2. 兩個域名均需要重新備案
  3. 兩個域名同時進行DNS解析
  4. 根據(jù)Web服務器的類型:Nginx 還是 Apache,設置對應的轉(zhuǎn)發(fā)解析配置

如何檢測 Web 服務器是 Nginx 還是 Apache?

curl -I http://你的IP地址
Nginx配置同IP打開不同網(wǎng)站

如果是Nginx(注:該段是請教他人得知,暫時自己的PHP內(nèi)并未用Nginx,所以這段配置請最好自行驗證)

server {
    listen 80;
    server_name example.com;
    index index.php;
    root /var/www/sub/;
}

location /ss {
    return 301 /ss/;
}

location /ss/ {
    root /var/www/sub/;
}
Apache配置同IP打開不同網(wǎng)站

前提條件:已創(chuàng)建LAMP服務器。

服務器:選用LAMP 7.4鏡像創(chuàng)建的輕量應用服務器。
測試網(wǎng)站:共兩個,test01和test02。
測試域名:共兩個,test01.example.com和test02.example.com。

  1. 修改Apache配置文件,修改httpd.conf,首先查看自己的httpd的配置信息:httpd -V
[root@VM-16-16-centos conf]# httpd -V
Server version: Apache/2.4.37 (centos)
Server built:   May 20 2021 04:33:06
Server's Module Magic Number: 20120211:83
Server loaded:  APR 1.6.3, APR-UTIL 1.6.1
Compiled using: APR 1.6.3, APR-UTIL 1.6.1
Architecture:   64-bit
Server MPM:     event
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

可以看到自己的 HTTPD_ROOT="/etc/httpd" 顯示自己的根目錄是在 /etc/httpd(有的是在/usr/local/apache目錄)

  1. 使用vim編輯器按i鍵進入編輯模式,修改/etc/httpd/conf/httpd.conf 配置文件

去掉 #Include conf/extra/httpd-vhosts.conf的注釋

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

修改之后為:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf
  1. 按Esc鍵,然后輸入:wq并按Enter鍵,保存退出文件。

  2. 修改httpd-vhosts.conf文件

運行以下命令,打開httpd-vhosts.conf文件。

vi /etc/httpd/conf/extra/httpd-vhosts.conf(有的目錄是/usr/local/apache/conf/extra/httpd-vhosts.conf)

如果沒有這個文件,那就重新創(chuàng)建一個!

按i鍵進入編輯模式,修改配置信息。

注釋掉下面配置文件中默認的配置信息

(<VirtualHost *:80></VirtualHost>)

在文件的末尾添加以下配置信息:

<VirtualHost *:80>
     DocumentRoot "/var/www/html/"
     ServerName ssup.cc
</VirtualHost>

<VirtualHost *:80>
     DocumentRoot "/var/www/html/kh"
     ServerName han32.cc
</VirtualHost>
  1. 運行以下命令,重啟Apache服務: /usr/local/apache/bin/apachectl restart

參考文章

http://www.itdecent.cn/p/ef58fb333cd6
https://juejin.cn/post/6844903870053761037
https://www.modb.pro/db/50727
http://blog.51cto.com/12173069/2044556
https://help.aliyun.com/document_detail/60171.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容