• 云服务器centos8搭建网站 apache+php+mysql


    由于对数据库容量要求比较大,年费用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行后加入    (.....中)

    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数据库

    1. header("content-type:text/html; charset=UTF-8");
    2. $dbhost = 'localhost'; // mysql服务器主机地址
    3. $dbuser = 't123'; // mysql用户名
    4. $dbpass = '123456'; // mysql用户名密码
    5. $dbname = "testdb"; //数据库名称
    6. $conn=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
    7. if (!$conn)
    8. {
    9. die("连接失败,错误: " . mysqli_connect_error());
    10. }else{
    11. die("连接成功!");
    12. }
    13. ?>

    运行代码,测试是否连接成功

    至此,云服务器centos8搭建网站 apache+php+mysql 搭建过程全部完成。

  • 相关阅读:
    SpringBoot + Vue2项目打包部署到服务器后,使用Nginx配置SSL证书,配置访问HTTP协议转HTTPS协议
    【PE806】Nim on Towers of Hanoi(汉诺塔游戏,生成函数)
    EMQX Enterprise 5.5 发布:新增 Elasticsearch 数据集成
    中国高产水稻促粮食增产 国稻种芯:为碳减排做出重要贡献
    C++中或运算符(||)执行的逻辑及顺序
    分享119个ASP.NET源码总有一个是你想要的
    Spring中常用的请求处理携带参数的注解@RequestBody、@RequestParam和 @PathVariable
    LeakCanary 源码详解(3)
    docker版jxTMS使用指南:4.6版升级内容
    Linux ----------------------- 文本处理工具
  • 原文地址:https://blog.csdn.net/silno/article/details/128150628