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

網(wǎng)站建設的方式有哪些?
- 應用引擎:GAE,ACE,BAE,SAE,其中ACE是阿里云的應用引擎,現(xiàn)在已經(jīng)下線
- GitHub配合Hexo,并利用NexT主題建設博客網(wǎng)站
- ECS云服務器
前面兩種都是本人比較早期使用過的,比較方便快捷,但是定制與推廣不便,沒有特別大的商業(yè)價值?,F(xiàn)在主流的網(wǎng)站依然是ECS云服務器,雖然稍微有些復雜麻煩,但是長期來講,它都是最優(yōu)解。
為了讓這篇建站教程更加簡潔,這里對一些簡單的步驟,比如:
- 域名購買步驟
- 服務器購買步驟
選擇性略過,大家可以直接去對應網(wǎng)站,像淘寶購物一樣,登錄后直接購買即可,網(wǎng)站里面已經(jīng)描述的足夠詳細,這里就不再贅述。
ECS云服務器

開始建設網(wǎng)站之前,第一步肯定是:云服務器,用于存儲網(wǎng)站的HTML,MySQL數(shù)據(jù)庫,圖片文件,PHP/JAVA代碼等等。
推薦:
- 阿里云
- 騰訊云
域名
登錄:萬網(wǎng)購買

購買ECS服務器后,你就擁有一個公網(wǎng)IP,如果網(wǎng)站搭建起來了,就可以直接訪問了,如:192.168.1.100
但是只有一個IP,用戶是記不住的,總不能每次訪問都輸入:192.168.1.100 去訪問你的網(wǎng)站吧。
所以如果想要真正運營起來,想要流量,還需要申請一個域名,瀏覽器輸入域名,就等于是映射訪問了 192.168.1.100 這個地址。
IP相當于你的身份證,域名就相當于你的名字!
DNS服務器

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

