lala.im:Pixelfed:一个开源免费的照片分享平台

運維技術·軟件/源碼·lala.im · 2019-08-20 · 108 人浏览

原文地址:https://lala.im/6247.html,請支持原作者!該處僅作轉載。

这个程序最大的特点应该就是支持ActivityPub了,其他还有很多地方需要完善。
想搭建一个玩玩的话,建议VPS内存2G。下面是在Debian10的安装步骤。
首先安装nginx/mariadb/redis/以及一些常用软件和程序需要用到的图像处理工具:

apt -y install nginx python-certbot-nginx mariadb-server redis-server \
curl git unzip imagemagick jpegoptim optipng pngquant

安装PHP7.3(必须7.3):

apt -y install php7.3-common php7.3-cli php7.3-fpm php7.3-mysql \
php7.3-gd php7.3-bcmath php7.3-curl php7.3-intl php7.3-mbstring php7.3-xml

安装composer:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer

因为这个程序特别吃内存,这里把PHP-FPM的进程调少点,让其能勉强在1G的VPS内运行:

nano /etc/php/7.3/fpm/pool.d/www.conf

修改的部分:

pm = dynamic
pm.max_children = 120
pm.start_servers = 2
pm.min_spare_servers = 4
pm.max_spare_servers = 6
pm.max_requests = 200 # 解决内存泄漏问题

调整php.ini:

nano /etc/php/7.3/fpm/php.ini

主要修改下面的参数:

post_max_size = 50M
upload_max_filesize = 50M
max_file_uploads = 100
max_execution_time = 600

重启PHP-FPM:

systemctl restart php7.3-fpm.service

初始化MySQL:

mysql_secure_installation

登录到MySQL内:

mysql -u root -p

创建数据库/用户/授权:

CREATE DATABASE pixelfed CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'pixelfed'@'127.0.0.1' IDENTIFIED BY '设置你的数据库用户密码';
GRANT ALL PRIVILEGES ON pixelfed.* TO 'pixelfed'@'127.0.0.1';
FLUSH PRIVILEGES;
quit

拉取项目文件/给予正确的权限:

cd /var/www
git clone -b dev https://github.com/pixelfed/pixelfed.git pixelfed && cd pixelfed
chown -R www-data:www-data .
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

安装依赖:

composer install --no-dev --optimize-autoloader

复制一份配置文件并编辑:

cp .env.example .env
nano .env

主要需要修改的部分:

APP_URL=https://photo.koko.cat
APP_DOMAIN="photo.koko.cat"
ADMIN_DOMAIN="photo.koko.cat"
SESSION_DOMAIN="photo.koko.cat"

配置MySQL连接信息:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pixelfed
DB_USERNAME=pixelfed
DB_PASSWORD=你的数据库用户密码

因为我没配置SMTP,所以把强制验证新用户邮箱的功能关掉:

ENFORCE_EMAIL_VERIFICATION=false

开启ActivityPub:

ACTIVITY_PUB=true
REMOTE_FOLLOW=true
ACTIVITYPUB_INBOX=true
ACTIVITYPUB_SHAREDINBOX=true

修改好配置之后,依次执行下面的命令:

php artisan key:generate
php artisan config:cache
php artisan storage:link
php artisan migrate --force
php artisan route:cache

接着新建一个systemd服务文件:

nano /etc/systemd/system/pixelfed.service

写入:

[Unit]
Description=Pixelfed task queueing via Laravel Horizon
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/php /var/www/pixelfed/artisan horizon
User=www-data
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动Laravel Horizon:

systemctl start pixelfed
systemctl enable pixelfed

新建一个Nginx站点配置文件:

nano /etc/nginx/conf.d/pixelfed.conf

写入:

server {
    listen       80;
    server_name  photo.koko.cat;
    index        index.html index.htm index.php;
    root         /var/www/pixelfed/public;
    client_max_body_size 50m;

    location / {
                try_files $uri $uri/ /index.php?$query_string;
        }

    location ~ \.php$ {
        fastcgi_pass   unix:/run/php/php7.3-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

签发SSL证书:

certbot --nginx --agree-tos --no-eff-email

之后打开你的域名应该可以看到这个程序的主页:

範例
注册一个账号,注意这里有个天坑,我之前注册的时候一直都填写的QQ邮箱,但是TMLGB就是注册不了,排错了半天就是找不到问题出在哪里,后来TM灵光一闪,想到不会是这个程序限制某些后缀的邮箱注册吧?结果我换成其他邮箱直接注册成功,我也是佛了。。
注册成功之后回到终端,执行下面的命令把你自己的账号提升为管理员:

php artisan user:admin imlala

我简单测试了一下使用,上传图片,还有个调色的功能:

範例
图片页面可以提交评论等:

範例
然后是ActivityPub,我在Mastodon实例内可以搜索到Pixelfed的用户:

範例

運維技術 軟件/源碼 lala.im
Theme Jasmine by Kent Liao