社内学习考试系统iroha board

编程入门 行业动态 更新时间:2024-10-05 03:28:57

社内学习<a href=https://www.elefans.com/category/jswz/34/1770106.html style=考试系统iroha board"/>

社内学习考试系统iroha board

社内学习考试系统iroha board
/

官网的需求:
◆ サーバ環境
PHP : 5.4以上
MySQL : 5.1以上
CakePHP : 2.10
Web サーバ : Apache, Nginx
Apache モジュール : mod_rewrite, mod_headers
PHP モジュール : mbstring, pdo_mysql
※ 2018.12.17 動作環境を変更いたしました
旧動作環境 (~v0.9.19):PHP5.3以上(PHP7を除く), CakePHP2.7/2.8, MySQL 5.0以上
新動作環境 (v0.9.20~):PHP5.4以上(PHP7を含む), CakePHP2.10, MySQL 5.1以上
实际配置环境:
PHP : 5.6
MySQL : 8.0.19
CakePHP : 2.10 (官网提供的下载)
Web サーバ : Apache2.4.6 (Nginx对rewrite的支持设定起来比较麻烦,所以选用apache)
Apache モジュール : mod_rewrite, mod_headers
PHP モジュール : mbstring, pdo_mysql
OS:CentOS 7

一.安装新的更新源
CentOS自带的源版本比较旧,先设定新的更新源
rpm -Uvh .noarch.rpm
rpm -Uvh .rpm

二.安装apache
yum install httpd
根据各个分区的空间指定网页文件存放位置
默认配置文件存放在/etc/httpd/conf/httpd.conf
ServerRoot “/etc/httpd” 服务器根目录不用修改,设置文件什么的存放在这里
修改后比较麻烦

AllowOverride all
Require all denied
从文件根目录开始允许重写apache默认配置,为了减少麻烦,
实际应该不必设定成这样

DocumentRoot “/home/httpd/wwwroot” 网页文件存放位置修改到/home/httpd/wwwroot/

<Directory “/home/httpd”>
AllowOverride All
# Allow open access:
Require all granted

Further relax access to the default document root:

<Directory “/home/httpd/wwwroot”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named explicitly — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# .4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
AllowOverride All#
# Controls who can get stuff from this server.
#
# Require all granted

<FilesMatch .php$>
SetHandler application/x-httpd-php
配置文件的最后,追加上对php文件的支
持,也可以在mime.type中直接添加

添加到开机启动
Systemctl enable httpd.service

三.安装PHP
yum list | grep php 列出所有和php有关的安装包
yum install php56w.x86_64 php56w-fpm php56w-mbstring ph56w-mysql
因为需要mbstring和pdo_mysql模块,所以还需要安装php56w-mbstring ph56w-mysql

Php56w.x86_64不安装的话,就没有和libphp5.so模块,apache无法把php页面送给php处理。

添加到开机启动
Systemctl enable php-fpm.service

四.安装mysql
Centos默认安装mariaDB,需要先卸载掉
yum remove xxx
由于CentOS自带yum源的mysql版本太旧,需要先安装mysql的yum源
在mysql官网就可以下载,本地rpm安装就可以了。

安装mysql
yum install mysql-server 注意版本号
这次安装的是以下版本的mysql
mysql-community-client.x86_64 8.0.19-1.el7 @mysql80-community
mysql-community-common.x86_64 8.0.19-1.el7 @mysql80-community
mysql-community-libs.x86_64 8.0.19-1.el7 @mysql80-community
mysql-community-libs-compat.x86_64 8.0.19-1.el7 @mysql80-community
mysql-community-server.x86_64 8.0.19-1.el7 @mysql80-community

安装完成后,根据分区大小,修改数据库存放的位置
配置文件默认存放在/etc/my.conf
Vim /etc/my.conf

datadir=/home/mysql/var/mysql
socket=/home/mysql/var/mysql/mysql.sock

log-error=/home/mysql/var/mysqld.log
pid-file=/home/mysql/var/mysqld/mysqld.pid
sql_mode=ALLOW_INVALID_DATES

[client]
default-character-set=utf8
socket=/home/mysql/var/mysql/mysql.sock

细节有点记不太清了
有可能需要将默认的mysql文件夹,整体复制到新的位置,否则无法启动

