Browsed by
Tag: linux

linux下运行pyinstaller故障解决

linux下运行pyinstaller故障解决

最近,需要在linux系统下,使用pyinstaller生成py文件的可执行文件,但遇到一些报错,最后总算解决。
首先运行pyinstaller –onefile test.py,显示报错信息
OSError: Python library not found: libpython3.7.so.1.0, libpython3.7mu.so.1.0, libpython3.7m.so.1.0. This would mean your Python installation doesn’t come with proper library files. This usually happens by missing development package, or unsuitable build parameters of Python installation.

搜了搜,需要安装python-devel,运行yum install python-devel,结果显示找不到这个包。后来又搜了搜,是使用./configure –enable-shared重新编译python,编译后,make,make install安装好后,运行python3,又报错
python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

这时,
cd /etc/ld.so.conf.d
vi python3.conf
输入/usr/local/lib,然后:wq保存退出
运行ldconfig

之后在运行python3就没问题了
python3
Python 3.7.4 (default, Sep 6 2019, 09:10:20)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

运行pyinstaller也好了pyinstaller –onefile test.py

服务器备份工具–Bacula安装与配置(四)

服务器备份工具–Bacula安装与配置(四)

如果要看bacula备份状态的话,每次进linux然后运行bconsole查看status比较麻烦,可以考虑用Bacula-web这个插件,可以通过web查看bacula运行状况,十分方便,这个需要以下程序支持,安装即可

yum install php-pear php-gd php-mysql

官网下载,也可以从我的网站下载

下载后解压,然后把文件都拷贝到/var/www/目录下,运行cp -R ./bacula-web /var/www/

修改/var/www/bacula-web/configs/下的bacula.conf文件,使这个web应用可以读取bacula的数据库,在[.DATABASE]下面修改以下这些地方就行了,
# Your database host or IP
host = localhost
# Your database login
login = root
# Your database password.
# For empty passwords use this:
# pass =
pass = 123
# Your database name
db_name = bacula
# Your database type: mysql,sqlite,pgsql
db_type = mysql

修改/etc/httpd/conf/httpd.conf文件,加入

Alias /bacula-web/ “/var/www/bacula-web/”
<Directory “/var/www/bacula-web”>
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

改完后需要重新启动httpd服务让改动生效,service httpd restart

这是可以去浏览器,输入http://bacula服务器ip/bacula-web/test.php看看检测的三项(gettext,Pear(DB),GD)是不是都OK,如果前面都没问题的话,这边应该是三个OK,然后可以去看index.php了,如果显示的是空白页面,可能要看一下log文件是不是SELinux阻止文件访问,错误日志差不多是这样的SELinux is preventing the httpd from using potentially mislabeled files

修改/etc/selinux/config文件中的SELINUX=enforcing为SELINUX=disabled,需要重启机器生效
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing – SELinux security policy is enforced.
#       permissive – SELinux prints warnings instead of enforcing.
#       disabled – SELinux is fully disabled.
SELINUX=disabled

这样就可以通过web界面查看bacula备份的结果了

如果还是空白页面的话,去/var/log/httpd/error_log看看是不是因为权限的问题,如果看到类似错误的话

[Mon Apr 25 22:39:59 2011] [error] [client 182.23.147.2] PHP Fatal error:  Smarty error: unable to write to $compile_dir ‘/var/www/bacula-web/templates_c’. B
e sure $compile_dir is writable by the web server user. in /var/www/bacula-web/external_packages/smarty/Smarty.class.php on line 1088

用chown -R apache:apache /var/www/bacula-web/ 命令即可

服务器备份工具–Bacula安装与配置(三)

服务器备份工具–Bacula安装与配置(三)

在要备份服务器的客户端,只有一个文件要配置,bacula-fd.conf,里面修改以下两个参数即可
Director {
Name = Bacula-dir
Password = “test”
}

Director {
Name = Bacula-mon
Password = “testoo”
Monitor = yes
}
修改名称和密码跟服务器上的一样,另外注意的是要打开9102端口,否则无法正常运行