平時我們訪問網(wǎng)址,一般都使用:
xx.com或者www.xx.com,所以只需要增加兩種記錄類型即可!
記錄一
主機記錄:@
記錄類型:A
解析線路(isp):默認
記錄值:101.35.99.239
TTL:10分鐘
記錄二
主機記錄:www
記錄類型:A
解析線路(isp):默認
記錄值:101.35.99.239
TTL:10分鐘
什么是主機記錄?
主機記錄就是域名前綴,常見用法有:
- www:解析后的域名為www.aliyun.com。
- @:直接解析主域名 aliyun.com。
- *:泛解析,匹配其他所有域名 *.aliyun.com。
- mail:將域名解析為mail.aliyun.com,通常用于解析郵箱服務器。
- 二級域名:如:abc.aliyun.com,填寫abc。
- 手機網(wǎng)站:如:m.aliyun.com,填寫m。
- 顯性URL:不支持泛解析(泛解析:將所有子域名解析到同一地址)
什么是記錄類型?
- A:將域名指向一個IPV4地址
- CNAME:將域名指向另一個域名
- AAAA:將域名指向一個IPV6地址
- NS:將子域名指向其他DNS服務器解析
- 顯性URL:將域名重定向到另外一個地址
- 隱形URL:與顯性URL類似,但是會隱藏真實目標地址
部署網(wǎng)站
第一次注冊ECS云服務器的時候,默認在控制臺獲取到如下幾個信息:
- 服務器公網(wǎng)IP
- 服務器SSH端口
- 服務器遠程連接密碼
部署指的就是把你的代碼上傳到ECS云服務器上面,啟動Apache或者Tomcat服務器,用戶才可以訪問。
部署有常用的兩種方式:
- 著名的寶塔面板(推薦小白使用,傻瓜式安裝LAMP)
- 使用純凈的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)閉的,這點一定要注意!
備案要提前準備一些資料:
- 身份證正反面照片
- 居住證照片
- 居中證視頻發(fā)送到騰訊云指定的郵箱
- 詳細明確的網(wǎng)站備注
- 域名實名認證(如果是購買的是阿里云域名,就去阿里云實名認證,然后上傳截圖給阿里云/騰訊云)
- 首頁的底部添加備案號,并鏈接到工信部官網(wǎng)首頁
- 廣東省個人網(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
- yum源rpm包下載
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
- 本地安裝 mysql yum源
yum localinstall mysql57-community-release-el7-11.noarch.rpm
- 檢查 mysql 源是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"
第四步安裝mysql之前要先禁用默認的mysql模塊
sudo yum module disable mysql
- 安裝 MySQL 服務
yum install -y mysql-community-server
- 創(chuàng)建數(shù)據(jù)目錄(可選)
mkdir /data/mysql
chown -R mysql:mysql /data/mysql
- 修改配置文件如下,主要修改了一個目錄,及添加了字符集參數(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
- 啟動MySQL
systemctl start mysqld
- 查看登錄密碼
grep 'temporary password' /var/log/mysqld.log
- 登錄修改密碼
mysql -uroot -p
alter user 'root'@'localhost' identified by '你的密碼';
flush privileges;
- 重啟MySQL
systemctl restart mysqld
MySQL安裝出現(xiàn)問題時的常見解決方式
在安裝MySQL過程中,可能出現(xiàn)一些異常情況,如果出現(xiàn),可以嘗試一下指令重裝或者重啟修復,如果沒有出現(xiàn),可以跳過這些步驟。
完全卸載MySQL(可選步驟)
- 查看mysql安裝了哪些東西 rpm -qa |grep -i mysql
- 開始卸載 yum remove xx(上述列表)
- 查看是否卸載完成 rpm -qa | grep -i mysql
- 查找mysql相關(guān)目錄 find / -name mysql
- 刪除相關(guān)目錄 rm -rf xx
- 刪除/etc/my.cnf rm -rf /etc/my.cnf
- 刪除/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
- 刪除原來安裝過的mysql殘留的數(shù)據(jù)(這一步非常重要,問題就出在這)
rm -rf /var/lib/mysql
- 重啟mysqld服務
systemctl restart mysqld
- 再去找臨時密碼
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是本地拷貝不能跨服務器)
- 首先需要在CentOs服務器上安裝scp服務,運行下面的命令
yum install openssh-clients(一般不需要,CentOS一般默認自帶)
說明:yum( Yellow dog Updater, Modified)是一個在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端軟件包管理器。
- 上傳文件到服務器(注意運行該命令需要在本地終端下執(zhí)行,否則提示找不到本地文件)
scp /Users/alien/Desktop/xx.war root@192.168.1.101://usr/www/html/
- 上傳文件夾到服務器
scp -r /Users/alien/Desktop/fileFolder root@192.168.1.101:/usr/www/html/
- 服務器下載文件到MAC
scp root@192.168.1.101:/usr/local/WechatIMG135.jpeg /Users/alien/Desktop/
- 服務器下載文件夾到mac
scp -r root@192.168.1.101:/usr/local/fileFolder /Users/alien/Desktop/
其他常用指令:
- Linux當前目錄所有文件移動到上一級目錄:mv * ../
- 啟動Tomcat:/usr/local/tomcat/bin/startup.sh
- 停止Tomcat:/usr/local/tomcat/bin/shutdown.sh
- 解壓tar文件:tar -zxvf ×××.tar.gz
- 解壓zip文件:unzip ×××.zip
- 查看當前目錄的全路徑:pwd
- 查看Apache安裝的信息:httpd -V
- 查看Nginx的配置:nginx -t
- 查找文件路徑:whereis python
- 找到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)系作者獲取解決方案
yum install php-mbstring修改php.ini
vi /etc/php.ini
將下面內(nèi)容前面的分號去掉 ;extension=mbstring.so
如果沒有這一行,直接加入一行 extension=mbstring.so
- 重啟web service
service httpd restart
(二)Call to undefined function json_decode()
- 同樣是擴展問題
yum install php-json
加入一行 extension=json.so
service httpd restart
同一個IP如何建立多個不同的網(wǎng)站
- 首先你需要購買兩個不同的域名
- 兩個域名均需要重新備案
- 兩個域名同時進行DNS解析
- 根據(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。
- 修改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目錄)
- 使用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
按Esc鍵,然后輸入:wq并按Enter鍵,保存退出文件。
修改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>
- 運行以下命令,重啟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