深深的蓝
深蓝个人网站

轻量化Tiny Core Linux硬盘安装nginx+php+mysql

Tiny Core Linux 是一个轻量化的Linux系统,最新的12.0版本图形界面只有 26 MB,由于设计得极端精简,甚至安装完整操作系统的应用程序都没有被包含在内(不过需要的话可以从 Tiny Core 的软件仓库下载)。

本系统在安装完ngnix+php+mysql后,整个VM虚拟机镜像文件,才不到70M,真正是小巧玲珑,这也正是使用这个系统的魅力所在。

一、硬盘安装

  1. 可以从官网:http://www.tinycorelinux.net/ 下载所需要的ISO镜像文件,本次使用的是v12.0的32位版本。
  2. 使用Vware创建一个新的虚拟机,创建时内存可适应调大一些,因为Tiny Core Linux是加载到内存中运行的,内存太小可能在安装mysql等软件后造成运行失败。虚拟机硬盘需要改为IDE模式(SCSI模式不能支持硬盘安装)。
  3. 开启虚拟机进入桌面系统,点击下方的Apps图标,会提示首次运行是否选择最快的镜像,我们可以点击“Yes”,软件将自动检测最快的软件仓库镜像,国内一般会检测到mriior.163.com网易源。
    进入软件仓库后,点击“Apps“—“Cloud(Remote)”—“Browse“后,输入tc-install后按回车键搜索,在找到的列表中选择“tc-insatll-GUI.tcz”并安装。
    其中的参数:vga=788 为 800*600 分辨率的桌面,如果用 vga=791 则开启 1024*768 分辨率的桌面。如果不想让系统自动登录,可以加上noautologin vga=788,然后安装进入系统后,可以使用 sudo passwd tc与 sudo passwd root来修改密码,最后需要在 /opt/.filelist 文件中加入 etc/passwd 与 etc/shadow,用于持久化密码相关文件。这样处理后,进入系统将会停留在登录界面,如果使用账号 tc 登录,就会进图形界面,如果使用 root 登录,则会进入命令行。关机后,硬盘的安装已经完成,我们可以将虚拟机中的CD光驱直接删除,然后重新启动从硬盘加载运行到桌面。

二、Nginx安装与配置

  1. 打开桌面上的Apps图标,需要重新运行最快的软件源检测,之后搜索nginx并安装,就可以将nginx软件安装到硬盘中。
  2. 设置相关配置文件:打开桌面最右边图标,终端Terminal后, 输入以下命令,用于进入相应文件夹,并复制配置文件。
    1. cd /usr/local/etc/nginx/
    2. sudo cp original/nginx.conf.default nginx.conf
    3. sudo cp original/fastcgi_params.default fastcgi_params
    4. sudo cp original/mime.types.default mime.types
    5. sudo mkdir /usr/local/html
    6. sudo cp /usr/local/lib/nginx/html/index.html /usr/local/html

    复制好配置文件后,我们可以尝试启动nginx服务,使用命令:

    sudo /usr/local/etc/init.d/nginx start

    但是系统提示:

    可以看到服务启动失败,我们需要改动一下nginx.conf文件,将access_log日志文件关闭或重新设置路径。运行命令:

    sudo vi /usr/local/etc/nginx/nginx.conf

    使用 vi 编辑器,在http段中,加入 access_log off;来关闭日志文件,也可以用下方命令自动替换。

    sudo sed -i "s/#access_log /access_log off; #access_log /g" /usr/local/etc/nginx/nginx.conf

    修改完毕后,再使用sudo /usr/local/etc/init.d/nginx start启动服务,应该就可以正常启动了,我们可以使用 ifconfig 查看 虚拟机的 IP 地址,在本机中使用浏览器查看。

    打开浏览器,使用 IP 地址浏览,可以看到nginx的欢迎网页,说明nginx已经正常工作了。

  3. 持久化nginx的配置与网页:因为Tiny Core Linux是加载到内存运行的,如果我们不做其它配置,当你重启你的虚拟时后,你会发现所有的nginx配置文件与网页都不见了。我们可以在/opt/.filetool.list文件中,将需要持久化的文件或文件夹加入到该文件中,在关闭系统时,Tiny Core Linux会自动保存这些文件,下次启动时再加载。
    1. echo “usr/local/etc/nginx/nginx.conf” >> /opt/.filetool.lst
    2. echo “usr/local/etc/nginx/mime.types” >> /opt/.filetool.lst
    3. echo “usr/local/etc/nginx/fastcgi_params” >> /opt/.filetool.lst
    4. echo “usr/local/html” >> /opt/.filetool.lst
  4. 开机自动启动nginx服务:Tiny Core Linux的开机自启动脚本为/opt/bootlocal.sh,我们只要在该脚本中加入nginx的启动命令即可。
    sudo vi /opt/bootlocal.sh

    sudo /usr/local/etc/init.d/nginx start

    保存文件后,再重启虚拟机,nginx将会自动启动了。