安装完成后,及时修改mysql的root账号密码
初始的root密码存放在/var/log/mysql.log中
[root@localhost /]# more /var/log/mysqld.log
2020-02-13T01:34:11.788201Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 60108
2020-02-13T01:34:36.318427Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: J8l.G7ZcqVS8

使用这个密码登录mysql
Mysql –uroot –p
输入log中的密码
由于mysql8.0更新了很多安全策略,对密码要求过高,为了便于设置,可以降低密码的安全 要求。
设定密码复杂度的参数是validate_password_policy,具体的名字可能会有变化,用以下命令查看
show variables like ‘validate_password%’;
±-------------------------------------±------+
| Variable_name | Value |
±-------------------------------------±------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
±-------------------------------------±------+

将policy修改为最低
Set global validate_password.policy=0;
修改root密码
Alter user ‘root’@’localhost’ identified by ‘12345678’;

五.安装配置iroha board

  1. iroha Board の最新のソースをダウンロードし、解凍します。
  2. CakePHP 2.10 のソースをダウンロードし、解凍します。
    .10.19

直接在CentOS上下载,将压缩包移动到期望的位置后,再解压
解压后再移动的话,会造成.htaccess文件丢失

Apache的document root是/home/httpd/wwwroot/
所以将连个压缩包都移动到该文件夹下解压
tar zxvf irohaboard-0.10.2.tar.gz
tar zxvf cakephp-2.10.19.tar.gz
解压后修改文件夹名
mv irohaboard-0.10.2/ irohaboard/
mv cakephp-2.10.19/ cake/

cake和irohaboard文件加在同一层,所以修改irohaboard/webroot/index.php文件

/**

    1. iroha Board のルートディレクトリのパスの設定
      */
      这部分未修改
      if (!defined(‘ROOT’))
      {
      // webroot ディレクトリがアプリケーションディレクトリ(Model, Contoller, View などを格納しているディレクトリ
      )内に存在する場合
      define(‘ROOT’, dirname(dirname(dirname(FILE))));

      // webroot と app ディレクトリを分離する場合
      //define(‘ROOT’, dirname(dirname(FILE)));
      }

/**

    1. アプリケーションディレクトリ名の設定
      */
      这部分未单独建立app文件夹,所以不用修改
      if (!defined(‘APP_DIR’))
      {
      // webroot ディレクトリがアプリケーションディレクトリ内に存在する場合
      define(‘APP_DIR’, basename(dirname(dirname(FILE))));

      // webroot と app ディレクトリと分離する場合
      //define(‘APP_DIR’, ‘app’);
      }

/**

    1. CakePHP のライブラリディレクトリ(cake/lib)のパスの設定
      */
      这部分需要求改成下面的样子// cake ディレクトリが webroot の1階層上に存在する場合

if (!defined(‘CAKE_CORE_INCLUDE_PATH’)) {
// cake ディレクトリが webroot と同じ階層に存在する場合
//define(‘CAKE_CORE_INCLUDE_PATH’, dirname(dirname(FILE)).DS.‘cake’.DS.‘lib’);

    // cake ディレクトリが webroot の1階層上に存在する場合define('CAKE_CORE_INCLUDE_PATH', dirname(dirname(dirname(__FILE__))).DS.'cake'.DS.'lib');// cake ディレクトリが webroot の2階層上に存在する場合//define('CAKE_CORE_INCLUDE_PATH', dirname(dirname(dirname(dirname(__FILE__)))).DS.'cake'.DS.'lib');

}

有这样的字样
// tmpディレクトリが存在しない場合、作成
if(!file_exists(ROOT.DS.APP_DIR.DS.‘tmp’))
{
mkdir(ROOT.DS.APP_DIR.DS.‘tmp’);
mkdir(ROOT.DS.APP_DIR.DS.‘tmp’.DS.‘cache’);
mkdir(ROOT.DS.APP_DIR.DS.‘tmp’.DS.‘logs’);
所以irohaboard需要新建文件夹,所以要把wwwroot的所有者修改为apache
Chown –R apache:apache /home/httpd/wwwroot/

配置/irohaboard/Config/database.php

public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => true,
'host' => 'localhost', // ホスト名
'login' => 'root', // MySQLのログインID
'password' => 'root的密码', // ログインIDのパスワード
'database' => 'irohaboard', // 新規に作成したデータベース
'prefix' => 'ib_', // 変更しないでください
'encoding' => 'utf8'
);

连接到mysql,新建数据库irohaboard
Mysql –uroot –p
Create database irohaboard;
Exit