启动服务用/etc/bacula/bacula start

在服务器端运行/etc/bacula/bconsole可以查看配置的成不成功

首先可以看status,出来四个选项
Status available for:
1: Director
2: Storage
3: Client
4: All
Select daemon type for status (1-4):

选4,都查一遍,如果都可以连接上,没有超时什么的错误,就可以用了,如果想手工备份的话,运行run,选取要备份的客户端

要看每个job都备份了什么文件,可以用list files jobid=编号

如以下显示
*list files jobid=139
+——————————————————————————————+
| Filename |
+——————————————————————————————+
| /usr/local/apache2/htdocs/cacti/rra/73/207.rrd |
| /usr/local/apache2/htdocs/cacti/rra/45/149.rrd |
| /usr/local/apache2/htdocs/cacti/rra/116/463.rrd |
| /usr/local/apache2/htdocs/cacti/rra/89/257.rrd |
| /usr/local/apache2/htdocs/cacti/rra/37/141.rrd |
| /usr/local/apache2/htdocs/cacti/rra/103/341.rrd |
| /usr/local/apache2/htdocs/cacti/rra/103/344.rrd |
(以下省略)

要回复文件的话用restore即可,然后选择对应的选项,jobid可以从status命令中选客户端看到

服务器备份工具–Bacula安装与配置(二)

服务器备份工具–Bacula安装与配置(二)

Bacula的备份和恢复工作由下面几个部分完成
(1)Director Daemon主要是控制端,控制存储,要备份的服务器,运行依赖于数据库,推荐使用MySQL
(2)Storage Daemon主要是文件存储,所有的备份都会存储在这里,恢复的时候从这里取文件
(3)File Daemon就是在客户端运行的进程,备份的时候传出文件,恢复的时候接收文件
(4)Console是连接Director进行控制的
(5)Monitor是监控备份过程的,完成或失败会有log和发送email的,失败的log很详细

一般来说,Director,Storage和Console都会放在一个服务器,除非有特别需要,例如Storage需要放在磁带DVD什么的

这些配置文件都在/etc/bacula/目录下,重要的是bacula-dir.conf,是整个bacula的核心,

Director {                            # define myself
Name = Bacula-dir
DIRport = 9101                # where we listen for UA connections
QueryFile = “/etc/bacula/query.sql”
WorkingDirectory = “/var/bacula/working”
PidDirectory = “/var/run”
Maximum Concurrent Jobs = 1
Password = “WeoJoDjWpYUTPGSghEZUY/7dIYscb7CHuzcbevWaHcU9”         # Console password
Messages = Daemon
}
这一般不用改,password要跟bconsole.conf里面的password一致,如果是一台服务器,默认就是一样的

然后跟着是JobDefs,主要是定义要备份的客户端
JobDefs {
Name = “Webhost”
Type = Backup
Level = Incremental
Client = webhost.abc.com
FileSet = “webhost”
Schedule = “WeeklyCycle”
Storage = File
Messages = Standard
Pool = File
Priority = 10
Write Bootstrap = “/var/bacula/working/%c.bsr”
}
这里指定client的名字是webhost.abc.com,要备份的文件在FileSet webhost里指明,备份计划是WeeklyCycle,默认是每个月的第一个周日做全备份,剩下的周日做差异备份,每天做增量备份,没有特殊需要可以不用改

Job {
Name = “Backup Webhost”
JobDefs = “Webhost”
}
这个是Console运行Job的时候需要的

FileSet {
Name = “webhost”
Include {
Options {
signature = MD5
}
File = /home/
File = /root/
}
Exclude {
File = /root/bacula-5.0.3/
}
}
这个就是webhost这个job需要备份的文件,可以通过include指定多个文件目录,也可以通过exclude在指定的那些目录排除一些子目录

Schedule {
Name = “WeeklyCycle”
Run = Full 1st sun at 05:05
Run = Differential 2nd-5th sun at 05:05
Run = Incremental mon-sat at 05:05
}
这个就是定义自动备份的时间段

