OpenEuler21.10离线部署nextcloud15
# openEuler yum时报需要注册码解决方式:
bclinux-license -g
rpm -qa |grep license
rpm -evh bclinux-license-manager-4.0-1.oe1.bclinux.x86_64
前提
服务器处于内网环境,由于数据迁移需要,进行源码方式部署,最终还是通过docker方式部署nextcloud15,解决mysql5旧数据的迁移问题。
所得
1、更加体会到了docker这种方式,在内网环境下的部署的便捷。
2、docker部署性能上也是非常不错的,服务器每天都在大量文件增删(大约20T总数据量),但并不影响不影响docker映射到服务器的文件同步。当时还有些担心数据量太大,性能不好,所以没考虑docker方式部署。
3、以下面源码方式部署,使得操作服务器更为熟练。
1、配置过程资源清单
httpd对应rpm资源包
openssl库文件资源
php部分rpm资源补充
mariadb5.5.68编译所需要rpm资源
php7.0.33源码资源与部分所缺模块源码资源
注意:
此仅本次部署过程中所使用的资源包,并不适合其他版本镜像与环境,仅做参考;主要参考部署过程中的解决问题方式。建议清单:
1、本次由于环境不联网,属于源码编译安装的方式。建议先虚拟机联网安装成功后,将联网过程中所需的rpm保存下来,方便迁移。
rpm保存教程
https://blog.csdn.net/m0_45057216/article/details/128527267
2、编译过程中会出现较多的库或文件缺失,一个个解决,保证编译成功即可。
2、配置httpd环境
记得安装rpm,如果升级出错,可以执行强制安装实现对软件包的版本更新(建议先rpm -ivh xxxx.rpm或者rpm -ivh ./*),切记版本冲突时不要先卸载后安装。使用下面命令执行:
rpm -ivh --replacefiles --force --nodeps *.rpm
3、配置mariadb5.5.68数据
-------------------------------------------------------------------------
mariadb5.5.68版本安装流程
# 如果升级出错,可以执行强制安装实现对软件包的版本更新:
cd /usr/local/nextcloud/cmake
# 安装编译的rpm资源,例cmake等
rpm -ivh --replacefiles --force --nodeps *.rpm
-------------------------------------------------------------------------
开始编译mariadb5.5.68源码
tar xzf mariadb-5.5.68.tar.gz
cd mariadb-5.5.68/
mkdir build
cd build
# 编译mariadb5.5.68源码
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1
make && make install
# 创建mysql用户和组
groupadd mysql
useradd -g mysql mysql
# 创建mysql数据
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql
# 先命令配置mysql文件配置
sudo /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#命令行开启mysql服务
sudo /usr/local/mysql/bin/mysqld_safe --user=mysql &
#开启另一个ssh连接中断界面,登录mysql,直接回车,无密码
sudo /usr/local/mysql/bin/mysql -uroot -p
# 设置mysql密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root123');
#或者设置错误,更新密码 UPDATE mysql.user SET password=PASSWORD('root123') WHERE user='root';
create database nextcloud;
# 将mysql环境变量添加
vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin
sources /etc/profile
# 编译my.cnf,或者创建该文件
vim /usr/local/mysql/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
symbolic-links=0
default-storage-engine=INNODB
innodb_buffer_pool_size=256M
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
innodb_large_prefix=true
innodb_file_format=barracuda
innodb_file_per_table=true
#在/usr/lib/systemd/system创建mariadb服务文件,添加文件内容
vim /usr/lib/systemd/system/mariadb.service
[Unit]
Description=Mariadb Server
After=network.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
[Install]
WantedBy=multi-user.target
#使刚才mariadb服务生效
sudo systemctl daemon-reload
sudo systemctl start mariadb.service
# 测试关闭mariadb服务,发现关闭服务超时,属于刚才命令行运行的mariadb服务没有停止。
systemctl stop mariadb.service
#查看mysql正在运行的进程
ps aux | grep mysql
# 关闭所有mysql进程
kill 进程
systemctl start mariadb
systemctl stop mariadb 超时关闭解决
#可能遇到的问题
rm /usr/local/mysql/data/aria_log_control
systemctl start mariadb.service
期间出现的问题:安装gcc等编译器
sudo yum install -y cmake gcc gcc-c++ ncurses-devel bison 解决
CMake Deprecation Warning at scripts/CMakeLists.txt:264 (CMAKE_POLICY):
The OLD behavior for policy CMP0007 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
-- Looking for event.h
-- Looking for event.h - found
-- Configuring incomplete, errors occurred!
See also "/usr/local/nextcloud/mariadb-5.5.68/build/CMakeFiles/CMakeOutput.log".
See also "/usr/local/nextcloud/mariadb-5.5.68/build/CMakeFiles/CMakeError.log".
几个问题解决
systemctl stop mariadb.service
#移除aria_log_control
rm /usr/local/mysql/data/aria_log_control
systemctl start mariadb.service
4、配置php7.0.33环境,添加相应的缺失模块
注意:
记得安装rpm,如果升级出错,可以执行强制安装实现对软件包的版本更新(建议先rpm -ivh xxxx.rpm或者rpm -ivh ./*),
切记版本冲突时不要先卸载后安装。使用下面命令执行:
rpm -ivh --replacefiles --force --nodeps *.rpm
4.1编译与安装php7.0.33
现场测试安装过程:
-------------------------------------------------------------------------
注意:以下是php7.0.33编译过程中缺失的资源,bzip与libmcrypt,采用下载源码方式先编译安装。
1、bzip模块
tar -xf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make -f Makefile-libbz2_so all
make install
#
2、libmcrypt模块
tar -xf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
#执行安装
make && make install
3、 开始编译php7.0.33
tar -xf php-7.0.33.tar.gz
cd php-7.0.33
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-mcrypt \
--enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath \
--enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --with-pcre-regex --with-gd --with-jpeg-dir \
--enable-opcache=no --with-openssl \
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
#安装
make && make install
#配置php环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/php/bin
source /etc/profile
#测试php是否安装成功,查看版本
php -v
4、安装附属模块php-7.0.33/ext/openssl
cd /usr/local/nextcloud/tars/php-7.0.33/ext/openssl
cp config0.m4 config.m4
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
5、安装附属模块zip
wget http://pecl.php.net/get/zip-1.13.5.tgz
tar -zvxf zip-1.13.5.tgz
cd /usr/local/nextcloud/tars/zip-1.13.5
phpize
whereis php-config
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
6、httpd与php两者进行配置互通。
cd /usr/local/nextcloud/tars/php-7.0.33
make clean
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-mcrypt \
--enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath \
--enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --with-pcre-regex --with-gd --with-jpeg-dir \
--enable-opcache=no --with-apxs2=/usr/bin/apxs --with-openssl \
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
make && make install
#查看是否存在libphp7.so文件
cd /etc/httpd/modules
ls
#编辑配置文件
vim /etc/httpd/conf/httpd.conf
#将下面配置放到httpd.conf配置文件中。位置随意,我放到了最下面
LoadModule php7_module modules/libphp7.so
##########################################
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
7、配置php-fpm模块,配置php编译后的配置文件和service服务到指定位置。
# 1、php.ini此时不存在,是要复制一份,重命名为php.ini,注意一定是php/etc下存放php.ini文件,原因是上面./configure指定了配置文件位置
# 2、复制php-fpm.conf即可,不需要配置
# 3、同上,但要编辑www.conf文件中的user与
cp /usr/local/nextcloud/tars/php-7.0.33/php.ini-development /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
# 命令行创建www-data用户和组
groupadd www-data
useradd -g www-data www-data
vim /usr/local/php/etc/php-fpm.d/www.conf
#8、php-fpm.service拷贝一份再放到/etc/systemd/system/中
cp /usr/local/nextcloud/tars/php-7.0.33/sapi/fpm/php-fpm.service /etc/systemd/system/
#使得php-fpm.service生效
sudo systemctl daemon-reload
9、将缺失的zip与openssl模块添加到php配置文件中
#查找php.ini文件位置
find / -name php.ini
vim /usr/local/php/etc/php.ini
添加extension扩展路径位置
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20151012/zip.so
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20151012/openssl.so
#测试发现只是找不到zip.so,openssl.so不添加也可以说明./configure --with-openssl生效了,但zip不行,可能与版本有关。
10、以下时出现的两个问题时的解决办法。
问题1:
上图问题解决地址:https://github.com/nextcloud/server/issues/6193
解决方法:
vim /usr/local/php/etc/php.ini
#添加pcre.jit=0到php.ini配置文件中
pcre.jit=0
问题2:
#localhost登录时,查找不到驱动。其实是php加载不到mysql.sock文件。但openEuler测试时仍然不能以localhost登录,找不到,以127.0.0.1登录成功,原因见下。
vim /usr/local/php/etc/php.ini
pdo_mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
使用 localhost 时,访问通过 Unix Socket 进行,带有本机用户权限;使用 127.0.0.1 时,访问通过网络进行,受到防火墙和网卡的限制。
部分问题:
configure: error: Cannot find OpenSSL's <evp.h>
解决:yum install openssl-devel -y
(1/3): openssl-1.1.1t-11.oe1.bclinux.x86_64.r 708 kB/s | 445 kB 00:00
(2/3): openssl-libs-1.1.1t-11.oe1.bclinux.x86 1.6 MB/s | 1.3 MB 00:00
(3/3): openssl-devel-1.1.1t-11.oe1.bclinux.x8 2.0 MB/s | 1.7 MB 00:00
这里遇到rpm冲突,必须更新安装rpm,而不能卸载后再安装,切记
5、服务器关闭ssh后台数据迁移进程不关闭
#安装tumx,在tmux终端下的进程,关闭ssh连接后,并不杀死该ssh会话中启动的进程。
yum install tmux -y
tmux建立会话
#显示tmux会话列表
tmux list-sessions
# 连接tmux指定id的会话
tmux attache-session id(0/1)
# 关闭tmux指定id会话
tmux kill-session -t id(0/1)
#关闭所有tmux会话
tmux kill-server 关闭所有tmux会话
cd /usr/local/nextcloud/tars/php-7.0.33/ext/opcache/
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
vim /usr/local/php/etc/php.ini
zend_extension=/usr/local/php/lib/php/extensions/no-debug-zts-20151012/opcache.so
[opcache]
opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
systemctl restart php-fpm
systemctl restart httpd
-----------------------------------------------------------------------------------------------
vim /usr/local/php/etc/php.ini
memory_limit = 512M
-----------------------------------------------------------------------------------------------
问题:所使用的数据库为MySQL但没有对4字节字符的支持。为正确处理文件名或评论中使用的4字节字符(比如emoji表情),建议开启MySQL的4字节字符支持。详细信息请阅读相关文档页面。
vim /usr/local/mysql/my.cnf
mysql -u root -p
ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
vim /var/www/html/nextcloud/config/config.php
'mysql.utf8mb4' => true,
#可添加了'mysql.utf8mb4' => true,用户->所有人 就会报错请求错误。
------------------------------------------------------------------------------------------------
sudo -u apache /usr/local/php/bin/php /var/www/html/nextcloud/occ db:convert-filecache-bigint
------------------------------------------------------------------------------------------
cd imagick.so
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
vim /usr/local/php/etc/php.ini
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20151012/imagick.so
----------------------------------------------------
./configure --prefix=/usr/local/freetype
make && make install
至此解决了用户->所有人中关于删除创建的用户刷新仍然存在的问题。
--------------------------------------
SELECT @@character_set_database;
SELECT @@character_set_server;
SELECT table_name, table_collation FROM information_schema.tables WHERE table_schema = 'nextcloud';
ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
在输出中,确保字符集设置为 utf8mb4,表的字符集和校对规则应该是 utf8mb4_general_ci。
ALTER TABLE oc_activity CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_addressbooks CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_authtoken CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_bruteforce_attempts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_calendarchanges CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_calendarobjects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_calendarobjects_props CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_calendars CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_calendarsubscriptions CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_cards CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_cards_properties CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_credentials CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_dav_acl CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_dav_cal_proxy CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_dav_shares CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_federated_reshares CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_file_locks CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_filecache CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_files_trash CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_flow_checks CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_flow_operations CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_group_admin CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_group_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_groups CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_jobs CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_login_flow_v2 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_mimetypes CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_migrations CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_mounts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_notifications CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_notifications_pushtokens CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_oauth2_access_tokens CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_oauth2_clients CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_preferences CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_privatedata CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_properties CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_remote_servers CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_schedulingobjects CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_share CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_share_external CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_storages CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_systemtag CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_systemtag_group CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_systemtag_object_mapping CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_trusted_servers CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_twofactor_backupcodes CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_twofactor_providers CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_vcategory CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_vcategory_to_object CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE oc_whats_new CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
systemctl restart php-fpm
systemctl restart mariadb
systemctl restart httpd
-----------------------------------------------------------------------------------
tar -xf freetype-2.10.4.tar.gz
cd freetype-2.10.4
sudo ./configure --enable-shared --prefix=/usr/local/include/freetype2/
make && make install
cd php-7.0.33
make clean
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-mcrypt \
--enable-mbstring --enable-pdo --with-curl --disable-debug --disable-rpath \
--enable-inline-optimization --with-bz2 --with-zlib --enable-sockets \
--enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex \
--with-mhash --with-pcre-regex --with-gd --with-jpeg-dir \
--enable-opcache=no --with-apxs2=/usr/bin/apxs --with-openssl \
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-freetype-dir=/usr/local/include/freetype2/
make && make install
php -i | grep FreeType
目前是freetype还是没能解决共享的文件中文名改变,英文名不改变。
--------------------------------------------------------
缓存配置APCu
wget https://pecl.php.net/get/apcu-5.1.17.tgz
tar -xzvf apcu-5.1.17.tgz
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20151012/apcu.so
[APCu]
apc.enabled=1
apc.shm_size=128M
apc.ttl=7200
apc.enable_cli=1
vim /var/www/html/nextcloud/config/config.php
添加:
'memcache.local' => '\OC\Memcache\APCu',
---------------------------------------------------------------------------------------
intel
tar -xf icu4c-50_2-src.tgz
cd icu
./configure
make && make install
cd /usr/local/nextcloud/tars/php-7.0.33/ext/intl
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20151012/intl.so