由于对数据库容量要求比较大,年费用300左右的普通虚拟主机只能提供500M-1G的数据库,不能满足要求,故寻找到同样费用的云服务器单核、1G内存、系统盘50G,缺点是只提供基本系统centos,其他要自己搭建,经过一周摸索终于能正常运行。
全部安装完成后占用硬盘8G左右,包括2G的扩充虚拟内存。原机提供的1G内存很容易用完(mysql占用40%-60%内存),这样系统会杀死一些进程,使得网站可能不能正常使用。所以要扩充虚拟内存。
这里使用的是HK的云服务器,有些服务商安装初始系统时已经给配置了虚拟内存,用 free -h 查看swap情况。
这里系统软件选择的是centos8
*****************************每部分间隔*****************************************
0、前期准备
a、一般通过SSH协议终端模拟器软件远程操作服务器,所以要下载相关软件,这里用Xshell,软件下载、使用都很简单的,这里就不介绍了。
b、由于要经常使用vi编辑文件,vi默认没有显示行号,下面先增加行号显示
echo 'set nu' >> /etc/virc
//没有行号无所谓的可以略过
c、为了传文件方便,安装上传下载软件,可以不装
yum install lrzsz -y
d、暂时先关闭防火墙,如果没开就略过
systemctl stop firewalld
*****************************每部分间隔*****************************************
1、扩充虚拟内存
如果服务商已经扩充了虚拟内存,可跳到第2步。
使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意)1m*2048=2G ,内存大小根据需要来定。
dd if=/dev/zero of=/var/swapfile bs=1M count=2048
对交换文件格式化并转换为swap分区
mkswap /var/swapfile
挂载并激活分区
swapon /var/swapfile
//如果不能正常开通,就增加权限 chmod -R 0600 /var/swapfile
开机启动设置
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
vi /etc/sysctl.conf
//在最后一行加上“vm.swappiness=30” 一般是60,
或 echo "vm.swappiness = 30" >> /etc/sysctl.conf
//开关wsap
swapoff /var/swapfile
swapon /var/swapfile
free -h 检查swap
*****************************每部分间隔*****************************************
2、安装Apache
Web服务器软件之一,Apache HTTP Server ,简称Apache,也可安装其他服务器软件,自己搜索
a、安装apache
yum install httpd -y
查看httpd安装位置
rpm -ql httpd
b、修改配置文件httpd.conf
vi /etc/httpd/conf/httpd.conf
//vi操作,按字母i开始修改增加文件内容,完成后按ESC退出编辑模式(不是退出vi), :wq! 保存文件并退出vi
106行 128
AllowOverride None 全部修改为 AllowOverride All #修改前看看相关文章,也可以不改
167行 增加默认启动文件,排前面的有优先权
在 DirectoryIndex index.html 后面加上 index.htm default.php index.php index.shtml
c、启动apache
----------额外提示开始--------------
//注意:空格,有时候复制的命令不能正确执行原因是空格(空格可能是非英文的空格)造成的。辨别方法,复制这个命令粘贴到Notepad++ 空白文件里,尽量放大,观察空格的形态,如果空格里有个淡橙色的小点,说明空格是正确的,如果空格区域说明都没有,那这个空格就不是纯英文的空格,注意图中2个空格对比。
//比如执行这个命令systemctl enable httpd.service
//会出行错误提示-bash: systemctl enable httpd.service: command not found
---------------额外提示结束---------------
systemctl start httpd.service //systemctl start httpd 也可以
systemctl enable httpd.service //开机自启apache服务器
提示:如果启动失败,很有可能是因为80端口被占用。此时,需要修改监听端口。
vi /etc/httpd/conf/httpd.conf,找到 Listen 80,修改为 Listen 8080。
*****************************每部分间隔*****************************************
3、尝试访问网站
一般来说,这样就可以通过ip地址、域名(域名要解析到服务器的Ip,此时域名访问不能使用https://..... 方式访问,只能使用http://...... 访问)进行正常访问网站
域名解析如下图, 对应值是服务器的ip,各域名服务商可能不一样,大致差不多。
其实只要安装了apache,启动apache,不做任何设置就可以通过ip来访问, http://服务器IP
注意:新安装的apache不支持 https://服务器ip ,装了SSL证书才能用https://.... 访问
*****************************每部分间隔*****************************************
4、安装SSL服务器证书
SSL 证书,由受信任的数字证书颁发机构CA,在验证服务器身份后颁发,具有服务器身份验证和数据传输加密功能,使用HTTPS访问网站。简单来说HTTPS是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。
在阿里云申请免费SLL,有效期一年,个人可以免费申请20张 申请免费DV单域名试用证书, 介绍说不支持为公网IP申请免费证书,我试过可以,可能要看服务器商提供IP情况。
域名注册服务商有的提供1元购买SSL,有效期也是一年,具体情况问自己的域名服务商。
将阿里的ssl文件解压,得到3个文件,为了省事(少敲键盘)把长文件名改了部分,ali是修改的,其他不没修改。
a、把3个文件上传到服务器,
cd /
mkdir cert
#文件夹名称随意,而且位置随意,看个人喜欢,但一定要和下面的85 93 102行的目录名称一致
cd cert
rz -y //上传文件,会出来一个对话框,找到下载的3个文件,点确定,上传结束后窗口会关闭
b、默认apache是没有安装SSL模块的,所以需要安装,接着使用命令:
yum install -y mod_ssl
c、编辑ssl配置文件
vi /etc/httpd/conf.d/ssl.conf
//下面说的行号,可能会有小小不同,如果行号不对,就查找对应语句
第5行 看443是否打开监听,一般是去掉每行第一个字符#
#Listen 443 https --> Listen 443 https
//阿里的免费 SSL,一定要把3个文件都加上
85 SSLCertificateFile /cert/ali_public.crt #修改证书的保存位置
93 SSLCertificateKeyFile /cert/ali.key
102 SSLCertificateChainFile /cert/ali_chain.crt
//去掉#号,域名换你的域名,
43 DocumentRoot "/var/www/html"
44 ServerName www.example.com:443
然后保存退出
d、将http强制转换https
vi /etc/httpd/conf/httpd.conf
107行后加入 (<Directory>.....</Directory>中)
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
保存退出
重启apache
systemctl restart httpd.service //apachectl restart
e、访问网站,一般就可以正常访问了
https://*****.com ,如果浏览器只显示缓存内容,按F5刷一下
*****************************每部分间隔*****************************************
5、安装PHP
查看是否安装过php旧版本
rpm -qa|grep php* or yum list installed |grep php
如果有就删除
yum remove php*
安装php
sudo dnf install php php-opcache php-gd php-curl php-mysqlnd
//yum install php php-devel //这个在启动systemctl restart php-fpm.service,出现php-fpm错误,放弃
php要使用mysql数据库,必须安装对应模块,否则无法对接mysql。如果不需要可以不装
a、yum search php //查找安装源里与php相关的软件,找到php-mysq* 等软件名称,这里选的是 php-mysqlnd.x86_64
b、安装mtsql模块:yum -y install php-mysqlnd.x86_64
c、再安装常用的PHP模块,比如GD库,curl,mbstring,… ,也可以不装
yum -y install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel
------------php时区问题开始-------------------
关于php时区问题,由于服务器所处的位置,国家、地区不同,php默认的时区有可能不是北京时间,那么在时间读取上会有时差,所以要确认时区,如果已知时间正常可以不不=管时区的问题。
修改php时区,设置date.timezone =Asia/Shanghai,注意去掉该行排头的分号;
vi /exc/php.ini
902 date.timezone=Asia/Shanghai
重启php
ps -ef | grep php* //查询php进程,用来确定重启的文件名,不同版本php具体名称可能不同
systemctl restart php-fpm.service
------------php时区问题结束-------------------
重启apache
systemctl restart httpd.service
---------------------
如果php不能执行,
你的apache 还不支持解析php
打开 httpd.conf 文件 找到 #AddType application/x-tar .tgz
在后面添加 AddType application/x-httpd-php .php
重启systemctl restart httpd.service
如果还不行,再检查 php.ini 的short_open_tags 选项是否打开
---------------------------------------------
6、安装mysql
安装MySQL ,适合centos8的
yum install mysql mysql-server mysql-devel -y
#查看数据库版本
mysqladmin --version
启动mysql服务并设置为开机启动
systemctl enable --now mysqld
systemctl start mysqld //启动mysql
systemctl stop mysqld //
service mysqld restart //重启MySQL服务
systemctl status mysqld //查看数据库状态
mysql -u root -p //登录mysql,如果是新安装的直接按回车
进入mysql后,建立一个演示用的数据库,注意大写部分
CREATE DATABASE testdb;
显示数据库,就可以看到刚建立的数据库
show databases;
--------------mysql增加新用户及权限设置开始-------------------------------
php要操作mysql,必须要有一个用户名、密码、及相应的权限,直接用root也可以,但是不建议这么做。
1、生成新用户
CREATE USER 't123'@'localhost' IDENTIFIED BY '123456';
2、给新用户增加权限,否则php无法访问数据库
GRANT ALL ON testdb.* TO 't123'@'localhost'; //只能本地用户t123访问testdb数据库
--------------mysql增加新用户及权限设置结束-------------------------------
7、编写php代码,连接testdb数据库
<?php
header("content-type:text/html; charset=UTF-8");
$dbhost = 'localhost'; // mysql服务器主机地址
$dbuser = 't123'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$dbname = "testdb"; //数据库名称
$conn=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
if (!$conn)
{
die("连接失败,错误: " . mysqli_connect_error());
}else{
die("连接成功!");
}
?>
运行代码,测试是否连接成功
至此,云服务器centos8搭建网站 apache+php+mysql 搭建过程全部完成。