<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="低内存VPS安装网站服务器-alpine">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2022-11-17 22:19<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
低内存VPS安装网站服务器-alpine


一、更换alpine系统


openvz的VPS一键更换成alpine


https://www.moerats.com/archives/688/


wget https://www.moerats.com/usr/shell/alpine.sh &amp;&amp; bash alpine.sh


其他虚拟化或者物理机更换alpine


https://github.com/iii80/NetInstallAlpine-1


sh &lt;(curl -k 'https://raw.githubusercontent.com/iii80/NetInstallAlpine-1/main/alpine.sh')


使用key进行ssh登录后，对系统进行配置有写入硬盘。




XML/HTML代码


    sed -i &quot;s/#PermitRootLogin.*/PermitRootLogin yes/g&quot; /etc/ssh/sshd_config

    
    sed -i &quot;s/#PasswordAuthentication.*/PasswordAuthentication yes/g&quot; /etc/ssh/sshd_config

    

    passwd

    setup-interfaces

    setup-keymap us us

    setup-hostname -n alpine

    setup-dns -d -n 8.8.8.8 -n 8.8.4.4

    /etc/init.d/hostname --quiet restart

    rc-update add networking boot

    rc-update add urandom boot

    rc-update add acpid

    rc-update add crond

    setup-ntp chrony

    setup-sshd -c openssh

    setup-disk -s 512 -m sys /dev/vda







注意：fdisk -l 命令可以查看硬盘，根据实际情况修改vda或者sda。没有最后一步写入硬盘，下次重启不能进入alpine系统。


另外一个支持一键重装Alpine脚本（不支持openvz）


GitHub：https://github.com/bin456789/reinstall




XML/HTML代码


    下载

    curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh

    下载 (国内)

    curl -O https://gh-proxy.com/https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh





XML/HTML代码


    bash reinstall.sh alpine  3.16|3.17|3.18

                      不输入版本号，则安装最新版







二、配置网站基础环境


安装 Lighttpd，别试 Caddy 了，虽然 Caddy 配置 SSL 方便，但是实际没有 Lighttpd 省资源




XML/HTML代码


    apk add lighttpd

    rc-update add lighttpd default

    rc-service lighttpd restart




安装 PHP，这个年头了，当然要 PHP8啦，毕竟 Typecho 都迁移到 PHP 7.2 + 了


首先修改Alpine的软件源，默认的源没有开启community，是没有PHP的。


修改  /etc/apk/repositories 




XML/HTML代码


    https://mirrors.ustc.edu.cn/alpine/latest-stable/main

    https://mirrors.ustc.edu.cn/alpine/latest-stable/community




然后更新软件源  apk update




XML/HTML代码


    apk add php83 php83-ctype php83-curl php83-dom php83-fpm php83-cgi php83-iconv php83-gd php83-json php83-openssl php83-pdo php83-pdo_sqlite php83-sqlite3 php83-xml php83-xmlreader  php83-phar php83-posix php83-ftp php83-session php83-bcmath php83-pecl-apcu php83-pecl-imagick php83-sockets php83-mbstring  php83-tokenizer php83-zip php83-opcache php83-simplexml php83-fileinfo php83-snmp

      

    # 修改 PHP 配置

    sed -i 's@^;date.timezone.*@date.timezone = Asia/Shanghai@' /etc/php83/php.ini

    sed -i &quot;s@^memory_limit.*@memory_limit = 12M@&quot; /etc/php83/php.ini

    sed -i &quot;s|;*cgi.fix_pathinfo=.*|cgi.fix_pathinfo=1|i&quot; /etc/php83/php.ini

     

    # 修改 Lighttpd 配置，启用 FastCGI、SSL、rewrite、redirect

    sed -i 's/#   include &quot;mod_fastcgi.conf&quot;/   include &quot;mod_fastcgi.conf&quot;\ninclude &quot;mod_ssl.conf&quot;/g' /etc/lighttpd/lighttpd.conf

    sed -i 's/#    &quot;mod_rewrite&quot;,&quot;/    &quot;mod_rewrite&quot;,&quot;/g' /etc/lighttpd/lighttpd.conf

    sed -i 's/#    &quot;mod_redirect&quot;,&quot;/    &quot;mod_redirect&quot;,&quot;/g' /etc/lighttpd/lighttpd.conf

    sed -i 's/php-cgi/php-cgi83/g'  /etc/lighttpd/mod_fastcgi.conf

    rc-service lighttpd restart

    cat &gt; /etc/lighttpd/mod_ssl.conf  &lt;&lt;EOF

    server.modules += (&quot;mod_openssl&quot;)

    server.modules += (&quot;mod_setenv&quot;)

    \$HTTP[&quot;scheme&quot;] == &quot;https&quot; {

        setenv.add-response-header  = ( &quot;Strict-Transport-Security&quot; =&gt; &quot;max-age=63072000; includeSubdomains; &quot;)

    }

    EOF







如果启动lighttpd出现错误，可以编辑/etc/lighttpd/mod_ssl.conf文件，重新粘贴以下代码，保存，启动。




XML/HTML代码


    server.modules += (&quot;mod_openssl&quot;)

    server.modules += (&quot;mod_setenv&quot;)

    $HTTP[&quot;scheme&quot;] == &quot;https&quot; {

        setenv.add-response-header  = ( &quot;Strict-Transport-Security&quot; =&gt; &quot;max-age=63072000; includeSubdomains; &quot;)

    }