Client {
Name = webhost.abc.com
Address = webhost.abc.com  #或者用ip,例如1.1.1.1
FDPort = 9102
Catalog = MyCatalog
Password = “test”          # password for FileDaemon
File Retention = 30 days            # 30 days
Job Retention = 6 months            # six months
AutoPrune = yes                     # Prune expired Jobs/Files
}
定义客户端机器,这里面的name和address虽然一样,但意义不同,name可以随便用,只要跟JobDefs里client一样就行了,address就是服务器的ip地址,或者域名,password这个要跟客户端里面设置的一致

Storage {
Name = File
# Do not use “localhost” here
Address = 127.0.0.1                # N.B. Use a fully qualified name here
SDPort = 9103
Password = “l5OTjniMqNs+QM3Z3U2uBIjOb6mKqIoa67X7zYjlRzwp”
Device = FileStorage
Media Type = File
}
存储的位置,这个如果在同一台服务器的话,只要把address中的localhost改成127.0.0.1即可,如果不在同一个服务器,要注意password要设置成一样的

Messages {
Name = Daemon
mailcommand = “/sbin/bsmtp -h mail.abc.com -f \”\(Bacula\) \<%r\>\” -s \”Bacula daemon message\” %r”
mail = test@abc.com = all, !skipped
console = all, !skipped, !saved
append = “/var/bacula/working/log” = all, !skipped
}
发送email消息设置,-h后边要改成email服务器,也可以用本机当email服务器,mail改成收件人地址

Console {
Name = Bacula-mon
Password = “testoo”
CommandACL = status, .status
}
监控用的,这边的password也要跟客户端里面的一样

服务器备份工具–Bacula安装与配置(一)

服务器备份工具–Bacula安装与配置(一)

Bacula是可以自动备份服务器文件的程序,备份和回复都非常方便,基本上不用人管,出了问题可以选择回复哪个时间点的文件,你可以从官网下载,也可以从我的网站下载,我运行的环境是CentOS5.5,32位的

首先要安装mysql,然后启动mysql服务,并且要创建mysql的root密码,不创建密码也行,就是不安全,这里为了方便我就用123当作密码
yum install mysql
service mysqld start
mysqladmin -u root password “123”

然后用netstat -nat命令看看3306端口起没起来,看到有3306端口正在被listen就成功了

然后解压下载的bacula,运行./configure –with-mysql(服务器端运行需要mysql支持),报错,说configure: error: Unable to find C++ compiler,查了一下要安装一个c++编译器,运行yum install gcc-c++,然后继续运行./configure –with-mysql,还是报错,说configure: error: Unable to find mysql.h in standard locations,这个要安装mysql-devel,运行yum install mysql-devel,这些都是bacula服务器上要安装的,在客户端不用安装,./configure –with-mysql没有报错后继续make;make install

完成之后去/etc/bacula做一些相关数据库的操作
分配权限
./grant_mysql_privileges -u root -p”123″
创建数据库
./create_mysql_database -u root -p”123″
创建表
./make_mysql_tables -u root -p”123″

客户端安装很简单,就一句
./configure –enable-client-only

这些完了之后安装阶段结束,剩下的是要配置

各种Linux忘记密码

各种Linux忘记密码

Linux:

1. 在出现grub画面时,用上下键选中你平时启动linux的那一项,然后按e键
2. 再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然后按e键
3. 修改你现在见到的命令行,加入single,结果如下:
kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
4. 回车返回,然后按b键启动,即可直接进入linux命令行
5. #vi /etc/shadow
将第一行,即以root开头的一行中root:后和下一个:前的内容删除,
第一行将类似于
root::……
保存
6. reboot

Centos:
开机是在 grub 那先按 e ,下个画面按向下方向键选择 kernel 开头的句子
再按一次 e,然后按:[空白]1[Enter]
再按 b 。

等跑完,打 passwd ,随便你改啥密码都行。
改完敲 reboot 。

To be added…….