如果你喜欢本文,请多多支持哈,小手一抖,点个小小的红心就是莫大的鼓舞。创作不易,严禁未经同意的恶意转载!
前面两种都是本人比较早期使用过的,比较方便快捷,但是定制与推广不便,没有特别大的商业价值。现在主流的网站依然是ECS云服务器,虽然稍微有些复杂麻烦,但是长期来讲,它都是最优解。
为了让这篇建站教程更加简洁,这里对一些简单的步骤,比如:
选择性略过,大家可以直接去对应网站,像淘宝购物一样,登录后直接购买即可,网站里面已经描述的足够详细,这里就不再赘述。
开始建设网站之前,第一步肯定是:云服务器,用于存储网站的HTML,MySQL数据库,图片文件,PHP/JAVA代码等等。
推荐:
登录:万网购买
购买ECS服务器后,你就拥有一个公网IP,如果网站搭建起来了,就可以直接访问了,如:192.168.1.100
但是只有一个IP,用户是记不住的,总不能每次访问都输入:192.168.1.100 去访问你的网站吧。
所以如果想要真正运营起来,想要流量,还需要申请一个域名,浏览器输入域名,就等于是映射访问了 192.168.1.100 这个地址。
IP相当于你的身份证,域名就相当于你的名字!
上述提到 域名-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分钟
主机记录就是域名前缀,常见用法有:
第一次注册ECS云服务器的时候,默认在控制台获取到如下几个信息:
部署指的就是把你的代码上传到ECS云服务器上面,启动Apache或者Tomcat服务器,用户才可以访问。
部署有常用的两种方式:
更加推荐第二种方式,因为网站建设会遇到各种各样的奇奇怪怪的问题,如果这些基本操作都解决不了,就不要建设网站了。
LNMP指的是 Linux + Nginx + MySQL + PHP
LAMP指的是 Linux + Apache + MySQL + PHP
发句牢骚,想当初第一次做网站备案的时候,是一件很烦的过程,需要很多资料,包括网站的内容都会审查,否则会不断给你打电话要求修改,当然万事开头难,只要做了第一次,后续就简单了。
笔者曾亲自经历一个从资源网,变成CMS网站,再到博客网站,再到...,因无法盈利,最后终于走到了停止运营的地步.....
注意:不备案的网站是不合法的,如果被相关部门发现,理论上是要强制关闭的,这点一定要注意!
备案要提前准备一些资料:
备案完成后,必须把备案信息贴到网站首页底部。
下面就是技术环节了,这个环节会比较繁琐,也令许多人望而却步,但顶住朋友们,马上就看到曙光了...
$ 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 地址>
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum localinstall mysql57-community-release-el7-11.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"
第四步安装mysql之前要先禁用默认的mysql模块
sudo yum module disable 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
systemctl start mysqld
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
alter user 'root'@'localhost' identified by '你的密码';
flush privileges;
systemctl restart mysqld
在安装MySQL过程中,可能出现一些异常情况,如果出现,可以尝试一下指令重装或者重启修复,如果没有出现,可以跳过这些步骤。
网上都说初次安装 grep 'temporary password' /var/log/mysqld.log 即可找到密码,但是我的mysqld.log中根本没有temporary password
rm -rf /var/lib/mysql
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;
MAC:Sequel Pro
Window:Navicat
grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option; flush privileges;
show global variables like 'port';
Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1
这个错误的原因是向数据库中插入中文,但是数据库的编码格式为latin1导致,修改为utf8即可。
$ 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 代码组成的文本:
然后,敲击 ESC 键并键入 :wq! 即可保存并关闭这个文件。
现在我们可以测试 web 服务器是否能够正确地显示由 PHP 脚本生成的内容了。我们可以尝试通过 web 浏览器访问这个页面。你需要再次获取服务器的公网 IP 地址。
你希望访问的地址就是:
http://<服务器的公网 IP 地址>/info.php
如果你的浏览器成功地显示了这个页面,那么你的 PHP 就像预期中的那样正常工作了。
你很可能想要在测试之后移除掉这个文件,因为它事实上可以将服务器的信息展现给未授权的用户。为此,我们需要在命令行终端中键入下面这条命令:
$ sudo rm /var/www/html/info.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是本地拷贝不能跨服务器)
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/
scp root@192.168.1.101:/usr/local/WechatIMG135.jpeg /Users/alien/Desktop/
scp -r root@192.168.1.101:/usr/local/fileFolder /Users/alien/Desktop/
其他常用指令:
到此,网站已经部署成功,可以访问了。但是,默认的Typecho的主题样式是比较丑的,所以建议给Typecho更换一个主题,这里推荐一款叫做Handsome的主题,售价88元,功能齐全,自定义程度比较高。
安装Handsome的方式,官方网站已经给出详细文档,这里不再赘述,为了缩短篇幅,请读者优先查阅官方文档,下面只针对官方文档未提及或者常见的一些问题进行说明:
yum install php-mbstring
vi /etc/php.ini
;extension=mbstring.so
extension=mbstring.so
service httpd restart
yum install php-json
加入一行 extension=json.so
service httpd restart
如何检测 Web 服务器是 Nginx 还是 Apache?
curl -I http://你的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/;
}
前提条件:已创建LAMP服务器。
服务器:选用LAMP 7.4镜像创建的轻量应用服务器。
测试网站:共两个,test01和test02。
测试域名:共两个,test01.example.com和test02.example.com。
[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目录)
去掉 #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键进入编辑模式,修改配置信息。
注释掉下面配置文件中默认的配置信息
( )
在文件的末尾添加以下配置信息:
DocumentRoot "/var/www/html/"
ServerName ssup.cc
DocumentRoot "/var/www/html/kh"
ServerName han32.cc
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
电话咨询
在线咨询
微信咨询