记得修改网站目录属性777




XML/HTML代码


    chmod -R 777 /var/www




需要安装什么插件可以使用命令搜索然后安装




XML/HTML代码


    apk search php83

    apk add php83-*

    rc-service lighttpd restart

    rc-service php-fpm83 restart







三、配置虚拟主机


先使用acme.sh申请SSL证书，Lighttpd要求SSL证书和私钥放在一个文件里




XML/HTML代码


    mkdir -p /web/32mb.cc

    chown -R lighttpd.lighttpd /web/32mb.cc

    export DP_Id=xxx

    export DP_Key=xxx

    acme.sh --issue --dns dns_dp -d 32mb.cc -d *.32mb.cc

    acme.sh --install-cert -d 32mb.cc \

    --key-file /web/32mb.cc.key \

    --fullchain-file /web/32mb.cc.crt \

    --reloadcmd &quot;cat /web/32mb.cc.key /web/32mb.cc.crt &gt; /web/32mb.cc.pem; service lighttpd restart&quot;




新增虚拟主机，修改/etc/lighttpd/lighttpd.conf，在最后一行之前加入




XML/HTML代码


    # virtual host

    $HTTP[&quot;host&quot;] =~ &quot;^(www.)?32mb.cc&quot; {

        server.document-root = &quot;/web/32mb.cc&quot;

        accesslog.filename = &quot;/web/32mb.cc.log&quot;

        $HTTP[&quot;scheme&quot;] == &quot;http&quot; {

            # redirect to https, port 443:

            url.redirect = (&quot;.*&quot; =&gt; &quot;https://%0$0&quot;)

        }

    }

    $SERVER[&quot;socket&quot;] == &quot;:443&quot; {

        ssl.engine = &quot;enable&quot;

        ssl.pemfile = &quot;/web/32mb.cc.pem&quot;

        $HTTP[&quot;host&quot;] =~ &quot;(^|www\.)32mb.cc&quot; {

            ssl.pemfile = &quot;/web/32mb.cc.pem&quot;

            # 这是 typecho 的伪静态规则，其他程序自行修改

            url.rewrite-if-not-file = (

                &quot;^/(admin|usr)/(.*)&quot; =&gt; &quot;/$1/$2&quot;,

                &quot;^/(.*)$&quot; =&gt; &quot;/index.php/$1&quot;

            )

        }

    }





然后就是安装 Typecho和插件，TeStore （解压放到plugins目录，设置写入权限）。


如果需要mysql数据库，可以手动安装：




XML/HTML代码


    #安装mysql数据库与插件

    apk add mariadb mariadb-client php83-mysqli php83-pdo_mysql

    #将 mariadb 注册为服务

    rc-update add mariadb default

    #创建数据库

    /etc/init.d/mariadb setup

    #启动 mariadb 服务

    rc-service mariadb start

    #设置账户密码

    mysqladmin -u root password &quot;123456&quot;

    #登录并创建数据库

    mysql -u root -p123456

    CREATE DATABASE typecho;





如果使用过程中出现文件权限问题，可以修改目录可写，缺少的php组件可以使用 apk search php83- 搜索，然后apk add安装对应组件，然后重启Lighttpd即可。

数据库管理可以使用使用以下程序管理：




phpMyAdmin以及其他php管理mysql的代码


官网：https://www.phpmyadmin.net


Github：https://github.com/phpmyadmin/phpmyadmin


Adminer一个类似于phpMyAdmin的单文件MySQL管理客户端


官网：https://www.adminer.org


下载地址：https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1-mysql.php


phpminiadmin &ndash; 非常轻量级的 phpMyAdmin 替代品， 大小只有30kb左右( 简洁版的 phpMyAdmin )，可快速轻松地访问 MySQL 数据库。


官网：http://phpminiadmin.sourceforge.net


Github：https://github.com/osalabs/phpminiadmin


AMYSQL - 易用安全高效的MySQL管理客户端


官网：http://amh.sh/amysql.htm


下载地址：https://amh.sh/file/AMS/amysql-1.7.zip


附：安装其他版本php的方法


因为Alpine只保存当前最新版本php


增加源：http://mirrors.ustc.edu.cn/alpine/v3.15/community


或者：echo &quot;http://dl-cdn.alpinelinux.org/alpine/v3.15/community&quot; &gt;&gt; /etc/apk/repositories


然后就可以安装PHP7了，至于PHP5版本太老，新系统安装会提示缺少很多东西，也没必要安装。


其他一键脚本安装lnmp


Github：https://github.com/rehiy/webox-alpine




Webox（abbreviation for web-box）是一个定制的LNMP服务器，包含以下组件：MariaDB、Nginx、PHP、Redis。并添加了一些常用的插件。


安装


XML/HTML代码


    wget https://github.com/rehiy/webox-alpine/archive/refs/heads/master.tar.gz

    tar xvf master.tar.gz &amp;&amp; rm -f master.tar.gz

    cd webox-alpine-master

    sh install mysql nginx nginx-php php8.1 redis





启动服务


XML/HTML代码


    wkit mysql start

    wkit redis start

    wkit php81 start

    wkit nginx start





停止服务


XML/HTML代码


    wkit mysql stop

    wkit redis stop

    wkit php81 stop

    wkit nginx stop







其他就是Docker类方案，github很多项目，自行测试。




</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