三、PHP 的安装与配置

  1. 打开桌面上的Apps图标,选择“Apps”—“Cloud(Remote)”—“Browse”后,搜索“php”,可以找到PHP-7.4与PHP-8.0,我们使用7.4版,分别安装以下安装包。
    1. php-7.4-cli.tcz
    2. php-7.4-ext.tcz
    3. php-7.4-fpm.tcz
    4. 以下插件也需要安装
    5. libxml2.tcz
    6. libffi.tcz
    7. pcre2.tcz

     

  2. 设置相关配置文件:打开桌面最右边图标,终端Terminal后, 输入以下命令,用于进入相应文件夹,并复制配置文件。
    1. sudo cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
    2. sudo cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
    3. sudo cp /usr/local/etc/php7/php.ini-sample* /usr/local/etc/php7/php.ini

    尝试使用命令:sudo /usr/local/etc/init.d/php-fpm start 启动PHP-FPM服务,发现还有两外错误,一是php中默认的hash.so模块加载失败,二是用户组nobody没找到。

    sudo /usr/local/etc/init.d/php-fpm start

    打开php.ini文件,找到hash扩展,禁用它,其它需要用到的扩展可以启用,然后保存文件,也可以使用下方命令行直接替换处理。

    sudo vi /usr/local/etc/php7/php.ini

    1. sudo sed -i “s/extension=hash/;extension=hash/g” /usr/local/etc/php7/php.ini
    2. sudo sed -i “s/;extension=mysql/extension=mysql/g” /usr/local/etc/php7/php.ini
    3. sudo sed -i “s/;extension=pdo_mysql/extension=pdo_mysql/g” /usr/local/etc/php7/php.ini

    系统中没有 nobody 这个组,我们可以直接在 /etc/group 文件最后加上一个组,然后保存文件并把 /etc/group 文件加入到持久化列表中。

    1. echo “nobody:x:65534:” >> /etc/group
    2. echo “etc/group” >> /opt/.filetool.lst

    最后再使用命令:sudo /usr/local/etc/init.d/php-fpm start 启动PHP-FPM服务,发现已经可以正常启动了。

  3. 持久化php的配置与自启动PHP-FPM服务
    1. echo “usr/local/etc/php7/php.ini” >> /opt/.filetool.lst
    2. echo “usr/local/etc/php-fpm.d/www.conf” >> /opt/.filetool.lst
    3. echo “usr/local/etc/php-fpm.conf” >> /opt/.filetool.lst

    编辑自动启文件 /opt/bootlocal.sh,加入启动PHP-FPM的命令:sudo /usr/local/etc/init.d/php-fpm start

    sudo vi /opt/bootlocal.sh

    sudo /usr/local/etc/init.d/php-fpm start

配置 nginx 文件,用于支持 php 文件,先在 html 根目录中创建一个 index.php 文件,内容为: <? phpinfo(); ?>

  1. sudo chmod 777 /usr/local/html
  2. echo “<?php phpinfo(); ?>” >> /usr/local/html/index.php

然后,编辑 nginx.conf 文件,添加 php 的支持代码,最后保存文件

sudo vi /usr/local/etc/nginx/nginx.conf

  1. location ~ \.php$ {
  2. include fastcgi_params;
  3. fastcgi_param SCRIPT_FILENAME /usr/local/html$fastcgi_script_name;
  4. fastcgi_pass 127.0.0.1:9000;
  5. }

也可以使用以下命令行直接替换好相应的内容:

  1. sudo sed -i “s/index.html index.htm/index.php index.html index.htm/g” /usr/local/etc/nginx/nginx.conf
  2. sudo sed -i “s/#error_page/location ~ \.php\$ {\n include fastcgi_params;\n fastcgi_param SCRIPT_FILENAME \/usr\/local\/html\$fastcgi_script_name;\n fastcgi_pass 127.0.0.1:9000;\n }\n #error_page/g” /usr/local/etc/nginx/nginx.conf

 

修改好文件后,运行命令让 nginx  重新加载配置文件

sudo /usr/local/etc/init.d/nginx reload

然后在本机浏览器中,查看网页效果,如果出现了 phpinfo() 的界面,说明 php 文件已经正常启用。

