如果你喜欢本文,请多多支持哈,小手一抖,点个小小的红心就是莫大的鼓舞。创作不易,严禁未经同意的恶意转载!
网站建设的方式有哪些?
- 应用引擎:GAE,ACE,BAE,SAE,其中ACE是阿里云的应用引擎,现在已经下线
- GitHub配合Hexo,并利用NexT主题建设博客网站
- ECS云服务器
前面两种都是本人比较早期使用过的,比较方便快捷,但是定制与推广不便,没有特别大的商业价值。现在主流的网站依然是ECS云服务器,虽然稍微有些复杂麻烦,但是长期来讲,它都是最优解。
为了让这篇建站教程更加简洁,这里对一些简单的步骤,比如:
- 域名购买步骤
- 服务器购买步骤
选择性略过,大家可以直接去对应网站,像淘宝购物一样,登录后直接购买即可,网站里面已经描述的足够详细,这里就不再赘述。
ECS云服务器
开始建设网站之前,第一步肯定是:云服务器,用于存储网站的HTML,MySQL数据库,图片文件,PHP/JAVA代码等等。
推荐:
- 阿里云
- 腾讯云
域名
登录:万网购买
购买ECS服务器后,你就拥有一个公网IP,如果网站搭建起来了,就可以直接访问了,如:192.168.1.100
但是只有一个IP,用户是记不住的,总不能每次访问都输入:192.168.1.100 去访问你的网站吧。
所以如果想要真正运营起来,想要流量,还需要申请一个域名,浏览器输入域名,就等于是映射访问了 192.168.1.100 这个地址。
IP相当于你的身份证,域名就相当于你的名字!
DNS服务器
上述提到 域名-IP地址 是对应关系,而存储这个映射关系的就需要DNS服务器这个重要角色,DNS服务器一般都是域名服务商免费提供的,不需要我们注册,只需去阿里云/腾讯云的控制台配置即可:
平时我们访问网址,一般都使用:
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。
- 手机网站:如:m.aliyun.com,填写m。
- 显性URL:不支持泛解析(泛解析:将所有子域名解析到同一地址)
什么是记录类型?
- A:将域名指向一个IPV4地址
- CNAME:将域名指向另一个域名
- AAAA:将域名指向一个IPV6地址
- NS:将子域名指向其他DNS服务器解析
- 显性URL:将域名重定向到另外一个地址
- 隐形URL:与显性URL类似,但是会隐藏真实目标地址
部署网站
第一次注册ECS云服务器的时候,默认在控制台获取到如下几个信息:
- 服务器公网IP
- 服务器SSH端口
- 服务器远程连接密码
部署指的就是把你的代码上传到ECS云服务器上面,启动Apache或者Tomcat服务器,用户才可以访问。
部署有常用的两种方式:
- 著名的宝塔面板(推荐小白使用,傻瓜式安装LAMP)
- 使用纯净的CentOS系统,手动登陆SSH,脚本化部署(有一定技术难度,因笔者需要更精确定制PHP和JAVA版本两种服务器,所以使用了这种方式部署)
更加推荐第二种方式,因为网站建设会遇到各种各样的奇奇怪怪的问题,如果这些基本操作都解决不了,就不要建设网站了。
LNMP指的是 Linux + Nginx + MySQL + PHP
LAMP指的是 Linux + Apache + MySQL + PHP
备案
发句牢骚,想当初第一次做网站备案的时候,是一件很烦的过程,需要很多资料,包括网站的内容都会审查,否则会不断给你打电话要求修改,当然万事开头难,只要做了第一次,后续就简单了。
笔者曾亲自经历一个从资源网,变成CMS网站,再到博客网站,再到...,因无法盈利,最后终于走到了停止运营的地步.....
注意:不备案的网站是不合法的,如果被相关部门发现,理论上是要强制关闭的,这点一定要注意!
备案要提前准备一些资料:
- 身份证正反面照片
- 居住证照片
- 居中证视频发送到腾讯云指定的邮箱
- 详细明确的网站备注
- 域名实名认证(如果是购买的是阿里云域名,就去阿里云实名认证,然后上传截图给阿里云/腾讯云)
- 首页的底部添加备案号,并链接到工信部官网首页
- 广东省个人网站备案承诺书-签名+手印
备案完成后,必须把备案信息贴到网站首页底部。
CentOS 7 部署安装 Apache + MySQL + PHP详解
下面就是技术环节了,这个环节会比较繁琐,也令许多人望而却步,但顶住朋友们,马上就看到曙光了...
第一步:安装 Apache服务器
$ sudo yum install httpd
一旦安装成功,你就可以设置服务器启动时就开启 Apache 服务:
$ sudo systemctl enable httpd.service
你可以通过重新启动服务器,然后在命令行终端中敲入这条命令来验证 Apache 服务是否在服务器启动时自动开启了:
$ sudo systemctl is-enabled httpd.service
如果你看到了这样的响应:enabled,则说明 Apache 服务已经配置为在服务器启动时自动开启了。
在服务器上启动 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://<服务器的公网 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
- 创建数据目录(可选)
mkdir /data/mysql
chown -R mysql:mysql /data/mysql
- 修改配置文件如下,主要修改了一个目录,及添加了字符集参数
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安装出现问题时的常见解决方式
在安装MySQL过程中,可能出现一些异常情况,如果出现,可以尝试一下指令重装或者重启修复,如果没有出现,可以跳过这些步骤。
完全卸载MySQL(可选步骤)
- 查看mysql安装了哪些东西 rpm -qa |grep -i mysql
- 开始卸载 yum remove xx(上述列表)
- 查看是否卸载完成 rpm -qa | grep -i mysql
- 查找mysql相关目录 find / -name mysql
- 删除相关目录 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 中找不到临时密码(可选步骤)
网上都说初次安装 grep 'temporary password' /var/log/mysqld.log 即可找到密码,但是我的mysqld.log中根本没有temporary password
- 删除原来安装过的mysql残留的数据(这一步非常重要,问题就出在这)
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 使用中插入中文数据出现错误的解决方式(可选步骤)
Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1
这个错误的原因是向数据库中插入中文,但是数据库的编码格式为latin1导致,修改为utf8即可。
第三步:安装 PHP
$ sudo yum install php php-mysqlnd
这里安装 PHP 应该不会有任何问题。我们需要重新启动 Apache web 服务器以便它能够与 PHP 协作。你可以通过这条命令达到目的:
$ sudo systemctl restart httpd.service
安装 PHP 模块
为了增强 PHP 的功能,我们可以选择性地安装一些额外的模块。
在命令行终端敲入这条命令,你就可以找到所有可以获取到的 PHP 模块选项和库:
$ yum search php
响应的结果就是所有你能够选择安装的组件。其中包含了每个可选组件的描述:
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
如果需要获取每个模块更多的信息,你可以通过互联网搜索,或者直接在命令行终端中敲入这条命令查看:
$ 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 后,列出你想安装的每个模块包,并使用空格区分,就像下面这样子:
$ sudo yum install package1 package2…
现在,你的 LAMP 软件栈已经安装并配置妥当了。但我们仍需要测试一下 PHP。
第四步 —— 测试你 Web 服务器上的 PHP 处理程序,为了测试系统已经配置得适合 PHP 运行,我们可以创建一个非常简易的 PHP 脚本。
我们将这个脚本命名为 info.php。为了让 Apache 能够正确地找到并为之服务,它必须保存在一个称为『web 目录』特殊的目录中。
在 CentOS 7 中,这个目录位于 /var/www/html/。我们可以通过下面这条命令在此创建一个文件:
$ sudo vi /var/www/html/info.php
这将会打开一个空白文件,敲击小写字母 I 即可进行编辑。我们想在文件中输入下列 PHP 代码组成的文本:
<?php phpinfo(); ?>
然后,敲击 ESC 键并键入 :wq! 即可保存并关闭这个文件。
现在我们可以测试 web 服务器是否能够正确地显示由 PHP 脚本生成的内容了。我们可以尝试通过 web 浏览器访问这个页面。你需要再次获取服务器的公网 IP 地址。
你希望访问的地址就是:
http://<服务器的公网 IP 地址>/info.php
如果你的浏览器成功地显示了这个页面,那么你的 PHP 就像预期中的那样正常工作了。
你很可能想要在测试之后移除掉这个文件,因为它事实上可以将服务器的信息展现给未授权的用户。为此,我们需要在命令行终端中键入下面这条命令:
$ sudo rm /var/www/html/info.php
以后若需要,你可以重新创建这个页面来获取这些信息。
PHP网站文件上传
本人使用的是Typecho开源PHP博客系统,当然你也可以使用诸如WordPress,CMS,OA等等,你喜欢就好。
总之,把这个开源系统当作一个普通的zip文件,只要上传到指定的目录,访问IP地址,这个网站就会自动安装,傻瓜式操作。
当然,你也可以想我一样,强到自己撸出一个后台Tomcat网站,手写HTML,前端,后台,APP,各类编程语言通吃的全栈型选手。如果不可以,那就乖乖接受PHP是世界最好的语言吧(玩笑,作者不是挑战你们哈,不要喷我哈哈!)
首先,需要登录到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 前端软件包管理器。
- 上传文件到服务器(注意运行该命令需要在本地终端下执行,否则提示找不到本地文件)
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主题
到此,网站已经部署成功,可以访问了。但是,默认的Typecho的主题样式是比较丑的,所以建议给Typecho更换一个主题,这里推荐一款叫做Handsome的主题,售价88元,功能齐全,自定义程度比较高。
安装Handsome的方式,官方网站已经给出详细文档,这里不再赘述,为了缩短篇幅,请读者优先查阅官方文档,下面只针对官方文档未提及或者常见的一些问题进行说明:
安装handsome主题模板时候出现的问题
(一)PHP缺少mbstring模块支持,请联系作者获取解决方案
yum install php-mbstring
修改php.ini
vi /etc/php.ini
将下面内容前面的分号去掉 ;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如何建立多个不同的网站
- 首先你需要购买两个不同的域名
- 两个域名均需要重新备案
- 两个域名同时进行DNS解析
- 根据Web服务器的类型:Nginx 还是 Apache,设置对应的转发解析配置
如何检测 Web 服务器是 Nginx 还是 Apache?
curl -I http://你的IP地址
Nginx配置同IP打开不同网站
如果是Nginx(注:该段是请教他人得知,暂时自己的PHP内并未用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打开不同网站
前提条件:已创建LAMP服务器。
服务器:选用LAMP 7.4镜像创建的轻量应用服务器。
测试网站:共两个,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)
如果没有这个文件,那就重新创建一个!
按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
参考文章
https://www.jianshu.com/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