这时使用浏览器访问http://hostIP/irohaboard/
会出现http 500 error,检查以下apache日志,没有出现例如无法创建tmp文件夹什么的错误就可以继续向下进行

故障排查(一)
安装irohaboard
访问http://hostIP/irohaboard/install
如果也出现http 500 error的话,需要修改.htaccess文件
Vim /home/httpd/wwwroot/Irohaboard/.htaccess

#For the avoidance of IE attack
#Header always set X-Content-Type-Options nosniff ##注释掉这一行,默认是未注释的

Vim /home/httpd/wwwroot/Irohaboard/webroot/.htaccess

如果修改了mysql.sock的位置,会提示数据库无法访问请确认config/database.php
查看irohaboard的日志,可以知道具体原因
More /home/httpd/wwwroot/irohaboard/tmp/logs/error.log
2020-02-17 14:15:40 Error: [MissingConnectionException] Database connection “Mysql” is missing, or could not be created.

##这是问题描述

Exception Attributes: array (
‘class’ => ‘Mysql’,
‘message’ => ‘SQLSTATE[HY000] [2002] Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)’,

##这是具体原因,修改了mysql.sock的位置,使用这个路径肯定无法调用mysql.sock
##找了很久没有找到irohaboard设定这个文件路径的位置,所以决定在原位置做一个软链接

‘enabled’ => true,
)
Request URL: /irohaboard/
Stack Trace:
#0 /home/httpd/wwwroot/cake/lib/Cake/Model/Datasource/DboSource.php(278): Mysql->connect()
#1 /home/httpd/wwwroot/cake/lib/Cake/Model/ConnectionManager.php(105): DboSource->_construct(Array)
#2 /home/httpd/wwwroot/cake/lib/Cake/Model/Model.php(3659): ConnectionManager::getDataSource(‘default’)
#3 /home/httpd/wwwroot/cake/lib/Cake/Model/Model.php(1162): Model->setDataSource(‘default’)
#4 /home/httpd/wwwroot/cake/lib/Cake/Model/Model.php(3686): Model->setSource(‘settings’)
#5 /home/httpd/wwwroot/cake/lib/Cake/Model/Model.php(3488): Model->getDataSource()
#6 /home/httpd/wwwroot/irohaboard/Model/Setting.php(78): Model->query('SELECT setting
…’)
#7 /home/httpd/wwwroot/irohaboard/Controller/AppController.php(79): Setting->getSettings()
#8 [internal function]: AppController->beforeFilter(Object(CakeEvent))
#9 /home/httpd/wwwroot/cake/lib/Cake/Event/CakeEventManager.php(244): call_user_func(Array, Object(CakeEvent))
#10 /home/httpd/wwwroot/cake/lib/Cake/Controller/Controller.php(682): CakeEventManager->dispatch(Object(CakeEvent))
#11 /home/httpd/wwwroot/cake/lib/Cake/Routing/Dispatcher.php(189): Controller->startupProcess()
#12 /home/httpd/wwwroot/cake/lib/Cake/Routing/Dispatcher.php(167): Dispatcher->_invoke(Object(UsersCoursesControlle
r), Object(CakeRequest))
#13 /home/httpd/wwwroot/irohaboard/webroot/index.php(188): Dispatcher->dispatch(Object(CakeRequest), Object(CakeRes
ponse))
#14 {main}

解决方法:
ln -s /home/mysql/var/mysql/mysql.sock /var/lib/mysql/mysql.sock

故障排查(二)
再次刷新install页面
仍然出现错误,继续查看irohaboard日志
2020-02-17 14:29:09 Error: [MissingConnectionException] Database connection “Mysql” is missing, or could not be created.

##还是无法连接数据库