四、数据库mysql的安装

  1. 在Tiny Core Linux新的版本中,已经弃用mysql数据库,转而启用了mariadb数据库,打开桌面上的Apps图标,之后搜索mariadb可以找到10.4与10.5两个版本,可以将mariadb-10.5软件安装到硬盘中,同时安装一下liblz4.tcz 与 pcre2tcz 软件包。

    1. mariadb-10.5.tcz
    2. liblz4.tcz
    3. pcre2.tcz
  2. 初始化数据库:我们将默认的数据库存放在 /home/tc/mysql/data 文件夹中,所以先创建相应的文件夹,再使用mysql_install_db来生成初始化的数据库信息。
    1. sudo mkdir /home/tc/mysql
    2. sudo mkdir /home/tc/mysql/data
    3. sudo /usr/local/mysql/scripts/mysql_install_db –user=root –basedir=/usr/local/mysql –datadir=/home/tc/mysql/data

    如果是Tiny Core Linux v10或v11版本中,初始化时可能会碰到错误提示:

    可以按提示先创建一个 /auth_pam_tool_dir 文件夹,然后再初始化数据库信息,之后再删除该文件夹:

    1. sudo mkdir /auth_pam_tool_dir
    2. sudo /usr/local/mysql/scripts/mysql_install_db –user=root –basedir=/usr/local/mysql –datadir=/home/tc/mysql/data
    3. sudo rm -r /auth_pam_tool_dir

     

  3. 编写 my.cnf 文件,设置好数据库的配置参数:
    先删除原来的 my.cnf 文件

    1. sudo rm /usr/local/etc/mysql/my.cnf
    2. sudo vi /usr/local/etc/mysql/my.cnf

    然后将新的文件内容输入到文件中,这儿使用了比较简单的 my.cnf 文件,更详细文件可以自己整理。

    1. [mysqld]
    2. bind-address=0.0.0.0
    3. port=3306
    4. user=root
    5. basedir=/usr/local/mysql
    6. datadir=/home/tc/mysql/data
    7. socket=/var/run/mysql.sock
    8. log-error=/home/tc/mysql/data/mysql.err
    9. pid-file=/var/run/mysql.pid
    10. character_set_server=utf8mb4
    11. symbolic-links=0
    12. innodb_log_file_size = 5M

    将 my.cnf 加入持久化:

    echo "usr/local/etc/mysql/my.cnf" >> /opt/.filetool.lst

     

  4.  启动 mysql 服务,可以使用服务方式:
    sudo /usr/local/etc/init.d/mysql start

    如果不编写 my.cnf 文件,也可以直接使用命令行方式启动数据库:

    sudo /usr/local/mysql/bin/mysqld_safe --basedir=/usr/local/mysql --datadir=/home/tc/mysql/data --pid-file=/var/run/mysql.pid  --socket=/var/run/mysql.sock  --innodb_log_file_size=5M   --port=3306  --user=root &

    启动后,可以使用 netstat -l 查看监听端口的情况,能看到mysql或3306端口已经在监听状态,就说明服务启动成功了。

     

  5. 开机自启动数据库,将启动的命令行,加入到  /opt/bootlocal.sh,然后保存。
    sudo vi /opt/bootlocal.sh

     

  6. 修改数据库root密码,首次登录我们可以设置一下密码,使用下面命令登录时,需要输入新设置的 root 密码:
    sudo /usr/local/mysql/bin/mysql -uroot -p

    之后,我们可以根据情况在命令行中创建需要的数据库等操作了。

五、数据持久化的问题

  1. 在上面的安装过程中,我们发现我们的文件大都存放在 /home,/usr/local 等文件夹中,其实这些文件夹都是被 Tiny Core Linux 加载到内存中的,所以当文件不多的时候问题还不大,如果文件增加后,特别是网站文件与数据库文件容量增大后,就会大量占用内存,会造成内存不足而出现不同的问题。所以我们需要考虑将网站与数据库直接存放在硬盘而不是内存中。在Tiny Core Linux中,第一个硬盘会挂载到 /mnt/sda1 ,我们可以直接将网站与数据库的文件夹存放在这个下面,这样就不会占用内存空间了。
  2. 网站文件夹迁移到硬盘:
    1. sudo cp -r /usr/local/html /mnt/sda1
    2. sudo chmod 777 /mnt/sda1/html
    3. sudo rm -r /usr/local/html

    修改 config.conf 文件,将网站主目录改到 /mnt/sda1/html

    sudo vi /usr/local/etc/nginx/nginx.conf

    保存文件后,再使用 sudo /usr/local/etc/init.d/nginx start 启动服务,就可以将网站从硬盘加载。

  3. 数据库迁移到硬盘中:
    1. sudo cp -r /home/tc/mysql/data /mnt/sda1
    2. sudo rm -r /home/tc/mysql

    修改开机自启动文件中的数据库路径:

    sudo vi /opt/bootlocal.sh

    修改后保存文件。

  4. 在 /opt/.filetool.lst 文件中,去除原来用于持久化的 /usr/local/html 的内容:
    sudo vi /opt/.filetool.lst

    删除后,保存文件,如果不删除的话,重启服务器会提示错误信息。

  5. 如果是全新安装的话,可以在上面安装过程中,网页与数据库直接使用新的 /mnt/sda1/ 中的路径,这样就可以直接将数据放在硬盘,同时网站持久化中 echo “usr/local/html” >> /opt/.filetool.lst 的这一条命令也不再需要执行。
赞(7)
未经允许不得转载:深深的蓝 » 轻量化Tiny Core Linux硬盘安装nginx+php+mysql

评论 1

评论前必须登录!

 

  1. #0

    你这基本功扎实

    ivan1年前 (2023-03-19)