Exception Attributes: array (
‘class’ => ‘Mysql’,
‘message’ => ‘SQLSTATE[HY000] [2059] Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory’,

##问题是无法找到caching_sha2_password.so

‘enabled’ => true,
)
Request URL: /irohaboard/
Stack Trace:
#0 /home/httpd/wwwroot/cake/lib/Cake/Model/Datasource/DboSource.php(278): Mysql->connect()
#1 /home/httpd/wwwroot/cake/lib/Cake/Model/ConnectionManager.php(105): DboSource->_construct(Array)
#2 /home/httpd/wwwroot/cake/lib/Cake/Model/Model.php(3659): ConnectionManager::getDataSource(‘default’)
#3 /home/httpd/wwwroot/cake/lib/Cake/Model/Model.php(1162): Model->setDataSource(‘default’)
#4 /home/httpd/wwwroot/cake/lib/Cake/Model/Model.php(3686): Model->setSource(‘settings’)
#5 /home/httpd/wwwroot/cake/lib/Cake/Model/Model.php(3488): Model->getDataSource()
#6 /home/httpd/wwwroot/irohaboard/Model/Setting.php(78): Model->query('SELECT setting
…’)
#7 /home/httpd/wwwroot/irohaboard/Controller/AppController.php(79): Setting->getSettings()
#8 [internal function]: AppController->beforeFilter(Object(CakeEvent))
#9 /home/httpd/wwwroot/cake/lib/Cake/Event/CakeEventManager.php(244): call_user_func(Array, Object(CakeEvent))
#10 /home/httpd/wwwroot/cake/lib/Cake/Controller/Controller.php(682): CakeEventManager->dispatch(Object(CakeEvent))
#11 /home/httpd/wwwroot/cake/lib/Cake/Routing/Dispatcher.php(189): Controller->startupProcess()
#12 /home/httpd/wwwroot/cake/lib/Cake/Routing/Dispatcher.php(167): Dispatcher->_invoke(Object(UsersCoursesControlle
r), Object(CakeRequest))
#13 /home/httpd/wwwroot/irohaboard/webroot/index.php(188): Dispatcher->dispatch(Object(CakeRequest), Object(CakeRes
ponse))
#14 {main}

调查后得知,的确是没有caching_sha2_password.so这个文件

MySQL8.0采用了新的更安全的验证方式,详情请查看mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password
不过,为什么增加了新的验证方式,就登录不了了呢,看提示是少了文件/usr/lib/mysql/plugin/caching_sha2_password.so,于是自然想到是不是少安装了东西,前去官网查看了文档如下:

以上文字说的意思是:服务端的相关验证插件已经编译进了服务端,客户端这边的编译进了libmysqlclient。故自然想到是不是没安装这个呢,结果是安装了也没有解决问题。现在只能猜想新版本的安装包是不是少了caching_sha2_password.so这个文件呢?

解决方法:
既然安装了也无法解决,就直接将验证方法修改为上一版本
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT Host, User, plugin from user;
±----------±-----------------±----------------------+
| Host | User | plugin |
±----------±-----------------±----------------------+
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
±----------±-----------------±----------------------+
4 rows in set (0.00 sec)

果然都是新的版本
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘12345678’;
#修改密码为native_password模式
FLUSH PRIVILEGES;
#使生效

再次刷新页面,可以正常显示了。

调整上传附件的文件大小限制
Q. アップロードファイルのサイズの上限はどのように変更できますか?

A. アップロードファイルのサイズの上限の設定はアプリケーション側、Webサーバ側の2種類があります。
アプリケーション側は Config\ib_config.php の 77-79 行目で設定可能です。(デフォルトは10MB、単位はバイト数)
$config[‘upload_maxsize’] = 1024 * 1024 * 100; // 配布資料 (100MB)
$config[‘upload_image_maxsize’] = 1024 * 1024 * 2; // 画像ファイル (2MB)
$config[‘upload_movie_maxsize’] = 1024 * 1024 * 100; // 動画ファイル (100MB)

Web サーバ側は php.ini ファイルで、以下のように upload_max_filesize (アップロードファイル最大サイズ) の値を設定することによって変更可能です。
upload_max_filesize = 128M
また必要に応じて、memory_limit (利用可能なメモリサイズ), post_max_size (POSTデータの最大サイズ), max_execution_time (最大実行時間[秒]) の値も変更してください。
memory_limit = 128M
post_max_size = 128M
max_execution_time = 120

設定が反映されているかどうかは、webroot ディレクトリに以下のように記述した phpinfo.php ファイルを配置し、
ブラウザで http://(iroha Board の URL)/phpinfo.php を開くことによって、upload_max_filesize などの設定値が確認可能です。

<?php phpinfo(); ?>

※ etc/php.ini, php/php.ini の設定は、Apache を再起動するまで反映されません。
※ 確認後は、配置したファイルを削除してください。

更多推荐

社内学习考试系统iroha board

本文发布于:2024-02-28 11:36:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769272.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:考试   系统   board   iroha

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!